My Project
Public Member Functions | Protected Attributes | List of all members
ParaEngine::CAnimInstanceBase Class Reference

abstract class for all animation instance implementation. More...

#include <AnimInstanceBase.h>

Inheritance diagram for ParaEngine::CAnimInstanceBase:
ParaEngine::IAttributeFields ParaEngine::IObject ParaEngine::CRefCounted ParaEngine::CDummyAnimInstance ParaEngine::CMdxAniInstance ParaEngine::CParaXAnimInstance ParaEngine::CXFileAnimInstance

Public Member Functions

 ATTRIBUTE_DEFINE_CLASS (CAnimInstanceBase)
 
virtual int InstallFields (CAttributeClass *pClass, bool bOverride)
 this class should be implemented if one wants to add new attribute. More...
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, GetRenderCount_s, int *)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, SetRenderCount_s, int)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, IsAnimIDMapEnabled_s, bool *)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, EnableAnimIDMap_s, bool)
 
 ATTRIBUTE_METHOD (CAnimInstanceBase, ResetAnimation_s)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, GetCurrentAnimation_s, int *)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, ShowMesh_s, DWORD)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, GetSizeScale_s, float *)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, SetSizeScale_s, float)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, GetSpeedScale_s, float *)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, SetSpeedScale_s, float)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, IsUseGlobalTime_s, bool *)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, SetUseGlobalTime_s, bool)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, GetAnimFrame_s, int *)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, SetAnimFrame_s, int)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, IsAnimationEnabled_s, bool *)
 
 ATTRIBUTE_METHOD1 (CAnimInstanceBase, EnableAnimation_s, bool)
 
virtual int GetRenderCount ()
 this function is called to update the render frame number of this object. More...
 
virtual void SetRenderCount (int nCount)
 
void EnableAnimIDMap (bool bEnable)
 set whether the m_mapAnimIDs will be used. More...
 
bool IsAnimIDMapEnabled ()
 get whether the m_mapAnimIDs will be used.Disabled by default
 
map< int, int > * GetAnimIDMap ()
 one can use the returned map to set and get the animation ID mapping. More...
 
void ApplyLocalTransformToVec3 (Vector3 *pOut, const Vector3 *pV)
 pOut = m_mxLocalTransform (X) pV;
 
void ApplyLocalTransformToVec1 (float *pOut, float *pV)
 
virtual void LoadAnimation (const char *sName, float *fSpeed, bool bAppend=false)
 Play or append the specified animation. More...
 
virtual void LoadAnimation (int nAnimID, float *fSpeed, bool bAppend=false)
 
virtual void LoadDefaultStandAnim (float *fSpeed)
 
virtual void LoadDefaultWalkAnim (float *fSpeed)
 
virtual bool HasAnimId (int nAnimID)
 check to see if the underlying model has a given animation id. More...
 
virtual int GetCurrentAnimation ()
 get the ID of the current animation. More...
 
virtual void ResetAnimation ()
 reset the animation and blending animation. More...
 
virtual void SetModelColor (LinearColor modelColor)
 set model color, different race might have different color
 
virtual void ShowMesh (BOOL bShow, int nIndex)
 a model might has several meshes, you can show or hide them by setting the bit field of a DWORD. More...
 
virtual void ShowMesh (DWORD dwBitfields)
 
virtual void SetLocalTransform (Matrix4 mXForm)
 when calling draw method, the mxWorld is pre-multiplied by a location transform matrix
 
virtual void AdvanceTime (double dTimeDelta)
 Draw() method will call this function automatically.
 
virtual void Animate (double dTimeDelta, int nRenderNumber=0)
 animate the model. More...
 
virtual HRESULT Draw (SceneState *sceneState, const Matrix4 *mxWorld, CParameterBlock *paramBlock=NULL)
 simply call this function to draw and advance time. More...
 
virtual void BuildShadowVolume (SceneState *sceneState, ShadowVolume *pShadowVolume, LightParams *pLight, Matrix4 *mxWorld)
 
virtual void SetSizeScale (float fScale)
 get the size scale scale normally this is 1.0f
 
virtual float GetSizeScale ()
 get the size scale
 
