Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/ogre/Tools/MayaExport/include/paramlist.h @ 24

Last change on this file since 24 was 6, checked in by anonymous, 17 years ago

=…

File size: 6.8 KB
Line 
1////////////////////////////////////////////////////////////////////////////////
2// paramlist.h
3// Author     : Francesco Giordana
4// Start Date : January 13, 2005
5// Copyright  : (C) 2006 by Francesco Giordana
6// Email      : fra.giordana@tiscali.it
7////////////////////////////////////////////////////////////////////////////////
8
9/*********************************************************************************
10*                                                                                *
11*   This program is free software; you can redistribute it and/or modify         *
12*   it under the terms of the GNU Lesser General Public License as published by  *
13*   the Free Software Foundation; either version 2 of the License, or            *
14*   (at your option) any later version.                                          *
15*                                                                                *
16**********************************************************************************/
17
18#ifndef PARAMLIST_H
19#define PARAMLIST_H
20
21#include "mayaExportLayer.h"
22
23// Length units multipliers from Maya internal unit (cm)
24
25#define CM2MM 10.0
26#define CM2CM 1.0
27#define CM2M  0.01
28#define CM2IN 0.393701
29#define CM2FT 0.0328084
30#define CM2YD 0.0109361
31
32namespace OgreMayaExporter
33{
34        class Submesh;
35
36        typedef struct clipInfoTag
37        {
38                float start;                                                    //start time of the clip
39                float stop;                                                             //end time of the clip
40                float rate;                                                             //sample rate of anim curves, -1 means auto
41                MString name;                                                   //clip name
42        } clipInfo;
43
44        typedef enum
45        {
46                NPT_CURFRAME,
47                NPT_BINDPOSE
48        } NeutralPoseType;
49
50        typedef enum
51        {
52                TS_TEXCOORD,
53                TS_TANGENT
54        } TangentSemantic;
55
56        /***** Class ParamList *****/
57        class ParamList
58        {
59        public:
60                // class members
61                bool exportMesh, exportMaterial, exportAnimCurves, exportCameras, exportAll, exportVBA,
62                        exportVertNorm, exportVertCol, exportTexCoord, exportCamerasAnim,
63                        exportSkeleton, exportSkelAnims, exportBSAnims, exportVertAnims, exportBlendShapes, 
64                        exportWorldCoords, useSharedGeom, lightingOff, copyTextures, exportParticles,
65                        buildTangents, buildEdges, skelBB, bsBB, vertBB;
66
67                float lum;      // Length Unit Multiplier
68
69                MString meshFilename, skeletonFilename, materialFilename, animFilename, camerasFilename, matPrefix,
70                        texOutputDir, particlesFilename;
71
72                std::ofstream outMaterial, outAnim, outCameras, outParticles;
73
74                MStringArray writtenMaterials;
75
76                std::vector<clipInfo> skelClipList;
77                std::vector<clipInfo> BSClipList;
78                std::vector<clipInfo> vertClipList;
79
80                NeutralPoseType neutralPoseType;
81                TangentSemantic tangentSemantic;
82
83                std::vector<Submesh*> loadedSubmeshes;
84                std::vector<MDagPath> currentRootJoints;
85
86                // constructor
87                ParamList()     {
88                        lum = 1.0;
89                        exportMesh = false;
90                        exportMaterial = false;
91                        exportSkeleton = false;
92                        exportSkelAnims = false;
93                        exportBSAnims = false;
94                        exportVertAnims = false;
95                        exportBlendShapes = false;
96                        exportAnimCurves = false;
97                        exportCameras = false;
98                        exportParticles = false;
99                        exportAll = false;
100                        exportWorldCoords = false;
101                        exportVBA = false;
102                        exportVertNorm = false;
103                        exportVertCol = false;
104                        exportTexCoord = false;
105                        exportCamerasAnim = false;
106                        useSharedGeom = false;
107                        lightingOff = false;
108                        copyTextures = false;
109                        skelBB = false;
110                        bsBB = false;
111                        vertBB = false;
112                        meshFilename = "";
113                        skeletonFilename = "";
114                        materialFilename = "";
115                        animFilename = "";
116                        camerasFilename = "";
117                        particlesFilename = "";
118                        matPrefix = "";
119                        texOutputDir = "";
120                        skelClipList.clear();
121                        BSClipList.clear();
122                        vertClipList.clear();
123                        neutralPoseType = NPT_CURFRAME;
124                        buildEdges = false;
125                        buildTangents = false;
126                        tangentSemantic = TS_TANGENT;
127                        loadedSubmeshes.clear();
128                        currentRootJoints.clear();
129                }
130
131                ParamList& operator=(ParamList& source) 
132                {
133                        int i;
134                        lum = source.lum;
135                        exportMesh = source.exportMesh;
136                        exportMaterial = source.exportMaterial;
137                        exportSkeleton = source.exportSkeleton;
138                        exportSkelAnims = source.exportSkelAnims;
139                        exportBSAnims = source.exportBSAnims;
140                        exportVertAnims = source.exportVertAnims;
141                        exportBlendShapes = source.exportBlendShapes;
142                        exportAnimCurves = source.exportAnimCurves;
143                        exportCameras = source.exportCameras;
144                        exportAll = source.exportAll;
145                        exportWorldCoords = source.exportWorldCoords;
146                        exportVBA = source.exportVBA;
147                        exportVertNorm = source.exportVertNorm;
148                        exportVertCol = source.exportVertCol;
149                        exportTexCoord = source.exportTexCoord;
150                        exportCamerasAnim = source.exportCamerasAnim;
151                        exportParticles = source.exportParticles;
152                        useSharedGeom = source.useSharedGeom;
153                        lightingOff = source.lightingOff;
154                        copyTextures = source.copyTextures;
155                        skelBB = source.skelBB;
156                        bsBB = source.bsBB;
157                        vertBB = source.vertBB;
158                        meshFilename = source.meshFilename;
159                        skeletonFilename = source.skeletonFilename;
160                        materialFilename = source.materialFilename;
161                        animFilename = source.animFilename;
162                        camerasFilename = source.camerasFilename;
163                        particlesFilename = source.particlesFilename;
164                        matPrefix = source.matPrefix;
165                        texOutputDir = source.texOutputDir;
166                        buildEdges = source.buildEdges;
167                        buildTangents = source.buildTangents;
168                        tangentSemantic = source.tangentSemantic;
169                        skelClipList.resize(source.skelClipList.size());
170                        for (i=0; i< skelClipList.size(); i++)
171                        {
172                                skelClipList[i].name = source.skelClipList[i].name;
173                                skelClipList[i].start = source.skelClipList[i].start;
174                                skelClipList[i].stop = source.skelClipList[i].stop;
175                                skelClipList[i].rate = source.skelClipList[i].rate;
176                        }
177                        BSClipList.resize(source.BSClipList.size());
178                        for (i=0; i< BSClipList.size(); i++)
179                        {
180                                BSClipList[i].name = source.BSClipList[i].name;
181                                BSClipList[i].start = source.BSClipList[i].start;
182                                BSClipList[i].stop = source.BSClipList[i].stop;
183                                BSClipList[i].rate = source.BSClipList[i].rate;
184                        }
185                        vertClipList.resize(source.vertClipList.size());
186                        for (i=0; i< vertClipList.size(); i++)
187                        {
188                                vertClipList[i].name = source.vertClipList[i].name;
189                                vertClipList[i].start = source.vertClipList[i].start;
190                                vertClipList[i].stop = source.vertClipList[i].stop;
191                                vertClipList[i].rate = source.vertClipList[i].rate;
192                        }
193                        neutralPoseType = source.neutralPoseType;
194                        for (i=0; i<source.loadedSubmeshes.size(); i++)
195                                loadedSubmeshes.push_back(source.loadedSubmeshes[i]);
196                        for (i=0; i<source.currentRootJoints.size(); i++)
197                                currentRootJoints.push_back(source.currentRootJoints[i]);
198
199                        return *this;
200                }
201
202                // destructor
203                ~ParamList() {
204                        if (outMaterial)
205                                outMaterial.close();
206                        if (outAnim)
207                                outAnim.close();
208                        if (outCameras)
209                                outCameras.close();
210                        if (outParticles)
211                                outParticles.close();
212                }
213                // method to pars arguments and set parameters
214                void parseArgs(const MArgList &args);
215                // method to open files for writing
216                MStatus openFiles();
217                // method to close open output files
218                MStatus closeFiles();
219        };
220
221};      //end namespace
222
223#endif
Note: See TracBrowser for help on using the repository browser.