D:/Zythum/DinoKod/Model/MdlLoader.h

00001 //---------------------------------------------------------------------------------------------
00002 //      This file is a part of "DinoKod".
00003 //      Copyright © 2003 Dino Productions. All Rights Reserved.
00004 //      
00005 //      File                    : MdlLoader.h
00006 //      Author                  : Sebastien LEIX        sebastien.leix@wanadoo.fr
00007 //      Date                    : 09/09/2002
00008 //      Modification    :
00009 //
00010 //---------------------------------------------------------------------------------------------
00011 #ifndef __MDLLOADER_H__
00012 #define __MDLLOADER_H__
00013 
00014 #include "Model/ModelDll.h"
00015 #include "Common/Types.h"
00016 #include "Common/Table.h"
00017 #include "Common/Matrix.h"
00018 #include "Model/MdlAnim.h"
00019 
00020 class KMdlMesh;
00021 class KMdlAnim;
00022 class KMdlPrimitive;
00023 
00024 //-----------------------------------------------------------------------
00025 class MODEL_API KMdlLoader
00026 {
00027 protected:
00028         KTable<KMdlMesh*>       m_Meshes;
00029         KTable<KMdlAnim*>       m_Anims;
00030         KTable<char*>           m_Shaders;
00031         s32                                     m_StartFrame;
00032         s32                                     m_EndFrame;
00033     
00034         static u32                      m_MDLVersion;
00035         static u32                      m_ANMVersion;
00036 
00037         void                            GenerateHierarchy();
00038         void                            FlushHierarchy();
00039         void                            GenerateBones();
00040         void                            ComputeFirstMeshWorldMatrix( KMdlMesh* pMesh, KMatrix CurrentMatrix );
00041         void                            ComputeFirstWorldMatrix();
00042         void                            ComputeMeshWorldMatrix( KMdlMesh* pMesh, KMatrix CurrentMatrix );
00043 
00044 public:                                 
00045                                                 KMdlLoader();
00046         virtual                         ~KMdlLoader();
00047                                                 
00048         bool                            LoadMDL( char* pFileName );
00049         bool                            LoadANM( char* pFileName );
00050         bool                            SaveMDL( char* pFileName );
00051         bool                            SaveANM( char* pFileName );
00052                                                 
00053         void                            ComputeWorldMatrix();
00054 
00055         void                            Flush();
00056 
00057         u32                                     AddMesh( KMdlMesh* pMesh );
00058         u32                                     AddAnim( KMdlAnim* pAnim );
00059         u32                                     RemoveAnim( KMdlAnim* pAnim );
00060         u32                                     AddShader( char* pShaderName );
00061 
00062         KMdlMesh*                       GetpMeshByName( KStr MeshName );
00063 
00064         KMdlMesh*                       GetpMesh( u32 MeshId )  { KASSERT( MeshId < GetnMeshes() ); return m_Meshes[MeshId];    }
00065         u32                                     GetnMeshes()                    { return m_Meshes.GetSize();                                                                    }
00066         KMdlAnim*                       GetpAnim( u32 AnimId )  { KASSERT( AnimId < GetnAnims() ); return m_Anims[AnimId];              }
00067         u32                                     GetnAnims()                             { return m_Anims.GetSize();                                                                             }
00068         u32                                     GetnTextures()                  { return m_Shaders.GetSize();                                                                   }
00069 
00070         void                            SetStartFrame( s32 Frame )              { m_StartFrame = Frame;                                                                 }
00071         void                            SetEndFrame( s32 Frame )                { m_EndFrame = Frame;                                                                   }
00072         s32                                     GetStartFrame()                                 { return m_StartFrame;                                                                  }
00073         s32                                     GetEndFrame()                                   { return m_EndFrame;                                                                    }
00074 
00075         KMdlAnim*                       AllocAnim()                             { return new KMdlAnim();                                                                                }
00076 };
00077 
00078 #endif  __MDLLOADER_H__

Generated on Sun Mar 25 20:02:15 2007 for Zythum Project by  doxygen 1.5.1-p1