Open 3D Engine EMotionFX Gem API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
MCore::TCompressedQuaternion< StorageType > Class Template Reference

#include <CompressedQuaternion.h>

Public Types

enum  { CONVERT_VALUE = ((1 << (sizeof(StorageType) << 3)) >> 1) - 1 }
 

Public Member Functions

MCORE_INLINE TCompressedQuaternion ()
 
MCORE_INLINE TCompressedQuaternion (float xVal, float yVal, float zVal, float wVal)
 
MCORE_INLINE TCompressedQuaternion (const AZ::Quaternion &quat)
 
MCORE_INLINE void FromQuaternion (const AZ::Quaternion &quat)
 
MCORE_INLINE void UnCompress (AZ::Quaternion *output) const
 
MCORE_INLINE AZ::Quaternion ToQuaternion () const
 
AZ_INLINE operator AZ::Quaternion () const
 

Public Attributes

StorageType m_x
 
StorageType m_y
 
StorageType m_z
 
StorageType m_w
 

Detailed Description

template<class StorageType>
class MCore::TCompressedQuaternion< StorageType >

The compressed / packed quaternion class. This represents a unit (normalized) quaternion on a packed way, which is 8 bytes per quaternion instead of 16 bytes when using floating point quaternions. Of course we loose a bit of precision, but it isn't too bad for most things. The class provides methods to convert from and to uncompressed quaternions.

Constructor & Destructor Documentation

◆ TCompressedQuaternion() [1/3]

template<class StorageType >
MCORE_INLINE TCompressedQuaternion::TCompressedQuaternion ( )

Default constructor. This sets the quaternion to identity.

◆ TCompressedQuaternion() [2/3]

template<class StorageType >
MCORE_INLINE TCompressedQuaternion::TCompressedQuaternion ( float  xVal,
float  yVal,
float  zVal,
float  wVal 
)

Create a compressed quaternion from compressed x, y, z, w values.

Parameters
xValThe value of x.
yValThe value of y.
zValThe value of z.
wValThe value of w.

◆ TCompressedQuaternion() [3/3]

template<class StorageType >
MCORE_INLINE TCompressedQuaternion::TCompressedQuaternion ( const AZ::Quaternion &  quat)

Create a compressed quaternion from an uncompressed one. Please note that the uncompressed quaternion has to be normalized or a unit quaternion!

Parameters
quatThe normalized uncompressed quaternion.

Member Function Documentation

◆ FromQuaternion()

template<class StorageType >
MCORE_INLINE void TCompressedQuaternion::FromQuaternion ( const AZ::Quaternion &  quat)

Update the compressed quaternion from an uncompressed one. Please note that the uncompressed quaternion has to be normalized or a unit quaternion!

Parameters
quatThe normalized uncompressed quaternion.

◆ ToQuaternion()

template<class StorageType >
MCORE_INLINE AZ::Quaternion TCompressedQuaternion::ToQuaternion ( ) const

Convert the compressed quaternion into an uncompressed one. This method works the same as the UnCompress method, but it returns the result instead of specifying the output quaternion.

Returns
The uncompressed version of this compressed quaternion.

◆ UnCompress()

template<class StorageType >
MCORE_INLINE void TCompressedQuaternion::UnCompress ( AZ::Quaternion *  output) const

Uncompress the compressed quaternion into an uncompressed one.

Parameters
outputThe output uncompressed quaternion to write the result in.

Member Data Documentation

◆ m_w

template<class StorageType >
StorageType MCore::TCompressedQuaternion< StorageType >::m_w

The compressed/packed quaternion components values.


The documentation for this class was generated from the following files: