00001 #ifndef _SKIN_H
00002 #define _SKIN_H
00003
00004 #include "Skeleton.h"
00005 #include "Skinvert.h"
00006 #include "Token.h"
00007 #include "TexCoord.h"
00008 #include "resources/texturemanager.h"
00009
00010 #define SKIN_SCALE 0.2/15.0
00011
00012 class FaceIndices {
00013 public:
00014 FaceIndices() {}
00015 ~FaceIndices() {}
00016 void Set(int _a, int _b, int _c) { a = _a; b = _b; c = _c; }
00017 public:
00018 int a, b, c;
00019 };
00020
00021 class Skin {
00022 public:
00023 Skin() : displayList(-1) {}
00024 ~Skin();
00025 void Load(Tokenizer &tokens);
00026 void AllocateVertexArrays();
00027 void SetSkel(BallJoint *_joints) { joints = _joints; }
00028 void Update() {
00029 int i;
00030 Vector3 *currVert = verts, *currNorm = norms;
00031 for(i=0;i < numVerts;i++)
00032 {
00033 skinVerts[i].Update(joints, currVert, currNorm);
00034 currVert++;
00035 currNorm++;
00036 }
00037 }
00038 void Draw();
00039
00040 public:
00041 int numVerts, numFaces;
00042 SkinVert *skinVerts;
00043 Vector3 *verts, *norms;
00044 TexCoord *texCoords;
00045 FaceIndices *vertIndices, *normIndices;
00046 BallJoint *joints;
00047 int displayList;
00048 };
00049
00050 #endif //_SKIN_H