120 void organiseTangentsBuffer(
VertexData *vertexData,
122 unsigned short sourceTexCoordSet);
157 unsigned short numBlendWeightsPerVertex,
196 void prepareImpl(
void);
199 void unprepareImpl(
void);
203 void postLoadImpl(
void);
205 void unloadImpl(
void);
207 size_t calculateSize(
void)
const;
209 void mergeAdjacentTexcoords(
unsigned short finalTexCoordSet,
210 unsigned short texCoordSetToDestroy,
VertexData *vertexData );
243 void unnameSubMesh(
const String& name);
254 unsigned short getNumSubMeshes(
void)
const;
258 SubMesh* getSubMesh(
unsigned short index)
const;
270 void destroySubMesh(
unsigned short index);
278 void destroySubMesh(
const String& name);
335 Real getBoundingSphereRadius(
void)
const;
354 void _setBoundingSphereRadius(
Real radius);
367 void setSkeletonName(
const String& skelName);
370 bool hasSkeleton(
void)
const;
374 bool hasVertexAnimation(
void)
const;
383 const String& getSkeletonName(
void)
const;
414 void clearBoneAssignments(
void);
438 ushort getNumLodLevels(
void)
const;
467 void updateManualLodLevel(
ushort index,
const String& meshName);
486 void _setLodInfo(
unsigned short numLevels,
bool isManual);
488 void _setLodUsage(
unsigned short level,
MeshLodUsage& usage);
490 void _setSubMeshLodFaceList(
unsigned short subIdx,
unsigned short level,
IndexData* facedata);
493 void removeLodLevels(
void);
571 unsigned short _rationaliseBoneAssignments(
size_t vertexCount, VertexBoneAssignmentList& assignments);
580 void _compileBoneAssignments(
void);
587 void _updateCompiledBoneAssignments(
void);
604 void mergeAdjacentTexcoords(
unsigned short finalTexCoordSet,
unsigned short texCoordSetToDestroy );
606 void _configureMeshLodUsage(
const LodConfig& lodConfig);
641 unsigned short sourceTexCoordSet = 0,
unsigned short index = 0,
642 bool splitMirrored =
false,
bool splitRotated =
false,
bool storeParityInW =
false);
666 unsigned short& outSourceCoordSet,
unsigned short& outIndex);
671 void buildEdgeList(
void);
673 void freeEdgeList(
void);
693 void prepareForShadowVolume(
void);
702 EdgeData* getEdgeList(
unsigned short lodIndex = 0);
711 const EdgeData* getEdgeList(
unsigned short lodIndex = 0)
const;
734 static void prepareMatricesForVertexBlend(
const Matrix4** blendMatrices,
735 const Matrix4* boneMatrices,
const IndexMap& indexMap);
760 static void softwareVertexBlend(
const VertexData* sourceVertexData,
762 const Matrix4*
const* blendMatrices,
size_t numMatrices,
781 static void softwareVertexMorph(
Real t,
805 static void softwareVertexPoseBlend(
Real weight,
858 virtual bool hasAnimation(
const String& name)
const;
861 virtual void removeAnimation(
const String& name);
864 virtual unsigned short getNumAnimations(
void)
const;
868 virtual Animation* getAnimation(
unsigned short index)
const;
871 virtual void removeAllAnimations(
void);
877 VertexData* getVertexDataByTrackHandle(
unsigned short handle);
889 void updateMaterialForAllSubMeshes(
void);
895 void _determineAnimationTypes(
void)
const;
919 void removePose(
ushort index);
924 void removePose(
const String& name);
926 void removeAllPoses(
void);
936 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 vertex 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.
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.
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.
Resource holding data about 3D mesh.
VectorIterator< SubMeshList > SubMeshIterator
Concrete IteratorWrapper for nonconst access to the underlying container.
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.