Page principale | Liste des namespaces | Hiérarchie des classes | Liste par ordre alphabétique | Liste des composants | Liste des fichiers | Membres des namespaces | Composants | Déclarations

ExCModelMD2.h

Aller à la documentation de ce fichier.
00001 /************************************************************************/
00002 /* Ex Nihlo Engine by Hermanns Christophe                                                               */
00003 /************************************************************************/
00004 /* This program is free software; you can redistribute it and/or                */
00005 /* modify it under the terms of the GNU General Public License                  */
00006 /* as published by the Free Software Foundation; either version 2               */
00007 /* of the License, or (at your option) any later version.                               */
00008 /*                                                                                                                                              */
00009 /* This program is distributed in the hope that it will be useful,              */
00010 /* but WITHOUT ANY WARRANTY; without even the implied warranty of               */
00011 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                                 */
00012 /*                                                                                                                                              */
00013 /* See the GNU General Public License for more details.                                 */
00014 /*                                                                                                                                              */
00015 /* You should have received a copy of the GNU General Public License    */
00016 /* along with this program; if not, write to the Free Software                  */
00017 /* Foundation, Inc., 59 Temple Place - Suite 330,                                               */
00018 /* Boston, MA  02111-1307, USA.                                                                                 */
00019 /*                                                                                                                                              */
00020 /* If you use a important part of this code please send me a mail               */
00021 /* I just want to see where my code go thks :)                                                  */
00022 /************************************************************************/
00023 
00024 /************************************************************************/
00025 /* Contact                                                              */  
00026 /************************************************************************/
00027 /* ExNihilo Website :www.ploksoftware.org                               */
00028 /*                                                                      */
00029 /* Hermanns Christophe ExNihilo creator and main programmer             */
00030 /*                                                                      */
00031 /* Mail             : Data@ploksoftware.org                                                             */
00032 /* ICQ              : 8030901                                                                                   */
00033 /* MSN Messenger    : Data_7@hotmail.com                                                                */
00034 /*                                                                      */
00035 /*                                                                      */
00036 /************************************************************************/
00037 
00038 /************************************************************************/
00039 /* File Description                                                                                             */
00040 /************************************************************************/
00041 /* File Name   :ExCModelMD2.h                                                                                   */
00042 /*                                                                                                                                              */
00043 /* Start Date   :06/20/2003                                                                                             */
00044 /*                                                                                                                                              */
00045 /* Last Update :06/20/2003                                              */
00046 /*                                                                                                                                              */
00047 /* File Description :                                                                                                   */
00048 /*                                                                      */
00049 /* For update of this file check : www.ploksoftware.org                 */
00050 /************************************************************************/
00051 
00052 #ifndef __EXCMODELMD2_H__
00053 #define __EXCMODELMD2_H__
00054 //------------------------------------------------------------------------
00055 //Includes
00056 //------------------------------------------------------------------------
00057 #include "ExDefine.h"
00058 //------------------------------------------------------------------------
00059 #include "Math/ExMath.h"
00060 //------------------------------------------------------------------------
00061 #include "Object/Object3D/Model/ExCModelMD.h"
00062 //------------------------------------------------------------------------
00063 #include "Tools/ExCImageLoader.h"
00064 #include "Object/Object3D/Gizmo/ExCGizmoSphere.h"
00065 #include "Math/ExCFrustum.h"
00066 //--------------------------------
00067 // These are the needed defines for the max values when loading .MD2 files
00068 #define MD2_MAX_TRIANGLES               4096
00069 #define MD2_MAX_VERTICES                2048
00070 #define MD2_MAX_TEXCOORDS               2048
00071 #define MD2_MAX_FRAMES                  512
00072 #define MD2_MAX_SKINS                   32
00073 #define MD2_MAX_FRAMESIZE               (MD2_MAX_VERTICES * 4 + 128)
00074 
00075 // This holds the header information that is read in at the beginning of the file
00076 typedef struct
00077 {
00078    int ident;            // identifies as MD2 file "IDP2"
00079    int version;  // mine is 8
00080    int skinwidth;    // width of texture
00081    int skinheight;   // height of texture
00082    int framesize;    // number of bytes per frame
00083    int numSkins;     // number of textures
00084    int numXYZ;       // number of points
00085    int numST;        // number of texture
00086    int numTris;      // number of triangles
00087    int numGLcmds;
00088    int numFrames;    // total number of frames
00089    int offsetSkins;  // offset to skin names (64 bytes each)
00090    int offsetST;     // offset of texture s-t values
00091    int offsetTris;   // offset of triangle mesh
00092    int offsetFrames; // offset of frame data (points)
00093    int offsetGLcmds; // type of OpenGL commands to use
00094    int offsetEnd;    // end of file
00095 } modelHeader_t;
00096 // This stores the frames vertices after they have been transformed
00097 // info for a single frame point
00098 typedef struct
00099 {
00100    short s;
00101    short t;
00102 } stIndex_t;
00103 
00104 typedef struct
00105 {
00106    unsigned char v[3];
00107    unsigned char normalIndex;   // not used
00108 } framePoint_t;
00109 
00110 // information for a single frame
00111 typedef struct
00112 {
00113    float scale[3];
00114    float translate[3];
00115    char name[16];
00116    framePoint_t fp[1];
00117 } frame_t;
00118 // data for a single triangle
00119 typedef struct
00120 {
00121    unsigned short meshIndex[3];         // vertex indices
00122    unsigned short stIndex[3];           // texture coordinate indices
00123 } mesh_t;
00124 //--------------------------------
00125 class ExCModelMD2 : public ExCModelMD
00126 {
00127 protected:
00128         int m_magic;                                    // This is used to identify the file
00129         int m_version;                                  // The version number of the file (Must be 8)
00130         int m_skinWidth;                                // The skin width in pixels
00131         int m_skinHeight;                               // The skin height in pixels
00132         int m_frameSize;                                // The size in bytes the frames are
00133         int m_numSkins;                         // The number of skins associated with the model
00134         int m_numVertices;                              // The number of vertices (constant for each frame)
00135         int m_numTexCoords;                     // The number of texture coordinates
00136         int m_numTriangles;                     // The number of faces (polygons)
00137         int m_numGlCommands;                    // The number of gl commands
00138         //int m_numFrames;                              // The number of animation frames
00139         int m_offsetSkins;                              // The offset in the file for the skin data
00140         int m_offsetTexCoords;                  // The offset in the file for the texture data
00141         int m_offsetTriangles;                  // The offset in the file for the face data
00142         int m_offsetFrames;                     // The offset in the file for the frames data
00143         int m_offsetGlCommands;         // The offset in the file for the gl commands data
00144         int m_offsetEnd;                                // The end of the file offset
00145         
00146         float   *TabVertices;
00147         float   *TabTextures;
00148         
00149         int count;
00150 
00151         std::string m_LastAction;
00152         
00153         bool m_ShowCollisionSphere;
00154         double                  m_LastTime;
00155 //--------------------------------
00156 // Variable
00157 //--------------------------------
00158         std::vector<std::string>        m_VecSkin;
00159 
00160         std::vector< std::pair<ExCVec3D , ExCVec3D > >  m_VecTriangle;
00161         std::vector<ExCVec3D>           m_VecVertex;
00162         std::string m_Skin;
00163 
00164         std::vector<std::string> m_VecAction;
00165         std::vector<std::string>::iterator m_IVecAction;
00166 //--------------------------------
00167 // Methode
00168 //--------------------------------
00169         void BuildSphere(void);
00170 public:
00171         ExCGizmoSphere  m_CollisionSphere;
00172 //--------------------------------
00173 // Constructor // Destructor
00174 //--------------------------------
00175         ExCModelMD2(void);
00176         //ExCModelMD2(const ExCModelMD2& copy);
00177         ~ExCModelMD2(void);
00178 //--------------------------------
00179 // Methode
00180 //--------------------------------
00181         void Draw(void);
00182         bool Load(std::string FileName);
00183         void StartAction(std::string     Action);
00184         void StopAction(std::string      Action);
00185         void Process(std::string         Action);
00186         void ProcessAllAction(void);
00187         ExCAction InputAction(ExCAction Action);
00188         bool IsAction(std::string Action);
00189         void ShowInfo(void);
00190 };
00191 #endif //__EXCMODELMD2_H__
00192 

Généré le Tue Oct 28 12:43:32 2003 pour ExNihilo par doxygen 1.3.4