14GX_UTILITY_NAMESPACE_BEGIN()
17class GxGmlReaderNotifierBase;
22class GxGmlReader : public GxXmlReader
30 GX_RTTI_CLASS(GxGmlReader, GxXmlReader)
46 static const GX_CSTR DATA_TYPE_TEXTS[
static_cast<u32
>(DATA_TYPE::MAX)];
50 static GX_CCHAR GML_DATA_DELIMITER =
' ';
61 struct GxGmlCommonAsset
69 GxGmlCommonAsset(
void) {}
78 GX_FORCE_INLINE
GxVector3d getCenter(
void)
const {
return (_lowerCorner + _upperCorner) / 2; }
105 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
114 GxGmlTexture(
void) : _pFilePath(nullptr) {}
136 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
147 , _shapeId(GX_INVALID_HANDLE)
167 struct GxGmlTriangleElement
175 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
179 enum class VERTICES_ELEMENT
198 GxGmlTriangleElement(
void)
214 VERTICES_ELEMENT _type;
224 struct GxGmlTriangles
232 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
244 , _pTriangleElementArray(nullptr)
245 , _triangleElementCount(0)
246 , _pPrimitiveArray(nullptr)
248 , _primitiveOneSize(0)
253 ~GxGmlTriangles(
void)
255 GX_SAFE_DELETE_ARRAY(_pTriangleElementArray);
266 s32 getTriangleElementIndex(GX_CSTR elementName)
const
268 for( u32 i=0; i < _triangleElementCount; ++i )
270 if( (_pTriangleElementArray[i]._pName !=
nullptr) && (
GX_STRCMP(_pTriangleElementArray[i]._pName, elementName) == 0) )
278 s32 getTriangleElementIndex(GxGmlTriangleElement::VERTICES_ELEMENT elementType)
const
280 for( u32 i=0; i < _triangleElementCount; ++i )
282 if( _pTriangleElementArray[i]._type == elementType )
290 const GxGmlTriangleElement* getTriangleElement(GX_CSTR elementName)
const
292 s32 index = getTriangleElementIndex(elementName);
299 return &_pTriangleElementArray[index];
303 const GxGmlTriangleElement* getTriangleElement(GxGmlTriangleElement::VERTICES_ELEMENT elementType)
const
305 s32 index = getTriangleElementIndex(elementType);
312 return &_pTriangleElementArray[index];
324 GxGmlTriangleElement* _pTriangleElementArray;
325 u32 _triangleElementCount;
326 u32* _pPrimitiveArray;
328 u32 _primitiveOneSize;
344 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
354 : _pValueArray(nullptr)
385 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
395 : _pValueArray(nullptr)
415 struct GxGmlTexTangent
423 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
432 GxGmlTexTangent(
void)
433 : _pValueArray(nullptr)
453 struct GxGmlTexBinormal
461 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
470 GxGmlTexBinormal(
void)
471 : _pValueArray(nullptr)
498 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
508 : _pTrianglesArray(nullptr)
510 , _pPositionArray(nullptr)
512 , _pNormalArray(nullptr)
514 , _pColorArray(nullptr)
516 , _pTexcoordArray(nullptr)
518 , _pTexTangentArray(nullptr)
519 , _texTangentCount(0)
520 , _pTexBinormalArray(nullptr)
521 , _texBinormalCount(0)
528 GX_SAFE_DELETE_ARRAY(_pTrianglesArray);
531 GX_SAFE_DELETE_ARRAY(_pColorArray);
532 GX_SAFE_DELETE_ARRAY(_pTexcoordArray);
533 GX_SAFE_DELETE_ARRAY(_pTexTangentArray);
534 GX_SAFE_DELETE_ARRAY(_pTexBinormalArray);
544 const GxGmlTriangleElement* getTriangleElement(GX_CSTR elementName)
const
546 for( u32 i = 0; i < _trianglesCount; ++i )
548 const auto* pGmlTriangleElement = _pTrianglesArray[i].getTriangleElement(elementName);
549 if( pGmlTriangleElement )
551 return pGmlTriangleElement;
563 GxGmlTriangles* _pTrianglesArray;
569 GxGmlColor* _pColorArray;
571 GxGmlTexcoord* _pTexcoordArray;
573 GxGmlTexTangent* _pTexTangentArray;
575 GxGmlTexBinormal* _pTexBinormalArray;
576 u8 _texBinormalCount;
585 struct GxGmlMaterialParameter
593 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
596 enum class PARAMETER_TYPE
612 enum class FILTER_TYPE
629 : _pSurfaceName(nullptr)
630 , _minFilter(FILTER_TYPE::
UNKNOWN)
631 , _magFilter(FILTER_TYPE::
UNKNOWN)
640 GX_CSTR _pSurfaceName;
641 FILTER_TYPE _minFilter;
642 FILTER_TYPE _magFilter;
654 GxGmlMaterialParameter(
void)
656 , _type(PARAMETER_TYPE::
UNKNOWN)
662 ~GxGmlMaterialParameter(
void){}
671 PARAMETER_TYPE _type;
685 struct GxGmlMaterialExtra
693 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
702 GxGmlMaterialExtra(
void)
707 ~GxGmlMaterialExtra(
void){}
730 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP);
740 : _pTechniqueHintArray(nullptr)
741 , _techniqueHintCount(0)
742 , _pSetParameterArray(nullptr)
743 , _setParameterCount(0)
744 , _pExtraData(nullptr)
751 GX_SAFE_DELETE_ARRAY(_pSetParameterArray);
752 GX_SAFE_DELETE(_pExtraData);
761 GX_CSTR* _pTechniqueHintArray;
762 u32 _techniqueHintCount;
763 GxGmlMaterialParameter* _pSetParameterArray;
764 u32 _setParameterCount;
765 GxGmlMaterialExtra* _pExtraData;
779 ~GxGmlReader(
void)
override;
782 b32 initialize(
GxStream& stream, GxGmlReaderNotifierBase* pNotifier =
nullptr);
784 void terminate(
void);
797 virtual b32 analyseGml(
const GxXmlParser* pXmlParser);
799 virtual b32 analyseCustom(
const GxXmlParser* pXmlParser);
802 virtual b32 analyseCommonAsset(
const GxXmlParser::GxNode* pNode);
804 b32 analyseDataType(
const GxXmlParser::GxNode* pNode);
806 virtual b32 analyseLibraryMaterials(
const GxXmlParser::GxNode* pNode);
808 virtual b32 analyseLibraryGeometories(
const GxXmlParser::GxNode* pNode);
810 virtual b32 analyseLibraryVisualScenesParts(
const GxXmlParser::GxNode* pNode);
813 virtual b32 analyseLibraryGeometrySubRoutineMesh(GxGmlGeometry* pGmlGeometry,
const GxXmlParser::GxNode* pNodeMesh);
822 GX_FORCE_INLINE
const GxGmlCommonAsset* getCommonAsset(
void)
const {
return &_commonData; };
825 constexpr GxGmlTexture* getTextureArray(
void)
const {
return _pTextureData; }
827 constexpr u32 getTextureCount(
void)
const {
return _textureCount; }
830 constexpr GxGmlMaterial* getMaterialArray(
void)
const {
return _pMaterialData; }
832 constexpr u32 getMaterialCount(
void)
const {
return _materialCount; }
834 constexpr GX_CSTR getMaterialName(u32
id)
const {
return _pMaterialTable ? _pMaterialTable[id] :
nullptr; }
836 constexpr GX_CSTR getMaterialName(
const GxGmlTriangles& triangles)
const {
return getMaterialName(triangles._materialId); }
839 constexpr GxGmlGeometry* getGeometryArray(
void)
const {
return _pGeometryData; }
841 constexpr u32 getGeometryCount(
void)
const {
return _geometryCount; }
844 constexpr GxGmlParts* getPartsArray(
void)
const {
return _pPartsData; }
846 constexpr u32 getPartsCount(
void)
const {
return _partsCount; }
850 u32 getShapeId(GX_CSTR shapeName)
const;
858 GxXmlParser* _pXmlParser;
859 GxGmlReaderNotifierBase* _pNotifier;
862 GX_CSTR* _pTextureTable;
863 GX_CSTR* _pMaterialTable;
864 GX_CSTR* _pMaterialSymbolTable;
865 GX_CSTR* _pMaterialInsEffectTable;
866 GX_CSTR* _pEffectTable;
867 GX_CSTR* _pShapeTable;
869 GxGmlCommonAsset _commonData;
870 GxGmlTexture* _pTextureData;
871 GxGmlMaterial* _pMaterialData;
872 GxGmlGeometry* _pGeometryData;
873 GxGmlParts* _pPartsData;
887class GxGmlReaderNotifierBase
895 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
899 struct GxGmlCommonAssetCallback
901 GxGmlReader::GxGmlCommonAsset _commonAsset;
905 struct GxGmlTextureCallback
907 GxGmlReader::GxGmlTexture* _pTextureArray;
912 struct GxGmlGeometryCallback
914 GxGmlReader::GxGmlGeometry* _pGeometryArray;
919 struct GxGmlPartsCallback
921 GxGmlReader::GxGmlParts* _pPartsArray;
923 u32 _normalPartsCount;
934 GxGmlReaderNotifierBase(
void){}
936 virtual ~GxGmlReaderNotifierBase(
void){}
945 virtual void onGmlCommonAsset(
const GxGmlCommonAssetCallback& ){}
947 virtual void onGmlTexture(
const GxGmlTextureCallback& ){}
949 virtual void onGmlGeometry(
const GxGmlGeometryCallback& ){}
951 virtual void onGmlParts(
const GxGmlPartsCallback& ){}
955 static void printGmlCommonAsset(
const GxGmlCommonAssetCallback& value);
957 static void printGmlTexture(
const GxGmlTextureCallback& value);
959 static void printGmlGeometry(
const GxGmlGeometryCallback& value);
961 static void printGmlParts(
const GxGmlPartsCallback& value);
966GX_UTILITY_NAMESPACE_END()
#define GX_SAFE_FREE_MEMORY(pAddress)
Definition GxAllocator.h:594
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
@ POSITION
位置データ(VS入力,VS出力)
@ COLOR
4D パック済み 正規化される u8(GxColor形式)
@ FLOAT3
3D f32 (f, f, f, 1) に展開される
@ FLOAT2
2D f32 (f, f, 0, 1) に展開される
@ FLOAT4
4D f32 (f, f, f, f) に展開される
#define GX_STRCMP(__STRING0__, __STRING1__)
文字列比較
Definition GxString.h:616
ストリーム基礎クラス
Definition GxStream.h:20
色(HDR)
Definition GxColor.h:241
4×4行列(行優先)
Definition GxMatrix.h:607
文字列型クラス
Definition GxString.h:18
2次元ベクトル
Definition GxVector.h:34
3次元ベクトル
Definition GxVector.h:245
3次元ベクトル(倍精度)
Definition GxVectord.h:235
4次元ベクトル
Definition GxVector.h:582
32bitブーリアン
Definition GxDefine.h:173