Initiual commit: AssetImporter source moved from ZFXCE repository to its own repository. PLease do not use the ZFXCE repo any more.

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@1 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
This commit is contained in:
kimmi
2008-05-05 12:36:31 +00:00
commit b76f999cb7
131 changed files with 24989 additions and 0 deletions

137
code/MD2FileData.h Normal file
View File

@@ -0,0 +1,137 @@
/** @file Defines the helper data structures for importing MD2 files */
#ifndef AI_MD2FILEHELPER_H_INC
#define AI_MD2FILEHELPER_H_INC
#include <string>
#include <vector>
#include <sstream>
#include "../include/aiTypes.h"
#include "../include/aiMesh.h"
#include "../include/aiAnim.h"
#if defined(_MSC_VER) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__)
# pragma pack(push,1)
# define PACK_STRUCT
#elif defined( __GNUC__ )
# define PACK_STRUCT __attribute__((packed))
#else
# error Compiler not supported
#endif
namespace Assimp
{
//http://linux.ucla.edu/~phaethon/q3/formats/md2-schoenblum.html
namespace MD2
{
#define AI_MD2_MAGIC_NUMBER_BE 'IDP2'
#define AI_MD2_MAGIC_NUMBER_LE '2PDI'
// common limitations
#define AI_MD2_VERSION 15
#define AI_MD2_MAXQPATH 64
#define AI_MD2_MAX_FRAMES 512
#define AI_MD2_MAX_SKINS 32
#define AI_MD2_MAX_VERTS 2048
#define AI_MD2_MAX_TRIANGLES 4096
// ---------------------------------------------------------------------------
/** \brief Data structure for the MD2 main header
*/
// ---------------------------------------------------------------------------
struct Header
{
int32_t magic;
int32_t version;
int32_t skinWidth;
int32_t skinHeight;
int32_t frameSize;
int32_t numSkins;
int32_t numVertices;
int32_t numTexCoords;
int32_t numTriangles;
int32_t numGlCommands;
int32_t numFrames;
int32_t offsetSkins;
int32_t offsetTexCoords;
int32_t offsetTriangles;
int32_t offsetFrames;
int32_t offsetGlCommands;
int32_t offsetEnd;
} PACK_STRUCT;
// ---------------------------------------------------------------------------
/** \brief Data structure for a MD2 OpenGl draw command
*/
// ---------------------------------------------------------------------------
struct GLCommand
{
float s, t;
uint32_t vertexIndex;
} PACK_STRUCT;
// ---------------------------------------------------------------------------
/** \brief Data structure for a MD2 triangle
*/
// ---------------------------------------------------------------------------
struct Triangle
{
uint16_t vertexIndices[3];
uint16_t textureIndices[3];
} PACK_STRUCT;
// ---------------------------------------------------------------------------
/** \brief Data structure for a MD2 vertex
*/
// ---------------------------------------------------------------------------
struct Vertex
{
uint8_t vertex[3];
uint8_t lightNormalIndex;
} PACK_STRUCT;
// ---------------------------------------------------------------------------
/** \brief Data structure for a MD2 frame
*/
// ---------------------------------------------------------------------------
struct Frame
{
float scale[3];
float translate[3];
char name[16];
Vertex vertices[1];
} PACK_STRUCT;
// ---------------------------------------------------------------------------
/** \brief Data structure for a MD2 texture coordinate
*/
// ---------------------------------------------------------------------------
struct TexCoord
{
int16_t s;
int16_t t;
} PACK_STRUCT;
// ---------------------------------------------------------------------------
/** \brief Data structure for a MD2 skin
*/
// ---------------------------------------------------------------------------
struct Skin
{
char name[AI_MD2_MAXQPATH]; /* texture file name */
} PACK_STRUCT;
// reset packing to the original value
#if defined(_MSC_VER) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__)
# pragma pack( pop )
#endif
#undef PACK_STRUCT
};
};
#endif // !! include guard