Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/graphics/importer/md3/md3_model.h @ 8932

Last change on this file since 8932 was 8724, checked in by bensch, 18 years ago

merged the bsp-model-stuff back here

File size: 2.4 KB
Line 
1/*!
2 * @file md3_model.h
3 *
4 * Code heavely inspired by: JAVA MD3 Model Viewer - A Java based Quake 3 model viewer
5 * Copyright (C) 1999 Erwin 'KLR8' Vervaet
6 */
7
8#ifndef _MD3_MODEL_H
9#define _MD3_MODEL_H
10
11#include <string>
12#include "interactive_model.h"
13
14
15#define FRACTION 0.34f
16
17
18namespace md3
19{
20
21
22class MD3Data;
23class MD3BoneFrame;
24class MD3Mesh;
25class MD3Tag;
26class MD3AnimationCfg;
27class MD3Animation;
28
29struct MD3Normal;
30
31
32typedef enum MD3FrameHandling {
33  MD3_ANIM_NEXT = 0,          //!< swith to the next frame
34  MD3_ANIM_PREVIOUS,          //!< swith to the previous frame
35  MD3_ANIM_REWIND             //!< rewind the animation
36};
37
38
39class MD3Model : public InteractiveModel
40{
41
42  public:
43    MD3Model(std::string filename, float scaling);
44    ~MD3Model();
45
46    virtual void setAnimation(int animNum, int playbackMode = 0) {}
47    virtual int getAnimation() { return 0;}
48
49    virtual void tick(float dt);
50    virtual void draw() const;
51
52
53  private:
54
55    void autoAssemblePlayerModel(std::string filename, float scaling);
56
57    void draw(MD3Data* data) const;
58    void tick(float dt, MD3Data* data);
59
60
61    void drawMesh(MD3Mesh* mesh, sVec3D* frame) const;
62    void drawVertexNormals(sVec3D* frame, MD3Normal* normals) const;
63    void drawBoneFrame(MD3BoneFrame* frame) const;
64
65
66    MD3BoneFrame* interpolateBoneFrame(MD3Data* data, MD3BoneFrame* currBoneFrame, MD3BoneFrame* nextBoneFrame, float frac);
67    sVec3D* interpolateMeshFrame(MD3Data* data, sVec3D* currMeshFrame, sVec3D* nextMeshFrame, float frac, MD3Mesh* mesh, int i);
68    MD3Normal* interpolateVertexNormals(MD3Data* data, MD3Normal* curNormals, MD3Normal* nextNormals, float frac, MD3Mesh* mesh, int i);
69    float* interpolateTransformation(MD3Data* data, MD3Tag* currFrameTag, MD3Tag* nextFrameTag, float frac, int i);
70
71
72    void interpolate(MD3Data* data, MD3Animation* anim, int op, bool bInterpolate);
73
74    void visit(MD3Data* data, float time);
75    int next(MD3Data* data, int nr);
76    int prev(MD3Data* data, int nr);
77    void doOp(MD3Data* data, float time);
78
79
80  private:
81    MD3Data*            md3Data;           //!< reference to the md3 model data
82
83    bool                bDrawBones;        //!< draws the bone frames too
84    bool                bDrawNormals;      //!< draw the normals
85
86    MD3AnimationCfg*    config;            //!< the config file parsed
87
88    float               time;
89
90};
91
92
93}
94
95#endif /* _MD3_MODEL_H */
Note: See TracBrowser for help on using the repository browser.