13GX_CORE_NAMESPACE_BEGIN()
31 class ColladaReaderNotifier;
32 friend class ColladaReaderNotifier;
36 class GxIntermediateSkin;
37 class GxIntermediateMesh;
58 GX_FORCE_INLINE
b32 save(
GxStream& ) {
return false; }
63 b32 loadMeshAll(
const GxColladaReader& reader);
65 b32 loadMesh(GxIntermediateMesh* pIntermediateMesh);
67 b32 countMeshGroup(
void);
69 void loadJoint(
const GxColladaReader& reader);
71 void loadGeometry(
const GxColladaReader& reader);
73 void optimizeVertexCache(
void);
82 const GxColladaReader::GxColladaParts* getColladaPartsByGeometryIndex(
const GxColladaReader& reader, u32 geometryIndex);
84 const GxIntermediateSkin* getSkinDada(u32 shapeId);
86 b32 isUseHalfTexCoord(
void)
const;
88 b32 isUseHalfNormal(
void)
const;
90 b32 isUseHalfBinormal(
void)
const;
92 b32 isUseHalfTangent(
void)
const;
101 GxIntermediateMesh* _pIntermediateMesh;
102 GX_CHAR* _pStringTableWritePoint;
103 GxIntermediateSkin* _pIntermediateSkin;
112class GxResModelDae::ColladaReaderNotifier :
public GxColladaReaderNotifierBase
120 ColladaReaderNotifier(GxResModelDae* pResModelDae);
122 ~ColladaReaderNotifier(
void)
override;
125 ColladaReaderNotifier(
void) {}
134 void onColladaCommonAsset(
const GxColladaCommonAssetCallback& value)
override;
136 void onColladaJoint(
const GxColladaReaderNotifierBase::GxColladaJointCallback& value)
override;
138 void onColladaGeometry(
const GxColladaGeometryCallback& value)
override;
140 void onColladaSkin(
const GxColladaSkinCallback& value)
override;
142 void onColladaParts(
const GxColladaPartsCallback& value)
override;
146 s32 findColladaElement(GxColladaReader::GxColladaTriangles* pTriangles, GxColladaReader::GxColladaTriangleElement::VERTICES_ELEMENT verticesElement, u32 set);
148 u32 countBindJoint(GxColladaReader::GxColladaSkin* pSkin);
156 GxResModelDae* _pResModelDae;
164class GxResModelDae::GxVertexCache
182 virtual ~GxVertexCache(
void);
185 void initialize(u32 vertexSize, u32 maxVertexCount);
188 void terminateWriting(
void);
197 u32 push(
void* pVertex,
b32 checkArgument =
true);
199 constexpr u32 getSize(
void)
const {
return _writeIndex * _vertexSize; }
201 constexpr u32 getVertexCount(
void)
const {
return _writeIndex; }
203 constexpr u32 getVertexSize(
void)
const {
return _vertexSize; }
205 constexpr void* getBuffer(
void)
const {
return _pBuffer; }
207 constexpr u32 getMaxVertexCount(
void)
const {
return _maxVertexCount; }
220 GxVertexTable* _pVertexTable;
228class GxResModelDae::GxVertexCache::GxVertexTable
258 GxVertexTableNode(
void) :_pVertex(nullptr), _index(0), _pNext(nullptr) {}
267 void setData(
void* pVertex, u32 index, GxVertexTableNode* pNext);
269 void add(GxVertexTableNode* pNode);
271 constexpr void* getVertexPointer(
void) {
return _pVertex; }
273 constexpr u32 getIndex(
void) {
return _index; }
275 constexpr GxVertexTableNode* getNextNode(
void) {
return _pNext; }
285 GxVertexTableNode* _pNext;
305 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
314 GxVertexTable(u32 maxVertexCount);
316 ~GxVertexTable(
void);
325 void insert(
void* pVertex, u32 byteSize, u32 index);
327 s64 find(
void* pVertex, u32 byteSize);
336 GxVertexArray _hashArray;
338 GxVertexTableNode* _pNodeBuffer;
339 GxVertexTableNode* _pFreeNext;
340 GxVertexTableNode* _pEndOfBuffer;
348class GxResModelDae::GxIntermediateSkin
356 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
365 GxIntermediateSkin(
void);
367 virtual ~GxIntermediateSkin(
void);
375 const GxColladaReader::GxColladaSkin* _pColladaSkin;
384class GxResModelDae::GxIntermediateMesh
392 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
401 GxIntermediateMesh(
void);
403 virtual ~GxIntermediateMesh(
void);
418 u32 _triangleseElmentCount;
419 u32 _jointElementOffset;
422 const GxColladaReader::GxColladaGeometry* _pColladaGeometry;
423 const GxColladaReader::GxColladaTriangles* _pColladaTriangles;
424 GxVertexCache _vertexCache;
427 GxVertexCache _jointIndexCache;
434GX_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 GxBase.h:88
基底クラス
Definition GxBase.h:51
モデルリソースクラス
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
頂点宣言に使用する、頂点要素を定義するための構造体
Definition GxRenderVertexDeclaration.h:125
32bitブーリアン
Definition GxDefine.h:173