00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_MDLTOOL_H__
00020 #define __CS_MDLTOOL_H__
00021
00022 #include "csutil/garray.h"
00023
00024 class csString;
00025 struct iObject;
00026 struct iModelData;
00027 struct iModelDataObject;
00028 struct iModelDataPolygon;
00029
00031 struct csModelDataVertexMap
00032 {
00033 int VertexCount, NormalCount, ColorCount, TexelCount;
00034 int *Vertices, *Normals, *Colors, *Texels;
00035 };
00036
00041 class csSingleIndexVertexSet
00042 {
00043 private:
00044
00045 bool Delete;
00046
00047
00048 int Count;
00049
00050 csDirtyAccessArray<int> *Vertices, *Normals, *Colors, *Texels;
00051
00052 public:
00058 csSingleIndexVertexSet (bool ver = true, bool nrm = true,
00059 bool col = true, bool tex = true);
00060
00067 csSingleIndexVertexSet (csDirtyAccessArray<int> *Vertices,
00068 csDirtyAccessArray<int> *Normals, csDirtyAccessArray<int> *Colors,
00069 csDirtyAccessArray<int> *Texels, bool DeleteLists);
00070
00072 ~csSingleIndexVertexSet ();
00073
00079 int Add (int Vertex, int Normal, int Color, int Texel);
00080
00084 void Add (int num, int *Vertices, int *Normal, int *Colors, int *Texels);
00085
00087 int GetVertexCount () const;
00088
00090 int GetVertex (int n) const;
00092 int GetNormal (int n) const;
00094 int GetColor (int n) const;
00096 int GetTexel (int n) const;
00097 };
00098
00100 struct csModelDataTools
00101 {
00112 static void MergeCopyObject (iModelDataObject *dest, iModelDataObject *src);
00113
00119 static void CopyVerticesMapped (iModelDataObject *dest,
00120 iModelDataObject *src, const csModelDataVertexMap *map);
00121
00127 static void MergeObjects (iModelData *Scene, bool MultiTexture);
00128
00133 static void SplitObjectsByMaterial (iModelData *Scene);
00134
00138 static void Describe (iObject *obj, csString &s);
00139
00144 static void CompressVertices (iModelDataObject *Object);
00145
00150 static void CompressVertices (iModelData *Scene);
00151
00173 static void BuildVertexArray (iModelDataPolygon* poly,
00174 csDirtyAccessArray<int>* SpriteVertices, csDirtyAccessArray<int>* SpriteNormals,
00175 csDirtyAccessArray<int>* SpriteColors, csDirtyAccessArray<int>* SpriteTexels,
00176 csDirtyAccessArray<int>* PolyVertices);
00177 };
00178
00179 #endif // __CS_MDLTOOL_H__