Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
Frm_Mesh.h
Go to the documentation of this file.
1 // Frm_Mesh.h
3 //
4 //
6 
7 #ifndef FRM_MESH_H
8 #define FRM_MESH_H
9 
10 #include "frm_types.h"
11 #include "frm_3Dmath.h"
12 //#include "frm_Quaternion.h"
13 #include "frm_Material.h"
14 
15 #define DEBUG
16 #include "../Toolbox/Mytrace.h"
17 
18 #include <list>
19 #include <vector>
20 
21 namespace Frm {
22 
23 class Mesh;
24 
25 class Bone {
26  public:
28  ~Bone(void);
29  Bone* IsName(std::string &BoneName);
30  void UpdateIndices(uint16 pIndex);
31 
35  float* _Weights;
36  std::string _MeshName;
37  std::string _Name;
38  std::list<Bone*> _Bones;
39 };
40 
41 struct Subset {
42  uint16 Size;
43  Face* Faces;
44  };
45 
46 class Mesh {
47  public:
48  Mesh(void):_nVertices(0), _Vertices(0),
49  _nFaces(0), _Faces(0),
51  _FaceMaterials(0),
52  _nNormals(0), _Normals(0),
53  _nMaterials(0),
54  _FirstVertex(0), //The _Firstxxx series are used
55  _FirstFace(0), //for mesh concatenation
57  _FirstNormal(0),
59  {};
60  ~Mesh(void);
61  Mesh* IsName(std::string &MeshName){if (strcmp(_Name.c_str(), MeshName.c_str())==0) return this; return 0;};
62  void UpdateIndices(void);
63  void CreateSubsets(void);
64  //Vertices
67  //Texture Coords for each vertex
70  //Faces
72  Face* _Faces;
73  //Subset of a mesh: there is one subset for each material used
74  std::list<Subset*> _Subsets;
75  //Normals
79  //Material index for each face
82  //list of Materials for that Mesh
83  std::list<Material*> _Materials;
84  std::string _Name;
85 };
86 
87 typedef struct
88 {
91 } RotateKey;
92 
93 typedef struct
94 {
97 } PositionKey;
98 
99 typedef struct
100 {
103 } ScaleKey;
104 
105 typedef struct
106 {
109 } MatrixKey;
110 
111 class Animation{
112  public:
113  ~Animation(void);
114  Animation* Get(void){return this;};
115  Animation* IsName(std::string &pText){if (strcmp(_BoneName.c_str(), pText.c_str())==0) return this; return 0;};
116 
117  std::string _BoneName;
118  std::vector<ScaleKey*> _Scalings;
119  std::vector<RotateKey*> _Rotations;
120  std::vector<PositionKey*> _Translations;
121  std::vector<MatrixKey*> _Matrices;
122 };
123 
125  public:
126  ~AnimationSet(void);
127  AnimationSet* IsName(std::string &pText){if (strcmp(_Name.c_str(), pText.c_str())==0) return this; return 0;};
128  Animation* FindAnimation(std::string &pText);
129  std::string _Name;
130  std::list<Animation*> _Animations;
131  uint32 _MaxKey; //Maximum time key for the full animation set
132 };
133 
134 class Model3D {
135  public:
136  Model3D(void): _Skeletton(0){};
137  ~Model3D(void);
138  Mesh* IsMeshName(std::string &pText);
139  void ConcatenateMeshes(void);
140  AnimationSet* FindAnimationSet(std::string &pText);
141  Bone* _Skeletton;
142  std::list<Mesh*> _Meshes;
143  std::list<AnimationSet*> _AnimationSets;
144  private:
145  void UpdateBoneIndices(Bone* &pBone);
146 };
147 };
148 
149 #endif
Definition: Frm_Mesh.h:124
AnimationSet * IsName(std::string &pText)
Definition: Frm_Mesh.h:127
std::list< Animation * > _Animations
Definition: Frm_Mesh.h:130
Animation * FindAnimation(std::string &pText)
Definition: Frm_Mesh.cpp:115
uint32 _MaxKey
Definition: Frm_Mesh.h:131
std::string _Name
Definition: Frm_Mesh.h:129
~AnimationSet(void)
Definition: Frm_Mesh.cpp:110
Definition: Frm_Mesh.h:111
~Animation(void)
Definition: Frm_Mesh.cpp:103
std::vector< PositionKey * > _Translations
Definition: Frm_Mesh.h:120
std::vector< RotateKey * > _Rotations
Definition: Frm_Mesh.h:119
Animation * Get(void)
Definition: Frm_Mesh.h:114
Animation * IsName(std::string &pText)
Definition: Frm_Mesh.h:115
std::string _BoneName
Definition: Frm_Mesh.h:115
std::vector< MatrixKey * > _Matrices
Definition: Frm_Mesh.h:121
std::vector< ScaleKey * > _Scalings
Definition: Frm_Mesh.h:118
Definition: Frm_Mesh.h:24
std::list< Bone * > _Bones
Definition: Frm_Mesh.h:37
void UpdateIndices(uint16 pIndex)
std::string _Name
Definition: Frm_Mesh.h:36
uint32 _nVertices
Definition: Frm_Mesh.h:32
~Bone(void)
Bone(void)
Definition: Frm_Mesh.h:27
glMatrix _SkinOffset
Definition: Frm_Mesh.h:31
glMatrix _MatrixPos
Definition: Frm_Mesh.h:31
Matrix _MatrixPos
Definition: Frm_Mesh.h:32
uint16 * _Vertices
Definition: Frm_Mesh.h:33
std::string _MeshName
Definition: Frm_Mesh.h:35
float * _Weights
Definition: Frm_Mesh.h:34
Bone * IsName(std::string &BoneName)
Definition: Frm_Mesh.h:27
uint16 _nNormals
Definition: Frm_Mesh.h:57
uint16 _FirstTextureCoord
Definition: Frm_Mesh.h:49
Face * _Faces
Definition: Frm_Mesh.h:53
uint16 * _FaceMaterials
Definition: Frm_Mesh.h:62
void UpdateIndices(void)
uint16 _FirstVertex
Definition: Frm_Mesh.h:46
std::list< Material * > _Materials
Definition: Frm_Mesh.h:64
Face * _FaceNormals
Definition: Frm_Mesh.h:59
uint16 _nMaterials
Definition: Frm_Mesh.h:61
~Mesh(void)
void CreateSubsets(void)
uint32 _nFaces
Definition: Frm_Mesh.h:52
uint16 _FirstMaterial
Definition: Frm_Mesh.h:61
std::list< Subset * > _Subsets
Definition: Frm_Mesh.h:55
uint16 _nVertices
Definition: Frm_Mesh.h:46
Mesh * IsName(std::string &MeshName)
Definition: Frm_Mesh.h:61
Mesh(void)
Definition: Frm_Mesh.h:48
uint16 _nTextureCoords
Definition: Frm_Mesh.h:49
uint32 _FirstFace
Definition: Frm_Mesh.h:52
Vertex * _Vertices
Definition: Frm_Mesh.h:47
uint16 _FirstNormal
Definition: Frm_Mesh.h:57
std::string _Name
Definition: Frm_Mesh.h:65
TCoord * _TextureCoords
Definition: Frm_Mesh.h:50
vector< float > * _Normals
Definition: Frm_Mesh.h:58
Definition: Frm_Mesh.h:68
void ConcatenateMeshes(void)
Mesh * IsMeshName(std::string &pText)
AnimationSet * FindAnimationSet(std::string &pText)
Definition: Frm_Mesh.cpp:254
Model3D(void)
Definition: Frm_Mesh.h:136
std::list< Mesh * > _Meshes
Definition: Frm_Mesh.h:74
Bone * _Skeletton
Definition: Frm_Mesh.h:92
std::list< AnimationSet * > _AnimationSets
Definition: Frm_Mesh.h:143
void Identity(void)
Definition: Frm_3DMath.h:86
Definition: Frm.h:12
unsigned short int uint16
Definition: Frm_types.h:14
unsigned long int uint32
Definition: Frm_types.h:15
Definition: Frm_3DMath.h:15
Definition: Frm_Mesh.h:106
Frm::Matrix Matrix
Definition: Frm_Mesh.h:108
uint32 Time
Definition: Frm_Mesh.h:107
Definition: Frm_Mesh.h:94
Frm::Vertex Translation
Definition: Frm_Mesh.h:96
uint32 Time
Definition: Frm_Mesh.h:95
Definition: Frm_Mesh.h:88
uint32 Time
Definition: Frm_Mesh.h:89
Frm::Quaternion Rotation
Definition: Frm_Mesh.h:90
Definition: Frm_Mesh.h:100
Frm::Vector Scale
Definition: Frm_Mesh.h:102
uint32 Time
Definition: Frm_Mesh.h:101
Definition: Frm_Mesh.h:22
uint16 Size
Definition: Frm_Mesh.h:23
Face * Faces
Definition: Frm_Mesh.h:24