virtual void GetCurrentRadius (float *fRadius)
 normally this will read the radius of the current animation and calculate the correct size after scaling
 
virtual void GetCurrentSize (float *fWidth, float *fDepth)
 normally this will read the radius of the current animation and calculate the correct size after scaling
 
virtual void SetSpeedScale (float fScale)
 set the scale factor that will be pre-multiplied to the loaded model and animation the animation speed is changed, one should later call GetCurrentSpeed to update the animation's displacement speed. More...
 
virtual float GetSpeedScale ()
 Get the scale factor that will be pre-multiplied to the loaded model and animation. More...
 
virtual void GetCurrentSpeed (float *fSpeed)
 normally this will read the move speed of the current animation and calculate the correct(scaled) speed
 
virtual void GetSpeedOf (const char *sName, float *fSpeed)
 normally this will read the move speed of the specified animation and calculate the correct(scaled) speed
 
virtual void SetUseGlobalTime (bool bUseGlobalTime)
 whether to use global time to sync animation. More...
 
virtual bool IsUseGlobalTime ()
 whether to use global time to sync animation. More...
 
virtual void SetAnimFrame (int nFrame)
 set the current animation frame number relative to the beginning of current animation. More...
 
virtual int GetAnimFrame ()
 get the current animation frame number relative to the beginning of current animation. More...
 
virtual void SetBlendingFactor (float fBlendingFactor)
 set the blending factor between the current and blend animation. More...
 
virtual bool HasAnimation (int nAnimID)
 whether an animation id exist
 
virtual bool HasAlphaBlendedObjects ()
 return true if the object contains alpha blended render pass. More...
 
virtual int GetValidAnimID (int nAnimID)
 look for a valid animation ID for nAnimID. More...
 
void EnableAnimation (bool bAnimated)
 whether animation is enabled. More...
 
bool IsAnimationEnabled () const
 
- Public Member Functions inherited from ParaEngine::IAttributeFields
virtual int GetAttributeClassID ()
 attribute class ID should be identical, unless one knows how overriding rules work. More...
 
virtual const char * GetAttributeClassName ()
 a static string, describing the attribute class object's name
 
virtual const char * GetAttributeClassDescription ()
 a static string, describing the attribute class object
 
virtual int GetChildAttributeColumnCount ()
 we support multi-dimensional child object. More...
 
virtual int GetChildAttributeObjectCount (int nColumnIndex=0)
 get the number of child objects (row count) in the given column. More...
 
virtual IAttributeFieldsGetChildAttributeObject (int nRowIndex, int nColumnIndex=0)
 
virtual IAttributeFieldsGetChildAttributeObject (const std::string &sName)
 get attribute by child object. More...
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetName_s, const char **)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, SetName_s, const char *)
 
 ATTRIBUTE_METHOD (IAttributeFields, PrintObject_s)
 
 ATTRIBUTE_METHOD (IAttributeFields, AddRef_s)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetRefCount_s, int *)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, SetTime_s, int)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetTime_s, int *)
 
 ATTRIBUTE_METHOD (IAttributeFields, Release_s)
 
virtual const std::string & GetIdentifier ()
 
virtual void SetIdentifier (const std::string &sID)
 
virtual bool IsModified ()
 whether some of the fields are modified.It is up to the implementation class to provide this functionality if necessary. More...
 
virtual void SetModified (bool bModified)
 set whether any field has been modified. More...
 
virtual bool ValidateFields ()
 validate all fields and return true if validation passed. More...
 
virtual string GetValidationMessage ()
 get the recent validation message due to the most recent call to ValidateFields()
 
virtual bool ResetField (int nFieldID)
 Reset the field to its initial or default value. More...
 
virtual bool InvokeEditor (int nFieldID, const std::string &sParameters)
 Invoke an (external) editor for a given field. More...
 
virtual bool AddChildAttributeObject (IAttributeFields *pChild, int nRowIndex=-1, int nColumnIndex=0)
 add child object. More...
 
virtual void * QueryObjectByName (const std::string &sObjectType)
 convert to object of a given type. More...
 
virtual void * QueryObject (int nObjectType)
 convert to object of a given type. More...
 
