118 void organiseTangentsBuffer(
VertexData *vertexData,
120 unsigned short sourceTexCoordSet);
155 unsigned short numBlendWeightsPerVertex,
191 void prepareImpl(
void);
194 void unprepareImpl(
void);
198 void postLoadImpl(
void);
200 void unloadImpl(
void);
202 size_t calculateSize(
void)
const;
236 void unnameSubMesh(
const String& name);
247 unsigned short getNumSubMeshes(
void)
const;
251 SubMesh* getSubMesh(
unsigned short index)
const;
262 void destroySubMesh(
unsigned short index);
269 void destroySubMesh(
const String& name);
324 Real getBoundingSphereRadius(
void)
const;
343 void _setBoundingSphereRadius(
Real radius);
355 void setSkeletonName(
const String& skelName);
358 bool hasSkeleton(
void)
const;
362 bool hasVertexAnimation(
void)
const;
370 const String& getSkeletonName(
void)
const;
401 void clearBoneAssignments(
void);
446 void generateLodLevels(
const LodValueList& lodValues,
453 ushort getNumLodLevels(
void)
const;
478 void updateManualLodLevel(
ushort index,
const String& meshName);
496 void _setLodInfo(
unsigned short numLevels,
bool isManual);
498 void _setLodUsage(
unsigned short level,
MeshLodUsage& usage);
500 void _setSubMeshLodFaceList(
unsigned short subIdx,
unsigned short level,
IndexData* facedata);
503 void removeLodLevels(
void);
574 unsigned short _rationaliseBoneAssignments(
size_t vertexCount, VertexBoneAssignmentList& assignments);
583 void _compileBoneAssignments(
void);
590 void _updateCompiledBoneAssignments(
void);
619 unsigned short sourceTexCoordSet = 0,
unsigned short index = 0,
620 bool splitMirrored =
false,
bool splitRotated =
false,
bool storeParityInW =
false);
641 unsigned short& outSourceCoordSet,
unsigned short& outIndex);
646 void buildEdgeList(
void);
648 void freeEdgeList(
void);
668 void prepareForShadowVolume(
void);
676 EdgeData* getEdgeList(
unsigned short lodIndex = 0);
684 const EdgeData* getEdgeList(
unsigned short lodIndex = 0)
const;
704 static void prepareMatricesForVertexBlend(
const Matrix4** blendMatrices,
725 static void softwareVertexBlend(
const VertexData* sourceVertexData,
727 const Matrix4*
const* blendMatrices,
size_t numMatrices,
742 static void softwareVertexMorph(
Real t,
761 static void softwareVertexPoseBlend(
Real weight,
806 virtual bool hasAnimation(
const String& name);
809 virtual void removeAnimation(
const String& name);
812 virtual unsigned short getNumAnimations(
void)
const;
816 virtual Animation* getAnimation(
unsigned short index)
const;
819 virtual void removeAllAnimations(
void);
825 VertexData* getVertexDataByTrackHandle(
unsigned short handle);
837 void updateMaterialForAllSubMeshes(
void);
843 void _determineAnimationTypes(
void)
const;
863 void removePose(
ushort index);
867 void removePose(
const String& name);
869 void removeAllPoses(
void);
879 const PoseList& getPoseList(
void)
const;
Class encapsulating a set of AnimationState objects.
Class encapsulating a standard 4x4 homogeneous matrix.
map< unsigned int, IndexData * >::type IndexMap
float Real
Software floating point type.
vector< unsigned short >::type IndexMap
AxisAlignedBox mAABB
Local bounding box volume.
bool _getAnimationTypesDirty(void) const
Are the derived animation types out of date?
HardwareBuffer::Usage mIndexBufferUsage
Real mBoundRadius
Local bounding sphere radius (centered on object)
Tangent (X axis if normal is Z)
A way of recording the way each LODs is recorded this Mesh.
MapIterator< VertexBoneAssignmentList > BoneAssignmentIterator
const LodStrategy * mLodStrategy
bool mAnimationTypesDirty
Do we need to scan animations for animation types?
IndexMap sharedBlendIndexToBoneIndexMap
Shared index map for translating blend index to bone index.
A pose is a linked set of vertex offsets applying to one set of vertex data.
Shared pointer implementation used to share index buffers.
A 3D box aligned with the x/y/z axes.
bool mPreparedForShadowVolumes
map< String, Animation * >::type AnimationList
Storage of morph animations, lookup by name.
Interface describing a manual resource loader.
VertexElementSemantic
Vertex element semantics, used to identify the meaning of vertex buffer contents. ...
SubMeshList mSubMeshList
A list of submeshes which make up this mesh.
Strategy for determining level of detail.
MeshLodUsageList mMeshLodUsageList
HardwareBuffer::Usage mVertexBufferUsage
bool mIndexBufferShadowBuffer
Concrete IteratorWrapper for nonconst access to the underlying key-value container.
bool mVertexBufferShadowBuffer
vector< Pose * >::type PoseList
const SubMeshNameMap & getSubMeshNameMap(void) const
Gets a reference to the optional name assignments of the SubMeshes.
bool isIndexBufferShadowed(void) const
Gets whether or not this meshes index buffers are shadowed.
bool getAutoBuildEdgeLists(void) const
Sets whether or not this Mesh should automatically build edge lists when asked for them...
VertexData * sharedVertexData
Shared vertex data.
void setAutoBuildEdgeLists(bool autobuild)
Sets whether or not this Mesh should automatically build edge lists when asked for them...
DataStreamPtr mFreshFromDisk
String manualGroup
Only relevant if mIsLodManual is true, the name of the group of the alternative mesh.
MeshPtr(const MeshPtr &r)
bool isPreparedForShadowVolumes(void) const
Returns whether this mesh has already had it's geometry prepared for use in rendering shadow volumes...
Concrete IteratorWrapper for const access to the underlying container.
vector< SubMesh * >::type SubMeshList
Internal implementation of Mesh reading / writing for the latest version of the .mesh format...
HardwareBuffer::Usage getVertexBufferUsage(void) const
Gets the usage setting for this meshes vertex buffers.
VertexReductionQuota
The way to derive the quota of vertices which are reduced at each LOD.
Summary class collecting together index data source information.
Usage
Enums describing buffer usage; not mutually exclusive.
EdgeData * edgeData
Edge list for this LOD level (may be derived from manual mesh)
HashMap< String, ushort > SubMeshNameMap
A hashmap used to store optional SubMesh names.
Defines a part of a complete mesh.
Real value
Value used by to determine when this lod applies.
SubMeshIterator getSubMeshIterator(void)
Gets an iterator over the available submeshes.
MeshPtr manualMesh
Hard link to mesh to avoid looking up each time.
const VertexBoneAssignmentList & getBoneAssignments() const
Gets a const reference to the list of bone assignments.
Real userValue
User-supplied values used to determine when th is lod applies.
Abstract class representing a loadable resource (e.g.
unsigned long long int ResourceHandle
static const String BLANK
Constant blank string, useful for returning by ref where local does not exist.
Summary class collecting together vertex source information.
String manualName
Only relevant if mIsLodManual is true, the name of the alternative mesh to use.
bool mBoneAssignmentsOutOfDate
Flag indicating that bone assignments need to be recompiled.
PoseList mPoseList
List of available poses for shared and dedicated geometryPoseList.
multimap< size_t, VertexBoneAssignment >::type VertexBoneAssignmentList
Multimap of vertex bone assignments (orders by vertex index)
vector< Real >::type LodValueList
Class for providing backwards-compatibility for loading version 1.2 of the .mesh format.
AnimationList mAnimationsList
ConstVectorIterator< PoseList > ConstPoseIterator
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...
Defines a generic resource handler.
Specialisation of SharedPtr to allow SharedPtr to be assigned to SkeletonPtr.
bool isVertexBufferShadowed(void) const
Gets whether or not this meshes vertex buffers are shadowed.
VertexBoneAssignmentList mBoneAssignments
bool isLodManual(void) const
Returns true if this mesh is using manual LOD.
HardwareBuffer::Usage getIndexBufferUsage(void) const
Gets the usage setting for this meshes index buffers.
size_t getPoseCount(void) const
Get the number of poses.
VectorIterator< SubMeshList > SubMeshIterator
Concrete IteratorWrapper for nonconst access to the underlying container.
Specialisation of SharedPtr to allow SharedPtr to be assigned to MeshPtr.
vector< MeshLodUsage >::type MeshLodUsageList
bool isEdgeListBuilt(void) const
Returns whether this mesh has an attached edge list.
VertexAnimationType
Type of vertex animation.
VectorIterator< PoseList > PoseIterator
String mSkeletonName
Optional linked skeleton.
SubMeshNameMap mSubMeshNameMap
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.
VertexAnimationType mSharedVertexDataAnimationType
The vertex animation type associated with the shared vertex data.