//modeltypes.h //type definitions for 3d models #ifndef __MODELTYPES #define __MODELTYPES #include "transparency.h" #include #define kDisableTransparencyFlag 0x80000000 #define kMaterialMask (~kDisableTransparencyFlag) #define kFlagShadowFlag 1<<0 #define kFlagMultiTextureFlag 1<<1 //one vertex of a model's face. typedef struct{ int vertex; //the index of the actual vertex coordinates int normal; //the index of the vertex normal (or -1 for none) int texel; //the index of the texture coordinates int neighbor;//the index of the face sharing the edge belonging to this vertex (or -1 for none) } tFaceVertex; //one face of a model typedef struct{ int material; tFaceVertex vertices[3]; } tFaceData; //one vertex of a model's face. typedef struct{ int vertex; //the index of the actual vertex coordinates int normal; //the index of the vertex normal (or -1 for none) int texel,texel2; //the index of the texture coordinates int neighbor;//the index of the face sharing the edge belonging to this vertex (or -1 for none) } tFaceVertexMT; //one face of a model typedef struct{ int material; tFaceVertexMT vertices[3]; } tFaceDataMT; //the model data structure typedef struct{ int vertexCount,normalCount,texelCount,faceCount,materialCount;//number of vertices,normal, etc... used int modelFlags; //model flags float maxExtends; //the distance between the farest vertex and the point (0,0,0) char data[1]; //the actual model data: // -vertexCount vertices as tVector3 // -normalCount normals as tVector3 // -texelCount texels as tVector2 // -faceCount faces as tFaceData // -materialCount materials as tMaterial } tModelData; //a model's material structure typedef struct{ char texName[32];//the filename of the texture used. tPolyMaterial m;//and the material structure }tMaterial; typedef struct{ int start,num,numTransparent; } tMaterialArrayIndices; //a pointer to the model data and a GL display list reference typedef struct{ GLuint arrayRef,ref; tMaterialArrayIndices *indices; tVertexArrayElement *array; tModelData *data; tVector3 center; float centerMaxExtends; }tModel; #endif