virtual int GetTime ()
 get the current local time in case it is animated in milli seconds frames. More...
 
virtual void SetTime (int nTime)
 
virtual CDynamicAttributeFieldGetDynamicField (const std::string &sName)
 Get a dynamic field with a given name. More...
 
virtual CDynamicAttributeFieldGetDynamicField (int nIndex)
 Get a dynamic field with a given index. More...
 
virtual const char * GetDynamicFieldNameByIndex (int nIndex)
 get field name by index
 
virtual int GetDynamicFieldCount ()
 how many dynamic field this object currently have. More...
 
virtual int SetDynamicField (const std::string &sName, const CVariable &value)
 set a dynamic field with a given name. More...
 
virtual int AddDynamicField (const std::string &sName, ATTRIBUTE_FIELDTYPE dwType)
 add dynamic field and return field index
 
virtual void RemoveAllDynamicFields ()
 remove all dynamic fields
 
virtual int SaveDynamicFieldsToString (std::string &output)
 save only text dynamic fields to fieldname = value text strings. More...
 
virtual int LoadDynamicFieldsFromString (const std::string &input)
 load only text dynamic fields from string More...
 
CAttributeClassGetAttributeClass ()
 get the main attribute class object. More...
 
void PrintObject ()
 print the content of this object to a text file at temp/doc/[ClassName].txt. More...
 
- Public Member Functions inherited from ParaEngine::IObject
virtual void Clone (IObject *obj) const
 Clone the object's contains to a pointer. More...
 
virtual IObjectClone () const
 Clone the object's contains and return a pointer to the newly created object. More...
 
virtual bool Equals (const IObject *obj) const
 Compare the object with another object. More...
 
virtual const ITypeGetType () const
 
virtual std::string ToString () const
 
WeakPtr_typeGetWeakReference ()
 get weak reference object. More...
 
virtual int ProcessObjectEvent (const ObjectEvent &event)
 this function is only used to backward compatibility of ParaObject:AddEvent() function. More...
 
- Public Member Functions inherited from ParaEngine::CRefCounted
void addref () const
 add reference count of the object. More...
 
bool delref () const
 decrease reference count of the object. More...
 
int GetRefCount () const
 get the reference count
 
virtual int Release ()
 
CRefCountedAddToAutoReleasePool ()
 addref and releases the ownership sometime soon automatically (usually at the end of the current frame). More...
 

Protected Attributes

LinearColor m_modelColor
 color of this model
 
Matrix4 m_mxLocalTransform
 mesh local world xform: center in the origin
 
float m_fSizeScale
 scale parameters
 
float m_fSpeedScale
 
int m_nRenderCount
 the last render frame count that this object is rendered. More...
 
map< int, int > m_mapAnimIDs
 a mapping from one animation ID to another ID. More...
 
bool m_bEnableAnimIDMap
 whether the m_mapAnimIDs will be used. More...
 
bool m_bEnableAnimation
 whether animation is enabled, true by default. More...
 
- Protected Attributes inherited from ParaEngine::IObject
WeakPtr_type m_weak_reference
 
- Protected Attributes inherited from ParaEngine::CRefCounted
int m_refcount
 

Additional Inherited Members

- Public Types inherited from ParaEngine::IAttributeFields
typedef ParaEngine::weak_ptr< IObject, IAttributeFieldsWeakPtr_type
 
- Public Types inherited from ParaEngine::IObject
typedef ParaEngine::weak_ptr< IObjectWeakPtr_type
 
- Static Public Member Functions inherited from ParaEngine::IAttributeFields
static HRESULT GetAttributeClassID_s (IAttributeFields *cls, int *p1)
 
static HRESULT GetAttributeClassName_s (IAttributeFields *cls, const char **p1)
 
static bool OpenWithDefaultEditor (const char *sFilename, bool bWaitOnReturn=false)
 Open a given file with the default registered editor in the game engine. More...
 
- Protected Member Functions inherited from ParaEngine::IAttributeFields
virtual CAttributeClassCreateAttributeClass ()
 initialize fields
 
virtual CDynamicAttributesSetGetDynamicAttributes (bool bCreateIfNotExist=false)
 

