Logo
ModelData.h
1#pragma once
2
3#include "Types.h"
4
5#include "gfx/mdl/ModelData.h"
6#include "gfx/Material.h"
7#include "Physics/Physics.h"
8#include "MaterialInfo.h"
9
10namespace SharpKmyGfx
11{
12 ref class Render;
13 ref class Material;
14 ref class MaterialInstance;
15
16 public ref class ModelData
17 {
18 public:
19 kmyGfx::ModelData *obj;
20 bool own = false;
21
22 ModelData(System::String^ path, System::Guid guid, bool vtxCompress);
23 ModelData(System::String^ path);
24
25 ModelData(kmyGfx::ModelData *o)
26 {
27 obj = o;
28 }
29
30 ~ModelData();
31
32 void load();
33 void unload();
34 MaterialInfo^ getMaterialInfo(int index);
35
37 if (own) {
38 obj->unload();
39 kmyGfx::GfxObject::sync();
40 }
41 }
42
43 void initializeByDef(System::String ^path);
44 void renamePath(System::String^ path);
45
48 static SharpKmyMath::Vector3 getCenterImpl(kmyGfx::ModelData *obj);
49
50 void setBlendType(System::String ^mtlname, int type);
51 int getMaterialIndex(System::String ^name);
52 int getMeshClusterMaterialIndex(int index);
53 size_t getIndexCount(int index);
54 int getBoneCount(int index);
55 Material^ getMaterial(u32 index);
56 bool isOverInfluenceCount(int index);
57 array<System::String^> ^getTextureNameList();
58 System::Collections::Generic::List<System::String^>^ getMotionNameList();
59 System::Collections::Generic::Dictionary<System::String^, SharpKmyMath::Vector2>^ getMotion();
60 System::String^ getPath();
61 void saveDefFile(System::String^ path);
62 bool isModified();
63 void reconstruct();
65 bool evalMaterialCount() { return obj ? obj->evalMaterialCount() : true; }
66 void validateVertexDesc() { if (obj)obj->validateVertexDesc(); }
67 void clearMaterialGUID() { if (obj)obj->clearMaterialGUID(); }
68 void setMaterialGUID(int index, System::Guid id);
69 void setVertexCompressMode(bool compress);
71 void setVrmSpringBoneLimit(float limit);
72 float getStartTime();
73 float getEndTime();
76 array<SharpKmyMath::Vector3> ^getMeshCollisionVertices();
77 array<System::String^> ^getNodeNameList();
78
81 if (obj)obj->setSkinnedBoundSphereRadiusScale(v);
82 }
84 return obj ? obj->getSkinnedBoundSphereRadiusScale() : 1.0f;
85 }
86
87 private:
88 void loadForImportTest();
89 void unloadForImportTest();
90
91#ifdef KMY_USE_VRM
92 public:
93 enum class VrmLookAtType : int
94 {
95 None = -1,
96 Bone,
97 BlendShape,
98 Texture,
99 };
100 public:
101 ModelExporter::ModelDataWrap^ GetModelData();
102 bool isVrm();
103 int vrmGetTextureNum();
104 System::String^ vrmGetTextureName(int index);
105 void vrmStoreTextureToFile(int index, System::String^ path);
106 array<Byte>^ vrmGetImageArray(int index);
107
108 System::String^ vrmGetMaterialDef(int index);
109 VrmLookAtType vrmGetLookAtType();
110#endif
111 };
112}
Definition: Material.h:6
Definition: MaterialInfo.h:7
Definition: ModelData.h:17
System::Collections::Generic::List< System::String^> getMotionNameList()
Definition: ModelData.cpp:268
float getStartTime()
Definition: ModelData.cpp:304
void setMaterialGUID(int index, System::Guid id)
Definition: ModelData.cpp:491
array< System::String^> getTextureNameList()
Definition: ModelData.cpp:213
void renamePath(System::String^ path)
Definition: ModelData.cpp:102
SharpKmyMath::Vector3 getPreviewAngle()
Definition: ModelData.cpp:328
System::String getPath()
Definition: ModelData.cpp:204
void clearMaterialGUID()
Definition: ModelData.h:67
bool evalMaterialCount()
Definition: ModelData.h:65
bool getVertexCompressMode()
Definition: ModelData.cpp:509
void constructPBRMaterial()
Definition: ModelData.cpp:357
bool hasUnTriangulateMesh()
Definition: ModelData.cpp:578
void setBlendType(System::String ^mtlname, int type)
Definition: ModelData.cpp:115
SharpKmyMath::Vector3 getPreviewOffset()
Definition: ModelData.cpp:318
float getSkinnedBoundSphereRadiusScale()
Definition: ModelData.h:83
SharpKmyMath::Vector3 getSize()
Definition: ModelData.cpp:430
int getMaterialIndex(System::String ^name)
Definition: ModelData.cpp:130
array< System::String^> getNodeNameList()
Definition: ModelData.cpp:247
MaterialInfo getMaterialInfo(int index)
Definition: ModelData.cpp:78
Material getMaterial(u32 index)
Definition: ModelData.cpp:181
kmyGfx::ModelData * obj
Definition: ModelData.h:19
bool isOverInfluenceCount(int index)
Definition: ModelData.cpp:191
void load()
Definition: ModelData.cpp:50
void ReleaseForToolWithSync()
Definition: ModelData.h:36
void reconstruct()
Definition: ModelData.cpp:345
static SharpKmyMath::Vector3 getCenterImpl(kmyGfx::ModelData *obj)
Definition: ModelData.cpp:463
int getMeshClusterMaterialIndex(int index)
Definition: ModelData.cpp:146
void setSkinnedBoundSphereRadiusScale(float v)
Definition: ModelData.h:80
ModelData(System::String^ path, System::Guid guid, bool vtxCompress)
Definition: ModelData.cpp:15
void unload()
Definition: ModelData.cpp:71
float getEndTime()
Definition: ModelData.cpp:311
bool isModified()
Definition: ModelData.cpp:351
~ModelData()
Definition: ModelData.cpp:36
void validateVertexDesc()
Definition: ModelData.h:66
bool own
Definition: ModelData.h:20
ModelData(kmyGfx::ModelData *o)
Definition: ModelData.h:25
size_t getIndexCount(int index)
Definition: ModelData.cpp:161
void initializeByDef(System::String ^path)
Definition: ModelData.cpp:89
System::Collections::Generic::Dictionary< System::String^, SharpKmyMath::Vector2 > getMotion()
Definition: ModelData.cpp:285
SharpKmyMath::Vector3 getCenter()
Definition: ModelData.cpp:455
void saveDefFile(System::String^ path)
Definition: ModelData.cpp:338
int getBoneCount(int index)
Definition: ModelData.cpp:174
array< SharpKmyMath::Vector3 > getMeshCollisionVertices()
Definition: ModelData.cpp:528
void setVrmSpringBoneLimit(float limit)
Definition: ModelData.cpp:519
void setVertexCompressMode(bool compress)
Definition: ModelData.cpp:500
Definition: Texture.h:12
Definition: Asset.h:4
Definition: Vector3.h:7