source: OGRE/trunk/ogrenew/Tools/MayaExport/include/submesh.h @ 692

Revision 692, 2.6 KB checked in by mattausch, 18 years ago (diff)

adding ogre 1.2 and dependencies

Line 
1#ifndef _SUBMESH_H
2#define _SUBMESH_H
3
4#include "mayaExportLayer.h"
5#include "paramList.h"
6#include "materialSet.h"
7
8namespace OgreMayaExporter
9{
10        /***** structure for uvsets info *****/
11        typedef struct uvsettag
12        {
13                short size;                                     //number of coordinates (between 1 and 3)
14        } uvset;
15        /***** structure for texture coordinates *****/
16        typedef struct texcoordstag
17        {
18                double u, v, w;                         //texture coordinates   
19        } texcoords;
20
21        /***** structure for vertex bone assignements *****/
22        typedef struct vbatag
23        {
24                double weight;  //weight
25                int jointIdx;   //index of associated joint
26        } vba;
27
28        /***** structure for vertex data *****/
29        typedef struct vertextag
30        {
31                double x, y, z;                                         //vertex coordinates
32                MVector n;                                                      //vertex normal
33                float r,g,b,a;                                          //vertex colour
34                std::vector<texcoords> texcoords;       //vertex texture coordinates
35                std::vector<vba> vbas;                          //vertex bone assignements
36        } vertex;
37
38        /***** structure for vertex info *****/
39        // used to hold indices to access MFnMesh data
40        typedef struct vertexInfotag
41        {
42                int pointIdx;                           //index to points list (position)
43                int normalIdx;                          //index to normals list
44                float r,g,b,a;                          //colour
45                std::vector<float> u;           //u texture coordinates
46                std::vector<float> v;           //v texture coordinates
47                std::vector<float> vba;         //vertex bone assignements
48                std::vector<int> jointIds;      //ids of joints affecting this vertex
49                int next;                                       //index of next vertex with same position
50        } vertexInfo;
51
52        /***** structure for face info *****/
53        typedef struct facetag
54        {
55                long v[3];              //vertex indices
56        } face;
57
58        /***** array of face infos *****/
59        typedef std::vector<face> faceArray;
60
61        /***** Class Submesh *****/
62        class Submesh
63        {
64        public:
65                //constructor
66                Submesh(const MString& name = "");
67                //destructor
68                ~Submesh();
69                //clear data
70                void clear();
71                //load data
72                MStatus loadMaterial(MObject& shader,MStringArray& uvsets,ParamList& params);
73                MStatus load(std::vector<face>& faces, std::vector<vertexInfo>& vertInfo, MFloatPointArray& points,
74                        MFloatVectorArray& normals, MStringArray& texcoordsets,ParamList& params,bool opposite = false);
75                //get number of triangles composing the submesh
76                long numTriangles();
77                //get number of vertices
78                long numVertices();
79                //get submesh name
80                MString& name();
81                //write submesh data to Ogre XML
82                MStatus writeXML(ParamList &params);
83
84        protected:
85                //internal members
86                MString m_name;
87                Material* m_pMaterial;
88                long m_numTriangles;
89                long m_numVertices;
90                std::vector<vertex> m_vertices;
91                std::vector<face> m_faces;
92                std::vector<uvset> m_uvsets;
93                bool m_use32bitIndexes;
94        };
95
96}; // end of namespace
97
98#endif
Note: See TracBrowser for help on using the repository browser.