Detailed Description

abstract class for all animation instance implementation.

so that there can be several implementations such as MDX animation and X file animation support.

Member Function Documentation

§ Animate()

void ParaEngine::CAnimInstanceBase::Animate ( double  dTimeDelta,
int  nRenderNumber = 0 
)
virtual

animate the model.

One can call this function multiple times in a single render frame, but only the first time is calculated. this function will call AdvanceTime internally.

Reimplemented in ParaEngine::CParaXAnimInstance.

§ Draw()

HRESULT ParaEngine::CAnimInstanceBase::Draw ( SceneState sceneState,
const Matrix4 mxWorld,
CParameterBlock paramBlock = NULL 
)
virtual

simply call this function to draw and advance time.

set dTimeDelta to 0 if you want to render only static model.

Reimplemented in ParaEngine::CParaXAnimInstance.

§ EnableAnimation()

void ParaEngine::CAnimInstanceBase::EnableAnimation ( bool  bAnimated)

whether animation is enabled.

by default this is true. During movie editing, we may disable animation, set animation frame explicitly by editor logics.

§ EnableAnimIDMap()

void ParaEngine::CAnimInstanceBase::EnableAnimIDMap ( bool  bEnable)

set whether the m_mapAnimIDs will be used.

Disabled by default

§ GetAnimFrame()

int ParaEngine::CAnimInstanceBase::GetAnimFrame ( )
virtual

get the current animation frame number relative to the beginning of current animation.

Reimplemented in ParaEngine::CParaXAnimInstance.

§ GetAnimIDMap()

map< int, int > * ParaEngine::CAnimInstanceBase::GetAnimIDMap ( )

one can use the returned map to set and get the animation ID mapping.

animation ID mapping is a mapping from one animation ID to another ID. This mapping is usually not used (empty). However, it is used when we can want to secretly replace animation used by this animation instance, by adding a ID to ID map. e.g. we can replace female walk animation ID with an external female walk animation ID.

Note
: remember to EnableAnimIDMap() in order for the mapping to take effect.

§ GetCurrentAnimation()

int ParaEngine::CAnimInstanceBase::GetCurrentAnimation ( )
virtual

get the ID of the current animation.

0 is default standing animation.

Reimplemented in ParaEngine::CParaXAnimInstance.

§ GetRenderCount()

int ParaEngine::CAnimInstanceBase::GetRenderCount ( )
virtual

this function is called to update the render frame number of this object.

please note that, the frame number increases by 1 every frame. This function is called inside the Draw() function to prevent the same animation to be advanced multiple times in a single render frame.

§ GetSpeedScale()

float ParaEngine::CAnimInstanceBase::GetSpeedScale ( )
virtual

Get the scale factor that will be pre-multiplied to the loaded model and animation.

Returns
: speed scale. 1.0 is the original speed.

§ GetValidAnimID()

int ParaEngine::CAnimInstanceBase::GetValidAnimID ( int  nAnimID)
virtual

look for a valid animation ID for nAnimID.

return -1 if no animation is found. e.g. if nAnimId 4 not found, 0 will be returned.

Reimplemented in ParaEngine::CParaXAnimInstance.

§ HasAlphaBlendedObjects()

bool ParaEngine::CAnimInstanceBase::HasAlphaBlendedObjects ( )
virtual

return true if the object contains alpha blended render pass.

This function determines which render pipeline stage the object is rendered. generally speaking, if deferred shading is used, we will render alpha blended objects last.

Reimplemented in ParaEngine::CParaXAnimInstance.

§ HasAnimId()

bool ParaEngine::CAnimInstanceBase::HasAnimId ( int  nAnimID)
virtual

check to see if the underlying model has a given animation id.

Reimplemented in ParaEngine::CParaXAnimInstance, and ParaEngine::CDummyAnimInstance.

§ InstallFields()

int ParaEngine::CAnimInstanceBase::InstallFields ( CAttributeClass pClass,
bool  bOverride 
)
virtual

this class should be implemented if one wants to add new attribute.

This function is always called internally.

Reimplemented from ParaEngine::IAttributeFields.

Reimplemented in ParaEngine::CParaXAnimInstance.

