OGRE-Next  3.0.0unstable
Object-Oriented Graphics Rendering Engine
Ogre::BoneTransform Struct Reference

Represents the transform of a single object, arranged in SoA (Structure of Arrays) More...

#include <OgreBoneTransform.h>

Public Member Functions

 BoneTransform ()
 
void advancePack ()
 Advances all pointers to the next pack, i.e. More...
 
void advancePack (size_t numAdvance)
 
void copy (const BoneTransform &inCopy)
 Copies all the scalar data from the parameter into this. More...
 

Public Attributes

SimpleMatrixAf4x3 *RESTRICT_ALIAS mDerivedTransform
 Caches the full transform into an affine 4x4 matrix. More...
 
SimpleMatrixAf4x3 *RESTRICT_ALIAS mFinalTransform
 Caches mDerivedTransform in Bone space, used for rendering. More...
 
unsigned char mIndex
 Which of the packed values is ours. Value in range [0; 4) for SSE2. More...
 
bool *RESTRICT_ALIAS mInheritOrientation
 Stores whether this node inherits orientation from it's parent. More...
 
bool *RESTRICT_ALIAS mInheritScale
 Stores whether this node inherits scale from it's parent. More...
 
ArrayQuaternion *RESTRICT_ALIAS mOrientation
 Stores the orientation of a node relative to it's parent. More...
 
Bone ** mOwner
 The Bone that owns this BoneTransform. Ours is mOwner[mIndex]. More...
 
SimpleMatrixAf4x3 const **RESTRICT_ALIAS mParentNodeTransform
 Points to the Node parent's pointer. More...
 
SimpleMatrixAf4x3 const **RESTRICT_ALIAS mParentTransform
 Points to the parent's pointer. More...
 
ArrayVector3 *RESTRICT_ALIAS mPosition
 Stores the position/translation of a node relative to its parent. More...
 
ArrayVector3 *RESTRICT_ALIAS mScale
 Stores the scaling factor applied to a node. More...
 

Detailed Description

Represents the transform of a single object, arranged in SoA (Structure of Arrays)

Constructor & Destructor Documentation

◆ BoneTransform()

Ogre::BoneTransform::BoneTransform ( )
inline

Member Function Documentation

◆ advancePack() [1/2]

void Ogre::BoneTransform::advancePack ( )
inline

Advances all pointers to the next pack, i.e.

if we're processing 4 elements at a time, move to the next 4 elements.

References ARRAY_PACKED_REALS, mDerivedTransform, mFinalTransform, mInheritOrientation, mInheritScale, mOrientation, mOwner, mParentNodeTransform, mParentTransform, mPosition, and mScale.

◆ advancePack() [2/2]

void Ogre::BoneTransform::advancePack ( size_t  numAdvance)
inline

◆ copy()

void Ogre::BoneTransform::copy ( const BoneTransform inCopy)
inline

Copies all the scalar data from the parameter into this.

Remarks
A normal "=" operator, or an assignment constructor BoneTransform( BoneTransform & ) wouldn't work. This is because ArrayVector3 & co. would try to copy all the packed values, while we just want the scalar ones.

Furthermore, it would be confusing, because it would be not clear whether those two options should memcpy memory, or rebase the pointers, hence explicit functions are much preferred.

See also
rebasePtrs

Note that we do NOT copy the mIndex member.

References Ogre::ArrayQuaternion::getAsQuaternion(), Ogre::ArrayVector3::getAsVector3(), mDerivedTransform, mFinalTransform, mIndex, mInheritOrientation, mInheritScale, mOrientation, mOwner, mParentNodeTransform, mParentTransform, mPosition, mScale, Ogre::ArrayQuaternion::setFromQuaternion(), and Ogre::ArrayVector3::setFromVector3().

Member Data Documentation

◆ mDerivedTransform

SimpleMatrixAf4x3* RESTRICT_ALIAS Ogre::BoneTransform::mDerivedTransform

Caches the full transform into an affine 4x4 matrix.

Note it's not Array form! (It's AoS) mDerivedTransform is in object space

Referenced by Ogre::Bone::_getLocalSpaceTransform(), advancePack(), and copy().

◆ mFinalTransform

SimpleMatrixAf4x3* RESTRICT_ALIAS Ogre::BoneTransform::mFinalTransform

Caches mDerivedTransform in Bone space, used for rendering.

It's not Array form! (It's AoS) mFinalTransform is in "world-bone" space ready to be sent to the GPU.

Referenced by Ogre::Bone::_getFullTransform(), advancePack(), and copy().

◆ mIndex

unsigned char Ogre::BoneTransform::mIndex

Which of the packed values is ours. Value in range [0; 4) for SSE2.

Referenced by Ogre::Bone::_getFullTransform(), Ogre::Bone::_getLocalSpaceTransform(), and copy().

◆ mInheritOrientation

bool* RESTRICT_ALIAS Ogre::BoneTransform::mInheritOrientation

Stores whether this node inherits orientation from it's parent.

Ours is mInheritOrientation[mIndex]

Referenced by advancePack(), and copy().

◆ mInheritScale

bool* RESTRICT_ALIAS Ogre::BoneTransform::mInheritScale

Stores whether this node inherits scale from it's parent.

Ours is mInheritScale[mIndex]

Referenced by advancePack(), and copy().

◆ mOrientation

ArrayQuaternion* RESTRICT_ALIAS Ogre::BoneTransform::mOrientation

Stores the orientation of a node relative to it's parent.

Referenced by advancePack(), and copy().

◆ mOwner

Bone** Ogre::BoneTransform::mOwner

The Bone that owns this BoneTransform. Ours is mOwner[mIndex].

Referenced by advancePack(), and copy().

◆ mParentNodeTransform

SimpleMatrixAf4x3 const** RESTRICT_ALIAS Ogre::BoneTransform::mParentNodeTransform

Points to the Node parent's pointer.

Referenced by advancePack(), and copy().

◆ mParentTransform

SimpleMatrixAf4x3 const** RESTRICT_ALIAS Ogre::BoneTransform::mParentTransform

Points to the parent's pointer.

Referenced by advancePack(), and copy().

◆ mPosition

ArrayVector3* RESTRICT_ALIAS Ogre::BoneTransform::mPosition

Stores the position/translation of a node relative to its parent.

Referenced by advancePack(), and copy().

◆ mScale

ArrayVector3* RESTRICT_ALIAS Ogre::BoneTransform::mScale

Stores the scaling factor applied to a node.

Referenced by advancePack(), and copy().


The documentation for this struct was generated from the following file: