29#ifndef __MeshSerializerImpl_H__
30#define __MeshSerializerImpl_H__
41 class MeshSerializerListener;
This class contains the information required to describe the edge connectivity of a given set of vert...
Strategy for determining level of detail.
Class for providing backwards-compatibility for loading version 1.1 of the .mesh format.
~MeshSerializerImpl_v1_1()
void readGeometryTexCoords(unsigned short bindIdx, DataStreamPtr &stream, Mesh *pMesh, VertexData *dest, unsigned short set)
MeshSerializerImpl_v1_1()
Class for providing backwards-compatibility for loading version 1.2 of the .mesh format.
virtual void readGeometryNormals(unsigned short bindIdx, DataStreamPtr &stream, Mesh *pMesh, VertexData *dest)
virtual void readGeometryColours(unsigned short bindIdx, DataStreamPtr &stream, Mesh *pMesh, VertexData *dest)
MeshSerializerImpl_v1_2()
virtual void readMesh(DataStreamPtr &stream, Mesh *pMesh, MeshSerializerListener *listener)
~MeshSerializerImpl_v1_2()
virtual void readGeometryPositions(unsigned short bindIdx, DataStreamPtr &stream, Mesh *pMesh, VertexData *dest)
virtual void readGeometry(DataStreamPtr &stream, Mesh *pMesh, VertexData *dest)
virtual void readGeometryTexCoords(unsigned short bindIdx, DataStreamPtr &stream, Mesh *pMesh, VertexData *dest, unsigned short set)
Class for providing backwards-compatibility for loading version 1.3 of the .mesh format.
virtual void writeEdgeList(const Mesh *pMesh)
~MeshSerializerImpl_v1_3()
virtual void readEdgeListLodInfo(DataStreamPtr &stream, EdgeData *edgeData)
virtual void reorganiseTriangles(EdgeData *edgeData)
Reorganise triangles of the edge list to group by vertex set.
MeshSerializerImpl_v1_3()
Class for providing backwards-compatibility for loading version 1.41 of the .mesh format.
~MeshSerializerImpl_v1_41()
size_t calcPoseSize(const Pose *pose)
void readMorphKeyFrame(DataStreamPtr &stream, VertexAnimationTrack *track)
MeshSerializerImpl_v1_41()
void writePose(const Pose *pose)
void writeMorphKeyframe(const VertexMorphKeyFrame *kf, size_t vertexCount)
size_t calcMorphKeyframeSize(const VertexMorphKeyFrame *kf, size_t vertexCount)
size_t calcPoseVertexSize(void)
void readPose(DataStreamPtr &stream, Mesh *pMesh)
Class for providing backwards-compatibility for loading version 1.4 of the .mesh format.
~MeshSerializerImpl_v1_4()
virtual void writeLodUsageGenerated(const Mesh *pMesh, const MeshLodUsage &usage, unsigned short lodNum)
virtual void writeLodSummary(unsigned short numLevels, bool manual, const LodStrategy *strategy)
MeshSerializerImpl_v1_4()
virtual void writeLodUsageManual(const MeshLodUsage &usage)
virtual void readMeshLodInfo(DataStreamPtr &stream, Mesh *pMesh)
Internal implementation of Mesh reading / writing for the latest version of the .mesh format.
virtual void flipEndian(void *pData, size_t vertexCount, size_t vertexSize, const VertexDeclaration::VertexElementList &elems)
Flip the endianness of an entire vertex buffer, passed in as a pointer to locked or temporary memory
virtual void writePoses(const Mesh *pMesh)
virtual void writeBoundsInfo(const Mesh *pMesh)
virtual void writeAnimations(const Mesh *pMesh)
virtual size_t calcPoseVertexSize(const Pose *pose)
virtual void readPoseKeyFrame(DataStreamPtr &stream, VertexAnimationTrack *track)
virtual void readMesh(DataStreamPtr &stream, Mesh *pMesh, MeshSerializerListener *listener)
virtual void readEdgeListLodInfo(DataStreamPtr &stream, EdgeData *edgeData)
virtual void flipToLittleEndian(void *pData, size_t vertexCount, size_t vertexSize, const VertexDeclaration::VertexElementList &elems)
Flip an entire vertex buffer to little endian.
virtual void readMeshLodUsageManual(DataStreamPtr &stream, Mesh *pMesh, unsigned short lodNum, MeshLodUsage &usage)
virtual size_t calcMorphKeyframeSize(const VertexMorphKeyFrame *kf, size_t vertexCount)
virtual void writeAnimationTrack(const VertexAnimationTrack *track)
virtual void readEdgeList(DataStreamPtr &stream, Mesh *pMesh)
virtual void writeSubMesh(const SubMesh *s)
virtual void readPoses(DataStreamPtr &stream, Mesh *pMesh)
virtual void readAnimations(DataStreamPtr &stream, Mesh *pMesh)
virtual size_t calcSubMeshSize(const SubMesh *pSub)
virtual size_t calcMeshSize(const Mesh *pMesh)
virtual void writeMeshBoneAssignment(const VertexBoneAssignment &assign)
void importMesh(DataStreamPtr &stream, Mesh *pDest, MeshSerializerListener *listener)
Imports Mesh and (optionally) Material data from a .mesh file DataStream.
virtual ~MeshSerializerImpl()
virtual void readAnimation(DataStreamPtr &stream, Mesh *pMesh)
virtual void writeMesh(const Mesh *pMesh)
virtual size_t calcEdgeGroupSize(const EdgeData::EdgeGroup &group)
virtual size_t calcAnimationSize(const Animation *anim)
virtual void writeLodInfo(const Mesh *pMesh)
virtual void writePoseKeyframe(const VertexPoseKeyFrame *kf)
virtual void writeSubMeshOperation(const SubMesh *s)
virtual size_t calcPosesSize(const Mesh *pMesh)
virtual void writeLodUsageManual(const MeshLodUsage &usage)
virtual void writeSubMeshTextureAliases(const SubMesh *s)
virtual void writeAnimation(const Animation *anim)
virtual size_t calcSubMeshTextureAliasesSize(const SubMesh *pSub)
virtual void readMeshLodUsageGenerated(DataStreamPtr &stream, Mesh *pMesh, unsigned short lodNum, MeshLodUsage &usage)
virtual void writeSubMeshNameTable(const Mesh *pMesh)
virtual void readMorphKeyFrame(DataStreamPtr &stream, VertexAnimationTrack *track)
virtual size_t calcEdgeListSize(const Mesh *pMesh)
virtual void readExtremes(DataStreamPtr &stream, Mesh *pMesh)
virtual size_t calcSubMeshNameTableSize(const Mesh *pMesh)
virtual void readSubMeshTextureAlias(DataStreamPtr &stream, Mesh *pMesh, SubMesh *sub)
virtual size_t calcBoneAssignmentSize(void)
virtual size_t calcAnimationTrackSize(const VertexAnimationTrack *track)
virtual void readSkeletonLink(DataStreamPtr &stream, Mesh *pMesh, MeshSerializerListener *listener)
virtual void writePose(const Pose *pose)
virtual void readSubMesh(DataStreamPtr &stream, Mesh *pMesh, MeshSerializerListener *listener)
virtual size_t calcPoseKeyframePoseRefSize(void)
virtual void readMeshLodInfo(DataStreamPtr &stream, Mesh *pMesh)
virtual void readMeshBoneAssignment(DataStreamPtr &stream, Mesh *pMesh)
virtual void readSubMeshOperation(DataStreamPtr &stream, Mesh *pMesh, SubMesh *sub)
virtual void readBoundsInfo(DataStreamPtr &stream, Mesh *pMesh)
virtual void readGeometryVertexElement(DataStreamPtr &stream, Mesh *pMesh, VertexData *dest)
virtual void readTextureLayer(DataStreamPtr &stream, Mesh *pMesh, MaterialPtr &pMat)
virtual void readAnimationTrack(DataStreamPtr &stream, Animation *anim, Mesh *pMesh)
virtual void writeGeometry(const VertexData *pGeom)
virtual void readGeometryVertexBuffer(DataStreamPtr &stream, Mesh *pMesh, VertexData *dest)
virtual void writeLodSummary(unsigned short numLevels, bool manual, const LodStrategy *strategy)
virtual void writeMorphKeyframe(const VertexMorphKeyFrame *kf, size_t vertexCount)
void exportMesh(const Mesh *pMesh, DataStreamPtr stream, Endian endianMode=ENDIAN_NATIVE)
Exports a mesh to the file specified.
virtual void writeExtremes(const Mesh *pMesh)
virtual size_t calcAnimationsSize(const Mesh *pMesh)
virtual void writeSkeletonLink(const String &skelName)
virtual void writeSubMeshBoneAssignment(const VertexBoneAssignment &assign)
virtual size_t calcSkeletonLinkSize(const String &skelName)
virtual size_t calcPoseSize(const Pose *pose)
virtual size_t calcSubMeshOperationSize(const SubMesh *pSub)
virtual void readPose(DataStreamPtr &stream, Mesh *pMesh)
virtual void writePoseKeyframePoseRef(const VertexPoseKeyFrame::PoseRef &poseRef)
virtual void writeEdgeList(const Mesh *pMesh)
virtual size_t calcPoseKeyframeSize(const VertexPoseKeyFrame *kf)
virtual void readSubMeshNameTable(DataStreamPtr &stream, Mesh *pMesh)
virtual void flipFromLittleEndian(void *pData, size_t vertexCount, size_t vertexSize, const VertexDeclaration::VertexElementList &elems)
Flip an entire vertex buffer from little endian.
virtual size_t calcGeometrySize(const VertexData *pGeom)
virtual void readGeometryVertexDeclaration(DataStreamPtr &stream, Mesh *pMesh, VertexData *dest)
virtual void readGeometry(DataStreamPtr &stream, Mesh *pMesh, VertexData *dest)
virtual void readSubMeshBoneAssignment(DataStreamPtr &stream, Mesh *pMesh, SubMesh *sub)
virtual void writeSubMeshExtremes(unsigned short idx, const SubMesh *s)
virtual void writeLodUsageGenerated(const Mesh *pMesh, const MeshLodUsage &usage, unsigned short lodNum)
virtual size_t calcEdgeListLodSize(const EdgeData *data, bool isManual)
Resource holding data about 3D mesh.
A pose is a linked set of vertex offsets applying to one set of vertex data.
Generic class for serialising data to / from binary stream-based files.
Endian
The endianness of written files.
Reference-counted shared pointer, used for objects where implicit destruction is required.
Defines a part of a complete mesh.
Specialised AnimationTrack for dealing with changing vertex position information.
Summary class collecting together vertex source information.
Specialised KeyFrame which stores absolute vertex positions for a complete buffer,...
Specialised KeyFrame which references a Mesh::Pose at a certain influence level, which stores offsets...
A group of edges sharing the same vertex data.
A way of recording the way each LODs is recorded this Mesh.
Records the assignment of a single vertex to a single bone with the corresponding weight.
Reference to a pose at a given influence level.