§ IsUseGlobalTime()

bool ParaEngine::CAnimInstanceBase::IsUseGlobalTime ( )
virtual

whether to use global time to sync animation.

Default to false. if true, all characters plays exactly the same frames if they are using the same animation file at all times, if false, each character advances its time frame separately according to their visibility in the scene.

Note
: animation is always looped once use global time

Reimplemented in ParaEngine::CParaXAnimInstance.

§ LoadAnimation()

void ParaEngine::CAnimInstanceBase::LoadAnimation ( const char *  sName,
float *  fSpeed,
bool  bAppend = false 
)
virtual

Play or append the specified animation.

If the current animation is the same as the specified animation, it will loop on the current animation infinitely until a different animation is specified; otherwise, the current animation will be stopped, the specified animation played and the next animation emptied.

Parameters
fSpeed[out] the speed of the animation after applying scaling is returned.
bAppendif true, the new animation will be appended to the current animation according to the following rules:
  • if the current animation is non-looping, the new animation will be played after the end of the current animation.
  • if the current animation is looping, the new animation will be played immediately.

Reimplemented in ParaEngine::CParaXAnimInstance, and ParaEngine::CMdxAniInstance.

§ ResetAnimation()

void ParaEngine::CAnimInstanceBase::ResetAnimation ( )
virtual

reset the animation and blending animation.

this function must be called when the base model (CharModelInstance) is changed.

Reimplemented in ParaEngine::CParaXAnimInstance.

§ SetAnimFrame()

void ParaEngine::CAnimInstanceBase::SetAnimFrame ( int  nFrame)
virtual

set the current animation frame number relative to the beginning of current animation.

Parameters
nFrame0 means beginning. if nFrame is longer than the current animation length, it will wrap (modulate the length).

Reimplemented in ParaEngine::CParaXAnimInstance.

§ SetBlendingFactor()

void ParaEngine::CAnimInstanceBase::SetBlendingFactor ( float  fBlendingFactor)
virtual

set the blending factor between the current and blend animation.

Parameters
bBlendingFactorfrom [0,1]. where 0 means no blending.

Reimplemented in ParaEngine::CParaXAnimInstance.

§ SetSpeedScale()

void ParaEngine::CAnimInstanceBase::SetSpeedScale ( float  fScale)
virtual

set the scale factor that will be pre-multiplied to the loaded model and animation the animation speed is changed, one should later call GetCurrentSpeed to update the animation's displacement speed.

Reimplemented in ParaEngine::CMdxAniInstance.

§ SetUseGlobalTime()

void ParaEngine::CAnimInstanceBase::SetUseGlobalTime ( bool  bUseGlobalTime)
virtual

whether to use global time to sync animation.

Default to false. if true, all characters plays exactly the same frames if they are using the same animation file at all times, if false, each character advances its time frame separately according to their visibility in the scene.

Note
: animation is always looped once use global time

Reimplemented in ParaEngine::CParaXAnimInstance.

§ ShowMesh()

void ParaEngine::CAnimInstanceBase::ShowMesh ( BOOL  bShow,
int  nIndex 
)
virtual

a model might has several meshes, you can show or hide them by setting the bit field of a DWORD.

the lowest bit is the first mesh.

Reimplemented in ParaEngine::CMdxAniInstance.

Member Data Documentation

§ m_bEnableAnimation

bool ParaEngine::CAnimInstanceBase::m_bEnableAnimation
protected

whether animation is enabled, true by default.

§ m_bEnableAnimIDMap

bool ParaEngine::CAnimInstanceBase::m_bEnableAnimIDMap
protected

whether the m_mapAnimIDs will be used.

Disabled by default

§ m_mapAnimIDs

map<int, int> ParaEngine::CAnimInstanceBase::m_mapAnimIDs
protected

a mapping from one animation ID to another ID.

This mapping is usually not used (empty). However, it is used when we can want to secretly replace animation used by this animation instance, by adding a ID to ID map. e.g. we can replace female walk animation ID with an external female walk animation ID.

§ m_nRenderCount

int ParaEngine::CAnimInstanceBase::m_nRenderCount
protected

the last render frame count that this object is rendered.


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