29 #ifndef __MeshSerializerImpl_H__
30 #define __MeshSerializerImpl_H__
41 class MeshSerializerListener;
75 Endian endianMode = ENDIAN_NATIVE);
89 virtual void writeSubMeshNameTable(
const Mesh* pMesh);
90 virtual void writeMesh(
const Mesh* pMesh);
91 virtual void writeSubMesh(
const SubMesh* s);
92 virtual void writeSubMeshOperation(
const SubMesh* s);
93 virtual void writeSubMeshTextureAliases(
const SubMesh* s);
94 virtual void writeGeometry(
const VertexData* pGeom);
95 virtual void writeSkeletonLink(
const String& skelName);
98 virtual void writeLodInfo(
const Mesh* pMesh);
99 virtual void writeLodSummary(
unsigned short numLevels,
bool manual,
const LodStrategy *strategy);
100 virtual void writeLodUsageManual(
const MeshLodUsage& usage);
101 virtual void writeLodUsageGenerated(
const Mesh* pMesh,
const MeshLodUsage& usage,
unsigned short lodNum);
102 virtual void writeBoundsInfo(
const Mesh* pMesh);
103 virtual void writeEdgeList(
const Mesh* pMesh);
104 virtual void writeAnimations(
const Mesh* pMesh);
105 virtual void writeAnimation(
const Animation* anim);
106 virtual void writePoses(
const Mesh* pMesh);
107 virtual void writePose(
const Pose* pose);
112 virtual void writeExtremes(
const Mesh *pMesh);
113 virtual void writeSubMeshExtremes(
unsigned short idx,
const SubMesh* s);
115 virtual size_t calcMeshSize(
const Mesh* pMesh);
116 virtual size_t calcSubMeshSize(
const SubMesh* pSub);
117 virtual size_t calcGeometrySize(
const VertexData* pGeom);
118 virtual size_t calcSkeletonLinkSize(
const String& skelName);
119 virtual size_t calcBoneAssignmentSize(
void);
120 virtual size_t calcSubMeshOperationSize(
const SubMesh* pSub);
121 virtual size_t calcSubMeshNameTableSize(
const Mesh* pMesh);
122 virtual size_t calcEdgeListSize(
const Mesh* pMesh);
123 virtual size_t calcEdgeListLodSize(
const EdgeData* data,
bool isManual);
125 virtual size_t calcPosesSize(
const Mesh* pMesh);
126 virtual size_t calcPoseSize(
const Pose* pose);
127 virtual size_t calcAnimationsSize(
const Mesh* pMesh);
128 virtual size_t calcAnimationSize(
const Animation* anim);
132 virtual size_t calcPoseKeyframePoseRefSize(
void);
133 virtual size_t calcPoseVertexSize(
const Pose* pose);
134 virtual size_t calcSubMeshTextureAliasesSize(
const SubMesh* pSub);
194 void writePose(
const Pose* pose);
197 size_t calcPoseSize(
const Pose* pose);
198 size_t calcPoseVertexSize(
void);
210 virtual void writeLodSummary(
unsigned short numLevels,
bool manual,
const LodStrategy *strategy);
211 virtual void writeLodUsageManual(
const MeshLodUsage& usage);
212 virtual void writeLodUsageGenerated(
const Mesh* pMesh,
const MeshLodUsage& usage,
213 unsigned short lodNum);
230 virtual void reorganiseTriangles(
EdgeData* edgeData);
232 virtual void writeEdgeList(
const Mesh* pMesh);
246 virtual void readGeometryPositions(
unsigned short bindIdx,
DataStreamPtr& stream,
248 virtual void readGeometryNormals(
unsigned short bindIdx,
DataStreamPtr& stream,
250 virtual void readGeometryColours(
unsigned short bindIdx,
DataStreamPtr& stream,
252 virtual void readGeometryTexCoords(
unsigned short bindIdx,
DataStreamPtr& stream,
265 void readGeometryTexCoords(
unsigned short bindIdx,
DataStreamPtr& stream,
Specialised KeyFrame which stores absolute vertex positions for a complete buffer, designed to be interpolated with other keys in the same track.
Reference to a pose at a given influence level.
Generic class for serialising data to / from binary stream-based files.
A way of recording the way each LODs is recorded this Mesh.
A pose is a linked set of vertex offsets applying to one set of vertex data.
Strategy for determining level of detail.
A group of edges sharing the same vertex data.
Endian
The endianness of written files.
Internal implementation of Mesh reading / writing for the latest version of the .mesh format...
Specialised AnimationTrack for dealing with changing vertex position information. ...
Defines a part of a complete mesh.
Summary class collecting together vertex source information.
list< VertexElement >::type VertexElementList
Defines the list of vertex elements that makes up this declaration.
Class for providing backwards-compatibility for loading version 1.2 of the .mesh format.
Class for providing backwards-compatibility for loading version 1.4 of the .mesh format.
This class contains the information required to describe the edge connectivity of a given set of vert...
Specialised KeyFrame which references a Mesh::Pose at a certain influence level, which stores offsets...
Specialisation of SharedPtr to allow SharedPtr to be assigned to MaterialPtr.
Class for providing backwards-compatibility for loading version 1.41 of the .mesh format...
Records the assignment of a single vertex to a single bone with the corresponding weight...
Class for providing backwards-compatibility for loading version 1.1 of the .mesh format.
Class for providing backwards-compatibility for loading version 1.3 of the .mesh format.