CrossFramework Library
|
00001 00006 #if defined(XG3D_INCLUDED_RESFILE_HPP) 00007 #else 00008 #define XG3D_INCLUDED_RESFILE_HPP 00009 00010 //------------------------------------------------------------ 00011 #include <XBase/FunctionAttribute.hpp> 00012 #include <XBase/IAllocator.hpp> 00013 #include <XBase/NonCopyable.hpp> 00014 #include <XBase/Placement.hpp> 00015 #include <XBase/RuntimeAutoArray.hpp> 00016 #include <XBase/ScopedPtr.hpp> 00017 #include <XG3D/BuiltInTypes.hpp> 00018 #include <XG3D/ResMatSet.hpp> 00019 #include <XG3D/ResMdl.hpp> 00020 #include <XG3D/ResTex.hpp> 00021 #include <XData/XData.hpp> 00022 00023 //------------------------------------------------------------ 00024 namespace XG3D { 00025 class ResMatSetImpl; 00026 class ResMdlImpl; 00027 class ResTexImpl; 00028 struct BinResBin; 00029 } 00030 00031 //------------------------------------------------------------ 00032 namespace XG3D { 00034 00035 00036 00037 00038 class ResBin : public ::XBase::NonCopyable 00039 { 00040 public: 00042 00043 00048 ResBin( const_ptr_t aBin , ::XBase::IAllocator& aAllocator = ::XBase::IAllocator::Default() ); 00049 00051 ~ResBin(); 00053 00055 00056 00057 bool isValid()const; 00059 00061 00062 void setup(); 00063 void release(); 00064 00065 00067 00068 uint matSetCount()const; 00069 ResMatSet matSet( uint aIndex )const; 00070 ResMatSet matSet( const char* aName )const; 00071 uint mdlCount()const; 00072 ResMdl mdl( uint aIndex )const; 00073 ResMdl mdl( const char* aName )const; 00074 uint texCount()const; 00075 ResTex tex( uint aIndex )const; 00076 ResTex tex( const char* aName )const; 00077 00078 00079 private: 00080 typedef ::XBase::RuntimeAutoArray< ResMatSetImpl > MatSetArray; 00081 typedef ::XBase::RuntimeAutoArray< ResMdlImpl > MdlArray; 00082 typedef ::XBase::RuntimeAutoArray< ResTexImpl > TexArray; 00083 //------------------------------------------------------------ 00084 ::XData::XData mXData; 00085 ::XBase::Placement< MatSetArray > mResMatSetImpls; 00086 ::XBase::Placement< MdlArray > mResMdlImpls; 00087 ::XBase::Placement< TexArray > mResTexImpls; 00088 //------------------------------------------------------------ 00089 bool checkInvalid()const; 00090 const_ptr_t ref( ::XData::Reference val )const; 00091 }; 00093 } 00094 //------------------------------------------------------------ 00095 #endif 00096 // EOF