119 void organiseTangentsBuffer(
VertexData *vertexData,
121 unsigned short sourceTexCoordSet);
156 unsigned short numBlendWeightsPerVertex,
195 void prepareImpl(
void);
198 void unprepareImpl(
void);
202 void postLoadImpl(
void);
204 void unloadImpl(
void);
206 size_t calculateSize(
void)
const;
240 void unnameSubMesh(
const String& name);
251 unsigned short getNumSubMeshes(
void)
const;
255 SubMesh* getSubMesh(
unsigned short index)
const;
266 void destroySubMesh(
unsigned short index);
273 void destroySubMesh(
const String& name);
328 Real getBoundingSphereRadius(
void)
const;
347 void _setBoundingSphereRadius(
Real radius);
359 void setSkeletonName(
const String& skelName);
362 bool hasSkeleton(
void)
const;
366 bool hasVertexAnimation(
void)
const;
374 const String& getSkeletonName(
void)
const;
405 void clearBoneAssignments(
void);
429 ushort getNumLodLevels(
void)
const;
454 void updateManualLodLevel(
ushort index,
const String& meshName);
472 void _setLodInfo(
unsigned short numLevels,
bool isManual);
474 void _setLodUsage(
unsigned short level,
MeshLodUsage& usage);
476 void _setSubMeshLodFaceList(
unsigned short subIdx,
unsigned short level,
IndexData* facedata);
479 void removeLodLevels(
void);
550 unsigned short _rationaliseBoneAssignments(
size_t vertexCount, VertexBoneAssignmentList& assignments);
559 void _compileBoneAssignments(
void);
566 void _updateCompiledBoneAssignments(
void);
595 unsigned short sourceTexCoordSet = 0,
unsigned short index = 0,
596 bool splitMirrored =
false,
bool splitRotated =
false,
bool storeParityInW =
false);
617 unsigned short& outSourceCoordSet,
unsigned short& outIndex);
622 void buildEdgeList(
void);
624 void freeEdgeList(
void);
644 void prepareForShadowVolume(
void);
652 EdgeData* getEdgeList(
unsigned short lodIndex = 0);
660 const EdgeData* getEdgeList(
unsigned short lodIndex = 0)
const;
680 static void prepareMatricesForVertexBlend(
const Matrix4** blendMatrices,
681 const Matrix4* boneMatrices,
const IndexMap& indexMap);
701 static void softwareVertexBlend(
const VertexData* sourceVertexData,
703 const Matrix4*
const* blendMatrices,
size_t numMatrices,
718 static void softwareVertexMorph(
Real t,
738 static void softwareVertexPoseBlend(
Real weight,
787 virtual bool hasAnimation(
const String& name)
const;
790 virtual void removeAnimation(
const String& name);
793 virtual unsigned short getNumAnimations(
void)
const;
797 virtual Animation* getAnimation(
unsigned short index)
const;
800 virtual void removeAllAnimations(
void);
806 VertexData* getVertexDataByTrackHandle(
unsigned short handle);
818 void updateMaterialForAllSubMeshes(
void);
824 void _determineAnimationTypes(
void)
const;
844 void removePose(
ushort index);
848 void removePose(
const String& name);
850 void removeAllPoses(
void);
860 const PoseList& getPoseList(
void)
const;
Class encapsulating a set of AnimationState objects.
Class encapsulating a standard 4x4 homogeneous matrix.
bool mPosesIncludeNormals
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
bool mSharedVertexDataAnimationIncludesNormals
Whether vertex animation includes normals.
const LodStrategy * mLodStrategy
bool mAnimationTypesDirty
Do we need to scan animations for animation types?
bool getSharedVertexDataAnimationIncludesNormals() const
Returns whether animation on shared vertex data includes normals.
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.
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
An animation container interface, which allows generic access to sibling animations.
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.