00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(__INCLUDE_ModelRendererMeshh_INCLUDE__)
00022 #define __INCLUDE_ModelRendererMeshh_INCLUDE__
00023
00024 #include <graph/ModelRenderer.h>
00025 #include <3dsparse/Model.h>
00026
00027 class GLTexture;
00028 class ModelRendererMesh : public ModelRenderer
00029 {
00030 public:
00031 ModelRendererMesh(Model *model);
00032 virtual ~ModelRendererMesh();
00033
00034 virtual void draw(float currentFrame,
00035 float distance, float fade, bool setState);
00036 virtual void drawBottomAligned(float currentFrame,
00037 float distance, float fade, bool setState);
00038
00039 virtual Model *getModel() { return model_; }
00040
00041 protected:
00042 struct MeshFrameInfo
00043 {
00044 MeshFrameInfo() : displayList(0), lastCachedState(0) {}
00045
00046 unsigned int displayList;
00047 unsigned int lastCachedState;
00048 };
00049
00050 struct MeshInfo
00051 {
00052 MeshInfo() : texture(0) {}
00053
00054 GLTexture *texture;
00055 std::vector<MeshFrameInfo> frameInfos_;
00056 };
00057
00058 Model *model_;
00059 std::vector<BoneType *> boneTypes_;
00060 std::vector<MeshInfo> meshInfos_;
00061 Vector vertexTranslation_;
00062
00063 virtual void drawMesh(unsigned int m, Mesh *mesh, float currentFrame, bool setState);
00064 virtual void drawVerts(unsigned int m, Mesh *mesh, bool vertexLighting, int frame);
00065 virtual void setup();
00066 };
00067
00068 #endif // __INCLUDE_ModelRendererMeshh_INCLUDE__