Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/ogre/Tools/MilkshapeExport/include/msLib.h @ 20

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

=…

File size: 14.9 KB
Line 
1/**********************************************************************
2 *
3 * MilkShape 3D Model Import/Export API
4 *
5 * May 10 2000, Mete Ciragan, chUmbaLum sOft
6 *
7 **********************************************************************/
8
9#ifndef __MSLIB_H__
10#define __MSLIB_H__
11
12
13
14#ifdef MSLIB_EXPORTS
15#define MSLIB_API __declspec(dllexport)
16#else
17#define MSLIB_API __declspec(dllimport)
18#endif /* MSLIB_EXPORTS */
19
20
21
22#ifdef WIN32
23#include <pshpack1.h>
24#endif /* WIN32 */
25
26
27
28#ifdef __cplusplus
29extern "C" {
30#endif /* __cplusplus */
31
32
33
34/**********************************************************************
35 *
36 * Constants
37 *
38 **********************************************************************/
39
40#define MS_MAX_NAME             32
41#define MS_MAX_PATH             256
42
43
44
45/**********************************************************************
46 *
47 * Types
48 *
49 **********************************************************************/
50
51#ifndef byte
52typedef unsigned char byte;
53#endif /* byte */
54
55#ifndef word
56typedef unsigned short word;
57#endif /* word */
58
59typedef float   msVec4[4];
60typedef float   msVec3[3];
61typedef float   msVec2[2];
62
63/* msFlag */
64typedef enum {
65    eSelected = 1, eSelected2 = 2, eHidden = 4, eDirty = 8, eAveraged = 16, eKeepVertex = 32, eSphereMap = 0x80, eHasAlpha = 0x40
66} msFlag;
67
68/* msVertex */
69typedef struct msVertex
70{
71    byte        nFlags;
72    msVec3      Vertex;
73    float       u, v;
74    char        nBoneIndex;
75} msVertex;
76
77/* msVertexEx */
78typedef struct msVertexEx
79{
80        char            nBoneIndices[3];
81        byte            nBoneWeights[3];
82} msVertexEx;
83
84/* msTriangle */
85typedef struct msTriangle
86{
87    word        nFlags;
88    word        nVertexIndices[3];
89    word        nNormalIndices[3];
90    msVec3      Normal;
91    byte        nSmoothingGroup;
92} msTriangle;
93
94/* msTriangleEx */
95typedef struct msTriangleEx
96{
97        msVec3          Normals[3];
98        msVec2          TexCoords[3];
99} msTriangleEx;
100
101/* msMesh */
102typedef struct msMesh
103{
104    byte        nFlags;
105    char        szName[MS_MAX_NAME];
106    char        nMaterialIndex;
107   
108    word        nNumVertices;
109    word        nNumAllocedVertices;
110    msVertex*   pVertices;
111
112    word        nNumNormals;
113    word        nNumAllocedNormals;
114    msVec3*     pNormals;
115
116    word        nNumTriangles;
117    word        nNumAllocedTriangles;
118    msTriangle* pTriangles;
119
120        char*       pszComment;
121        msVertexEx *pVertexExs;
122        msTriangleEx *pTriangleExs;
123} msMesh;
124
125/* msMaterial */
126typedef struct msMaterial
127{
128    int         nFlags;
129    char        szName[MS_MAX_NAME];
130    msVec4      Ambient;
131    msVec4      Diffuse;
132    msVec4      Specular;
133    msVec4      Emissive;
134    float       fShininess;
135    float       fTransparency;
136    char        szDiffuseTexture[MS_MAX_PATH];
137    char        szAlphaTexture[MS_MAX_PATH];
138    int         nName;
139        char*       pszComment;
140} msMaterial;
141
142/* msPositionKey */
143typedef struct msPositionKey
144{
145    float       fTime;
146    msVec3      Position;
147} msPositionKey;
148
149/* msRotationKey */
150typedef struct msRotationKey
151{
152    float   fTime;
153    msVec3  Rotation;
154} msRotationKey;
155
156/* msBone */
157typedef struct msBone
158{
159    int             nFlags;
160    char            szName[MS_MAX_NAME];
161    char            szParentName[MS_MAX_NAME];
162    msVec3          Position;
163    msVec3          Rotation;
164
165    int             nNumPositionKeys;
166    int             nNumAllocedPositionKeys;
167    msPositionKey*  pPositionKeys;
168
169    int             nNumRotationKeys;
170    int             nNumAllocedRotationKeys;
171    msRotationKey*  pRotationKeys;
172        char*                   pszComment;
173} msBone;
174
175/* msModel */
176typedef struct msModel
177{
178    int         nNumMeshes;
179    int         nNumAllocedMeshes;
180    msMesh*     pMeshes;
181
182    int         nNumMaterials;
183    int         nNumAllocedMaterials;
184    msMaterial* pMaterials;
185
186    int         nNumBones;
187    int         nNumAllocedBones;
188    msBone*     pBones;
189
190    int         nFrame;
191    int         nTotalFrames;
192
193    msVec3      Position;
194    msVec3      Rotation;
195
196        msVec3          CameraPosition;
197        msVec2          CameraRotationXY;
198
199        char*       pszComment;
200} msModel;
201
202
203
204/**********************************************************************
205 *
206 * MilkShape 3D Interface
207 *
208 **********************************************************************/
209
210/**********************************************************************
211 * msModel
212 **********************************************************************/
213
214MSLIB_API void          msModel_Destroy (msModel *pModel);
215
216MSLIB_API int           msModel_GetMeshCount (msModel *pModel);
217MSLIB_API int           msModel_AddMesh (msModel *pModel);
218MSLIB_API msMesh*       msModel_GetMeshAt (msModel *pModel, int nIndex);
219MSLIB_API int           msModel_FindMeshByName (msModel *pModel, const char *szName);
220
221MSLIB_API int           msModel_GetMaterialCount (msModel *pModel);
222MSLIB_API int           msModel_AddMaterial (msModel *pModel);
223MSLIB_API msMaterial*   msModel_GetMaterialAt (msModel *pModel, int nIndex);
224MSLIB_API int           msModel_FindMaterialByName (msModel *pModel, const char *szName);
225
226MSLIB_API int           msModel_GetBoneCount (msModel *pModel);
227MSLIB_API int           msModel_AddBone (msModel *pModel);
228MSLIB_API msBone*       msModel_GetBoneAt (msModel *pModel, int nIndex);
229MSLIB_API int           msModel_FindBoneByName (msModel *pModel, const char *szName);
230
231MSLIB_API int           msModel_SetFrame (msModel *pModel, int nFrame);
232MSLIB_API int           msModel_GetFrame (msModel *pModel);
233MSLIB_API int           msModel_SetTotalFrames (msModel *pModel, int nTotalFrames);
234MSLIB_API int           msModel_GetTotalFrames (msModel *pModel);
235MSLIB_API void          msModel_SetPosition (msModel *pModel, msVec3 Position);
236MSLIB_API void          msModel_GetPosition (msModel *pModel, msVec3 Position);
237MSLIB_API void          msModel_SetRotation (msModel *pModel, msVec3 Rotation);
238MSLIB_API void          msModel_GetRotation (msModel *pModel, msVec3 Rotation);
239MSLIB_API void          msModel_SetCamera (msModel *pModel, msVec3 Position, msVec2 RotationXY);
240MSLIB_API void          msModel_GetCamera (msModel *pModel, msVec3 Position, msVec2 RotationXY);
241MSLIB_API void          msModel_SetComment (msModel *pModel, const char *pszComment);
242MSLIB_API int           msModel_GetComment (msModel *pModel, char *pszComment, int nMaxCommentLength);
243
244/**********************************************************************
245 * msMesh
246 **********************************************************************/
247
248MSLIB_API void          msMesh_Destroy (msMesh *pMesh);
249MSLIB_API void          msMesh_SetFlags (msMesh *pMesh, byte nFlags);
250MSLIB_API byte          msMesh_GetFlags (msMesh *pMesh);
251MSLIB_API void          msMesh_SetName (msMesh *pMesh, const char *szName);
252MSLIB_API void          msMesh_GetName (msMesh *pMesh, char *szName, int nMaxLength);
253MSLIB_API void          msMesh_SetMaterialIndex (msMesh *pMesh, int nIndex);
254MSLIB_API int           msMesh_GetMaterialIndex (msMesh *pMesh);
255
256MSLIB_API int           msMesh_GetVertexCount (msMesh *pMesh);
257MSLIB_API int           msMesh_AddVertex (msMesh *pMesh);
258MSLIB_API msVertex*     msMesh_GetVertexAt (msMesh *pMesh, int nIndex);
259MSLIB_API msVertexEx*   msMesh_GetVertexExAt (msMesh *pMesh, int nIndex);
260MSLIB_API msVertex*     msMesh_GetInterpolatedVertexAt (msMesh *pMesh, int nIndex); // NOT YET IMPLEMENTED
261
262MSLIB_API int           msMesh_GetTriangleCount (msMesh *pMesh);
263MSLIB_API int           msMesh_AddTriangle (msMesh *pMesh);
264MSLIB_API msTriangle*   msMesh_GetTriangleAt (msMesh *pMesh, int nIndex);
265MSLIB_API msTriangleEx* msMesh_GetTriangleExAt (msMesh *pMesh, int nIndex);
266
267MSLIB_API int           msMesh_GetVertexNormalCount (msMesh *pMesh);
268MSLIB_API int           msMesh_AddVertexNormal (msMesh *pMesh);
269MSLIB_API void          msMesh_SetVertexNormalAt (msMesh *pMesh, int nIndex, msVec3 Normal);
270MSLIB_API void          msMesh_GetVertexNormalAt (msMesh *pMesh, int nIndex, msVec3 Normal);
271MSLIB_API void          msMesh_GetInterpolatedVertexNormalAt (msMesh *pMesh, int nIndex, msVec3 Normal); // NOT YET IMPLEMENTED
272MSLIB_API void          msMesh_SetComment (msMesh *pMesh, const char *pszComment);
273MSLIB_API int           msMesh_GetComment (msMesh *pMesh, char *pszComment, int nMaxCommentLength);
274
275/**********************************************************************
276 * msTriangle
277 **********************************************************************/
278
279MSLIB_API void          msTriangle_SetFlags (msTriangle* pTriangle, word nFlags);
280MSLIB_API word          msTriangle_GetFlags (msTriangle* pTriangle);
281MSLIB_API void          msTriangle_SetVertexIndices (msTriangle *pTriangle, word nIndices[]);
282MSLIB_API void          msTriangle_GetVertexIndices (msTriangle *pTriangle, word nIndices[]);
283MSLIB_API void          msTriangle_SetNormalIndices (msTriangle *pTriangle, word nNormalIndices[]);
284MSLIB_API void          msTriangle_GetNormalIndices (msTriangle *pTriangle, word nNormalIndices[]);
285MSLIB_API void          msTriangle_SetSmoothingGroup (msTriangle *pTriangle, byte nSmoothingGroup);
286MSLIB_API byte          msTriangle_GetSmoothingGroup (msTriangle *pTriangle);
287
288/**********************************************************************
289 * msTriangleEx
290 **********************************************************************/
291MSLIB_API void          msTriangleEx_SetNormal (msTriangleEx *pTriangle, int nIndex, msVec3 Normal);
292MSLIB_API void          msTriangleEx_GetNormal (msTriangleEx *pTriangle, int nIndex, msVec3 Normal);
293MSLIB_API void          msTriangleEx_SetTexCoord (msTriangleEx *pTriangle, int nIndex, msVec2 TexCoord);
294MSLIB_API void          msTriangleEx_GetTexCoord (msTriangleEx *pTriangle, int nIndex, msVec2 TexCoord);
295
296/**********************************************************************
297 * msVertex
298 **********************************************************************/
299
300MSLIB_API void          msVertex_SetFlags (msVertex* pVertex, byte nFlags);
301MSLIB_API byte          msVertex_GetFlags (msVertex* pVertex);
302MSLIB_API void          msVertex_SetVertex (msVertex* pVertex, msVec3 Vertex);
303MSLIB_API void          msVertex_GetVertex (msVertex* pVertex, msVec3 Vertex);
304MSLIB_API void          msVertex_SetTexCoords (msVertex* pVertex, msVec2 st);
305MSLIB_API void          msVertex_GetTexCoords (msVertex* pVertex, msVec2 st);
306MSLIB_API int           msVertex_SetBoneIndex (msVertex* pVertex, int nBoneIndex);
307MSLIB_API int           msVertex_GetBoneIndex (msVertex* pVertex);
308
309/**********************************************************************
310 * msVertexEx
311 **********************************************************************/
312
313MSLIB_API int           msVertexEx_SetBoneIndices (msVertexEx* pVertex, int nIndex, int nBoneIndex);
314MSLIB_API int           msVertexEx_GetBoneIndices (msVertexEx* pVertex, int nIndex);
315MSLIB_API int           msVertexEx_SetBoneWeights (msVertexEx* pVertex, int nIndex, int nWeight);
316MSLIB_API int           msVertexEx_GetBoneWeights (msVertexEx* pVertex, int nIndex);
317
318/**********************************************************************
319 * msMaterial
320 **********************************************************************/
321
322MSLIB_API void          msMaterial_SetFlags (msMaterial *pMaterial, int nFlags);
323MSLIB_API int           msMaterial_GetFlags (msMaterial *pMaterial);
324MSLIB_API void          msMaterial_SetName (msMaterial *pMaterial, const char *szName);
325MSLIB_API void          msMaterial_GetName (msMaterial *pMaterial, char *szName, int nMaxLength);
326MSLIB_API void          msMaterial_SetAmbient (msMaterial *pMaterial, msVec4 Ambient);
327MSLIB_API void          msMaterial_SetAmbient (msMaterial *pMaterial, msVec4 Ambient);
328MSLIB_API void          msMaterial_GetAmbient (msMaterial *pMaterial, msVec4 Ambient);
329MSLIB_API void          msMaterial_SetDiffuse (msMaterial *pMaterial, msVec4 Diffuse);
330MSLIB_API void          msMaterial_GetDiffuse (msMaterial *pMaterial, msVec4 Diffuse);
331MSLIB_API void          msMaterial_SetSpecular (msMaterial *pMaterial, msVec4 Specular);
332MSLIB_API void          msMaterial_GetSpecular (msMaterial *pMaterial, msVec4 Specular);
333MSLIB_API void          msMaterial_SetEmissive (msMaterial *pMaterial, msVec4 Emissive);
334MSLIB_API void          msMaterial_GetEmissive (msMaterial *pMaterial, msVec4 Emissive);
335MSLIB_API void          msMaterial_SetShininess (msMaterial *pMaterial, float fShininess);
336MSLIB_API float         msMaterial_GetShininess (msMaterial *pMaterial);
337MSLIB_API void          msMaterial_SetTransparency (msMaterial *pMaterial, float fTransparency);
338MSLIB_API float         msMaterial_GetTransparency (msMaterial *pMaterial);
339MSLIB_API void          msMaterial_SetDiffuseTexture (msMaterial *pMaterial, const char *szDiffuseTexture);
340MSLIB_API void          msMaterial_GetDiffuseTexture (msMaterial *pMaterial, char *szDiffuseTexture, int nMaxLength);
341MSLIB_API void          msMaterial_SetAlphaTexture (msMaterial *pMaterial, const char *szAlphaTexture);
342MSLIB_API void          msMaterial_GetAlphaTexture (msMaterial *pMaterial, char *szAlphaTexture, int nMaxLength);
343MSLIB_API void          msMaterial_SetComment (msMaterial *pMaterial, const char *pszComment);
344MSLIB_API int           msMaterial_GetComment (msMaterial *pMaterial, char *pszComment, int nMaxCommentLength);
345
346/**********************************************************************
347 * msBone
348 **********************************************************************/
349
350MSLIB_API void          msBone_Destroy (msBone *pBone);
351MSLIB_API void          msBone_SetFlags (msBone *pBone, int nFlags);
352MSLIB_API int           msBone_GetFlags (msBone *pBone);
353MSLIB_API void          msBone_SetName (msBone *pBone, const char *szName);
354MSLIB_API void          msBone_GetName (msBone *pBone, char *szName, int nMaxLength);
355MSLIB_API void          msBone_SetParentName (msBone *pBone, const char *szParentName);
356MSLIB_API void          msBone_GetParentName (msBone *pBone, char *szParentName, int nMaxLength);
357MSLIB_API void          msBone_SetPosition (msBone *pBone, msVec3 Position);
358MSLIB_API void          msBone_GetPosition (msBone *pBone, msVec3 Position);
359MSLIB_API void          msBone_GetInterpolatedPosition (msBone *pBone, msVec3 Position); // NOT YET IMPLEMENTED
360MSLIB_API void          msBone_SetRotation (msBone *pBone, msVec3 Rotation);
361MSLIB_API void          msBone_GetRotation (msBone *pBone, msVec3 Rotation);
362MSLIB_API void          msBone_GetInterpolatedRotation (msBone *pBone, msVec3 Rotation); // NOT YET IMPLEMENTED
363
364MSLIB_API int           msBone_GetPositionKeyCount (msBone *pBone);
365MSLIB_API int           msBone_AddPositionKey (msBone *pBone, float fTime, msVec3 Position);
366MSLIB_API msPositionKey* msBone_GetPositionKeyAt (msBone *pBone, int nIndex);
367
368MSLIB_API int           msBone_GetRotationKeyCount (msBone *pBone);
369MSLIB_API int           msBone_AddRotationKey (msBone *pBone, float fTime, msVec3 Rotation);
370MSLIB_API msRotationKey* msBone_GetRotationKeyAt (msBone *pBone, int nIndex);
371MSLIB_API void          msBone_SetComment (msBone *pBone, const char *pszComment);
372MSLIB_API int           msBone_GetComment (msBone *pBone, char *pszComment, int nMaxCommentLength);
373
374
375
376#ifdef __cplusplus
377}
378#endif /* __cplusplus */
379
380
381
382#ifdef WIN32
383#include <poppack.h>
384#endif /* WIN32 */
385
386
387
388#endif /* __MSLIB_H__ */
Note: See TracBrowser for help on using the repository browser.