// ============================================================== // This file is part of Glest Shared Library (www.glest.org) // // Copyright (C) 2001-2008 MartiƱo Figueroa // // You can redistribute this code and/or modify it under // the terms of the GNU General Public License as published // by the Free Software Foundation; either version 2 of the // License, or (at your option) any later version // ============================================================== #ifndef _SHARED_GRAPHICTYPES_MODELHEADER_H_ #define _SHARED_GRAPHICTYPES_MODELHEADER_H_ #include "data_types.h" #include "leak_dumper.h" using Shared::Platform::uint8; using Shared::Platform::uint16; using Shared::Platform::uint32; using Shared::Platform::float32; namespace Shared{ namespace Graphics{ #pragma pack(push, 1) struct FileHeader{ uint8 id[3]; uint8 version; }; //version 4 struct ModelHeader{ uint16 meshCount; uint8 type; }; enum ModelType{ mtMorphMesh }; enum MeshPropertyFlag{ mpfCustomColor= 1, mpfTwoSided= 2, mpfNoSelect= 4, mpfGlow= 8 }; enum MeshTexture{ mtDiffuse, mtSpecular, mtNormal, mtReflection, mtColorMask, meshTextureCount }; const int meshTextureChannelCount[]= {-1, 1, 3, 1, 1}; const uint32 meshNameSize= 64; const uint32 mapPathSize= 64; struct MeshHeader{ uint8 name[meshNameSize]; uint32 frameCount; uint32 vertexCount; uint32 indexCount; float32 diffuseColor[3]; float32 specularColor[3]; float32 specularPower; float32 opacity; uint32 properties; uint32 textures; }; #pragma pack(pop) //version 3 //front faces are clockwise faces struct ModelHeaderV3{ uint32 meshCount; }; enum MeshPropertyV3{ mp3NoTexture= 1, mp3TwoSided= 2, mp3CustomColor= 4 }; struct MeshHeaderV3{ uint32 vertexFrameCount; uint32 normalFrameCount; uint32 texCoordFrameCount; uint32 colorFrameCount; uint32 pointCount; uint32 indexCount; uint32 properties; uint8 texName[64]; }; //version 2 struct MeshHeaderV2{ uint32 vertexFrameCount; uint32 normalFrameCount; uint32 texCoordFrameCount; uint32 colorFrameCount; uint32 pointCount; uint32 indexCount; uint8 hasTexture; uint8 primitive; uint8 cullFace; uint8 texName[64]; }; }}//end namespace #endif