00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __MeshLoader_H__
00028 #define __MeshLoader_H__
00029
00030 #include <OgrePrerequisites.h>
00031 #include <OgreString.h>
00032 #include <OgreSerializer.h>
00033 #include <OgreMaterial.h>
00034 #include <OgreMesh.h>
00035
00036 using namespace Ogre;
00037
00038 namespace Lugre {
00039
00043 class cMeshLoader : public Serializer
00044 {
00045 public:
00046 cMeshLoader();
00047 virtual ~cMeshLoader();
00048
00049
00057 void importMesh (DataStreamPtr& stream, cBufferedMesh* pDest);
00058
00059 protected:
00060
00061
00062
00063 virtual void readGeometry (DataStreamPtr& stream, cBufferedMesh* pMesh, VertexData* dest);
00064 virtual void readGeometryVertexDeclaration (DataStreamPtr& stream, cBufferedMesh* pMesh, VertexData* dest);
00065 virtual void readGeometryVertexElement (DataStreamPtr& stream, cBufferedMesh* pMesh, VertexData* dest);
00066 virtual void readGeometryVertexBuffer (DataStreamPtr& stream, cBufferedMesh* pMesh, VertexData* dest);
00067 virtual void readBoundsInfo (DataStreamPtr& stream, cBufferedMesh* pMesh);
00068
00069
00070 virtual void readSubMeshNameTable (DataStreamPtr& stream, cBufferedMesh* pMesh);
00071 virtual void readMesh (DataStreamPtr& stream, cBufferedMesh* pMesh);
00072 virtual void readSubMesh (DataStreamPtr& stream, cBufferedMesh* pMesh);
00073 virtual void readSubMeshOperation (DataStreamPtr& stream, cBufferedMesh* pMesh, SubMesh* sub);
00074 virtual void readSubMeshTextureAlias (DataStreamPtr& stream, cBufferedMesh* pMesh, SubMesh* sub);
00075
00076
00077 virtual void readTextureLayer (DataStreamPtr& stream, cBufferedMesh* pMesh, MaterialPtr& pMat);
00078 virtual void readSkeletonLink (DataStreamPtr& stream, cBufferedMesh* pMesh);
00079 virtual void readMeshBoneAssignment (DataStreamPtr& stream, cBufferedMesh* pMesh);
00080 virtual void readSubMeshBoneAssignment (DataStreamPtr& stream, cBufferedMesh* pMesh);
00081 virtual void readMeshLodInfo (DataStreamPtr& stream, cBufferedMesh* pMesh);
00082 virtual void readMeshLodUsageManual (DataStreamPtr& stream, cBufferedMesh* pMesh,unsigned short lodNum, MeshLodUsage& usage);
00083 virtual void readMeshLodUsageGenerated (DataStreamPtr& stream, cBufferedMesh* pMesh,unsigned short lodNum, MeshLodUsage& usage);
00084 virtual void readEdgeList (DataStreamPtr& stream, cBufferedMesh* pMesh);
00085 virtual void readEdgeListLodInfo (DataStreamPtr& stream);
00086 virtual void readPoses (DataStreamPtr& stream, cBufferedMesh* pMesh);
00087 virtual void readPose (DataStreamPtr& stream, cBufferedMesh* pMesh);
00088 virtual void readAnimations (DataStreamPtr& stream, cBufferedMesh* pMesh);
00089 virtual void readAnimation (DataStreamPtr& stream, cBufferedMesh* pMesh);
00090 virtual void readAnimationTrack (DataStreamPtr& stream, Animation* anim,cBufferedMesh* pMesh);
00091 virtual void readMorphKeyFrame (DataStreamPtr& stream, VertexAnimationTrack* track);
00092 virtual void readPoseKeyFrame (DataStreamPtr& stream, VertexAnimationTrack* track);
00093 virtual void readExtremes (DataStreamPtr& stream, cBufferedMesh* pMesh);
00094
00095
00097 virtual void flipFromLittleEndian(void* pData, size_t vertexCount, size_t vertexSize, const VertexDeclaration::VertexElementList& elems);
00099 virtual void flipToLittleEndian(void* pData, size_t vertexCount, size_t vertexSize, const VertexDeclaration::VertexElementList& elems);
00102 virtual void flipEndian(void* pData, size_t vertexCount, size_t vertexSize, const VertexDeclaration::VertexElementList& elems);
00103 };
00104 }
00105
00106 #endif