15GX_CORE_NAMESPACE_BEGIN()
35 class GxIntermediateNormal;
36 class GxIntermediateSkin;
37 class GxIntermediateSkeleton;
38 class GxIntermediateBindPose;
39 class GxIntermediateWeight;
40 class GxIntermediateMesh;
66 GX_FORCE_INLINE
b32 save(
GxStream& ) {
return false; }
71 void analysisMaterialNames(
const FbxNode* pNode,
GxArray& nameList);
74 void analysisNodeTypeCount(
const FbxNode* pNode);
76 GxIntermediateMesh* analysisNode(
const FbxNode* pNode, GxIntermediateMesh* pIntermediateMesh, FbxNodeAttribute::EType type);
79 void loadBindPose(FbxScene* pScene);
81 b32 loadElement(
const FbxMesh* pFbxMesh, GxIntermediateMesh* pIntermediateMesh);
83 b32 loadWeight(
const FbxMesh* pMesh, GxIntermediateMesh* pIntermediateMesh);
85 b32 loadMesh(
const FbxMesh* pMesh, GxIntermediateMesh* pIntermediateMesh);
87 b32 countMeshGroup(
void);
91 void loadGeometry(
void);
93 const u16 getSkeletonId(
const FbxNode* pNode);
95 const u16 getBindPoseSkeltonId(
const FbxNode* pNode);
98 GX_CSTR getLastWord(GX_CSTR src);
100 s32 checkPartsKeyWord(GX_CSTR src);
102 s32 checkLODKeyWord(GX_CSTR src);
104 s32 checkHavokKeyWord(GX_CSTR src);
113 const GxColladaReader::GxColladaParts* getColladaPartsByGeometryIndex(
const GxColladaReader& reader, u32 geometryIndex);
122 GxIntermediateMesh* _pIntermediateMesh;
123 GX_CHAR* _pStringTableWritePoint;
125 GxIntermediateSkeleton* _pIntermediateSkeleton;
127 GxIntermediateBindPose* _pIntermediateBindPose;
128 u32* _pIntermediateDestructionPartsCount;
137class GxResModelFbx::GxVertexCache
155 virtual ~GxVertexCache(
void);
158 void initialize(u32 vertexSize, u32 maxVertexCount);
161 void terminateWriting(
void);
170 u32 push(
void* pVertex,
b32 checkArgument =
true);
172 constexpr u32 getSize(
void)
const {
return _writeIndex * _vertexSize; }
174 constexpr u32 getVertexCount(
void)
const {
return _writeIndex; }
176 constexpr u32 getVertexSize(
void)
const {
return _vertexSize; }
178 constexpr void* getBuffer(
void)
const {
return _pBuffer; }
180 constexpr u32 getMaxVertexCount(
void)
const {
return _maxVertexCount; }
193 GxVertexTable* _pVertexTable;
201class GxResModelFbx::GxVertexCache::GxVertexTable
231 GxVertexTableNode(
void) : _pVertex(nullptr), _index(0), _pNext(nullptr) {}
240 void setData(
void* pVertex, u32 index, GxVertexTableNode* pNext);
242 void add(GxVertexTableNode* pNode);
244 constexpr void* getVertexPointer(
void) {
return _pVertex; }
246 constexpr u32 getIndex(
void) {
return _index; }
248 constexpr GxVertexTableNode* getNextNode(
void) {
return _pNext; }
258 GxVertexTableNode* _pNext;
278 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
287 GxVertexTable(u32 maxVertexCount);
289 ~GxVertexTable(
void);
298 void insert(
void* pVertex, u32 byteSize, u32 index);
300 s64 find(
void* pVertex, u32 byteSize);
309 GxVertexArray _hashArray;
311 GxVertexTableNode* _pNodeBuffer;
312 GxVertexTableNode* _pFreeNext;
313 GxVertexTableNode* _pEndOfBuffer;
321class GxResModelFbx::GxIntermediateSkeleton
329 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
338 GxIntermediateSkeleton(
void);
340 virtual ~GxIntermediateSkeleton(
void);
348 const FbxNode* _pSkeleton;
357class GxResModelFbx::GxIntermediateBindPose
365 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
374 GxIntermediateBindPose(
void);
376 virtual ~GxIntermediateBindPose(
void);
384 const FbxNode* _pNode;
393class GxResModelFbx::GxIntermediateWeight
401 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
410 GxIntermediateWeight(
void);
412 virtual ~GxIntermediateWeight(
void);
420 u16 _jointIndex[GxColladaReader::GxColladaWeight::EFFECT_JOINT_NUM];
430class GxResModelFbx::GxIntermediateMesh
438 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
447 GxIntermediateMesh(
void);
449 virtual ~GxIntermediateMesh(
void);
459 GX_CSTR _materialName;
462 s32 _destructionMeshId;
468 u32 _triangleseElmentCount;
469 u32 _jointElementOffset;
472 GxVertexCache _vertexCache;
476 GxVertexCache _jointIndexCache;
477 GxIntermediateWeight* _pIntermediateWeight;
484GX_CORE_NAMESPACE_END()
#define GX_ALLOCATE_MEMORY(pAllocatorList, size)
Definition GxAllocator.h:536
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
RENDER_INDEX_TYPE
インデックスバッファ形式
Definition GxRender.h:147
@ RENDER_VERTEX_ELEMENT_COUNT
同時サポートする頂点要素数
Definition GxRender.h:45
#define GX_RTTI_RESOURCE(__THIS__, __BASE__)
リソースクラス型情報宣言
Definition GxRttiResource.h:102
配列クラス
Definition GxArrayClassBase.h:18
配列クラス
Definition GxArray.h:18
オブジェクト基底クラス
Definition GxBase.h:88
基底クラス
Definition GxBase.h:51
static constexpr u32 VALUE_256
256
Definition GxMath.h:127
モデルリソースクラス
Definition GxResModel.h:20
b32 loadMesh(const GxMeshFile *pMeshFile)
メッシュを読み込む
Definition GxResModel.cpp:820
b32 load(GxStream &stream, u32 dataSize)
リソース読み込み
Definition GxResModel.cpp:94
ストリーム基礎クラス
Definition GxStream.h:20
4×4行列(行優先)
Definition GxMatrix.h:607
頂点宣言に使用する、頂点要素を定義するための構造体
Definition GxRenderVertexDeclaration.h:125
32bit[0, 1]正規化小数4次元ベクトル(8:8:8:8)
Definition GxStruct.h:583
32bitブーリアン
Definition GxDefine.h:173