My Project
|
this is primary animation instance used for normal animated character or advanced customizable character External animation are stored in dynamic fields using bone names as key. More...
#include <ParaXAnimInstance.h>
Classes | |
struct | AttachmentMat |
Public Types | |
enum | ModelType { CharacterModel =0, FixedModel =1 } |
defines the model type that this instance holds More... | |
typedef map< int, AttachmentMat > | ATTACHMENT_MATRIX_POOL_TYPE |
![]() | |
typedef ParaEngine::weak_ptr< IObject, IAttributeFields > | WeakPtr_type |
![]() | |
typedef ParaEngine::weak_ptr< IObject > | WeakPtr_type |
Public Member Functions | |
ATTRIBUTE_DEFINE_CLASS (CParaXAnimInstance) | |
virtual int | InstallFields (CAttributeClass *pClass, bool bOverride) |
this class should be implemented if one wants to add new attribute. More... | |
virtual IAttributeFields * | GetChildAttributeObject (const std::string &sName) |
get attribute by child object. More... | |
virtual int | GetChildAttributeObjectCount (int nColumnIndex=0) |
get the number of child objects (row count) in the given column. More... | |
virtual int | GetChildAttributeColumnCount () |
we support multi-dimensional child object. More... | |
virtual IAttributeFields * | GetChildAttributeObject (int nRowIndex, int nColumnIndex=0) |
ATTRIBUTE_METHOD1 (CParaXAnimInstance, GetIdleAnimationID_s, int *) | |
ATTRIBUTE_METHOD1 (CParaXAnimInstance, SetIdleAnimationID_s, int) | |
ATTRIBUTE_METHOD (CParaXAnimInstance, UpdateModel_s) | |
virtual int | GetTime () |
get the current local time in case it is animated in milli seconds frames. More... | |
virtual void | SetTime (int nTime) |
bool | HasMountPoint (int nMountPointID=0) |
whether the character has a mount point at the given ID. More... | |
CharModelInstance * | GetCharModel () |
Get the character model instance. More... | |
ParaXEntity * | GetAnimModel () |
get the animation model | |
void | Init (ParaXEntity *pModel) |
init the animation instance. More... | |
bool | ResetBaseModel (ParaXEntity *pModel) |
reset the base model | |
virtual void | ResetAnimation () |
reset the animation and blending animation. More... | |
virtual HRESULT | Draw (SceneState *sceneState, const Matrix4 *mxWorld, CParameterBlock *params=NULL) |
Render the model with its current settings. More... | |
virtual void | Animate (double dTimeDelta, int nRenderNumber=0) |
animate the model. More... | |
virtual bool | UpdateWorldTransform (SceneState *sceneState, Matrix4 &out, const Matrix4 &mxWorld) |
update world transform by applying local size scale. More... | |
bool | UpdateModel (SceneState *sceneState=NULL) |
update model according to current animation data and time | |
int | GetIdleAnimationID () |
void | SetIdleAnimationID (int nID) |
the current idle animation ID. More... | |
virtual void | BuildShadowVolume (SceneState *sceneState, ShadowVolume *pShadowVolume, LightParams *pLight, Matrix4 *mxWorld) |
shadow volume | |
virtual void | AdvanceTime (double dTimeDelta) |
Advance the animation by a time delta in second. More... | |
Matrix4 * | GetAttachmentMatrix (Matrix4 *pOut, int nAttachmentID, int nRenderNumber) |
Get the specified attachment matrix of the current model. More... | |
bool | HasAttachmentMatrix (int nAttachmentID) |
Get the specified attachment matrix of the current model. More... | |
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 | LoadAnimationByIndex (const AnimIndex &nAnimIndex, 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 | 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 | 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. More... | |
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... | |
![]() | |
ATTRIBUTE_DEFINE_CLASS (CAnimInstanceBase) | |
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 | 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 | SetSizeScale (float fScale) |
get the size scale scale normally this is 1.0f | |
virtual float | GetSizeScale () |
get the size scale | |
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... | |
void | EnableAnimation (bool bAnimated) |
whether animation is enabled. More... | |
bool | IsAnimationEnabled () const |
![]() | |
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 | |
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 CDynamicAttributeField * | GetDynamicField (const std::string &sName) |
Get a dynamic field with a given name. More... | |
virtual CDynamicAttributeField * | GetDynamicField (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... | |
CAttributeClass * | GetAttributeClass () |
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... | |
![]() | |
virtual void | Clone (IObject *obj) const |
Clone the object's contains to a pointer. More... | |
virtual IObject * | Clone () 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 IType * | GetType () const |
virtual std::string | ToString () const |
WeakPtr_type & | GetWeakReference () |
get weak reference object. More... | |
virtual int | ProcessObjectEvent (const ObjectEvent &event) |
this function is only used to backward compatibility of ParaObject:AddEvent() function. More... | |
![]() | |
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 () |
CRefCounted * | AddToAutoReleasePool () |
addref and releases the ownership sometime soon automatically (usually at the end of the current frame). More... | |
Public Attributes | |
AnimIndex | m_CurrentAnim |
current animation index, this is different from sequence ID an absolute ParaX frame number denoting the current animation frame. More... | |
AnimIndex | m_NextAnim |
the next animation index.if it is -1, the next animation will depends on the loop property of the current sequenc; otherwise, the animation specified by the ID will be played next, after the current animation reached the end. More... | |
AnimIndex | m_BlendingAnim |
the animation sequence with which the current animation should be blended. More... | |
float | m_fBlendingFactor |
by how much the blending frame should be blended with the current frame. More... | |
unsigned short | m_nCurrentIdleAnimationID |
the current idle animation ID. More... | |
short | m_nCustomStandingAnimCount |
the number of custom animations. More... | |
bool | m_bUseGlobalTime |
whether to use global time to sync animation. More... | |
int | m_curTime |
current time for dynamic fields. More... | |
Additional Inherited Members | |
![]() | |
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... | |
![]() | |
virtual CAttributeClass * | CreateAttributeClass () |
initialize fields | |
virtual CDynamicAttributesSet * | GetDynamicAttributes (bool bCreateIfNotExist=false) |
![]() | |
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... | |
![]() | |
WeakPtr_type | m_weak_reference |
![]() | |
int | m_refcount |
this is primary animation instance used for normal animated character or advanced customizable character External animation are stored in dynamic fields using bone names as key.
defines the model type that this instance holds
|
virtual |
Advance the animation by a time delta in second.
Speed up the animation rendering by a factor of m_fSpeedScale
if there is a queued animation, we will play that one.
empty the queue
if there is NO queued animation, we will play the default one.
non-looping, play the default idle animation
looping on the current animation
Reimplemented from ParaEngine::CAnimInstanceBase.
|
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 from ParaEngine::CAnimInstanceBase.
|
virtual |
Render the model with its current settings.
Reimplemented from ParaEngine::CAnimInstanceBase.
|
virtual |
get the current animation frame number relative to the beginning of current animation.
Reimplemented from ParaEngine::CAnimInstanceBase.
Matrix4 * CParaXAnimInstance::GetAttachmentMatrix | ( | Matrix4 * | pOut, |
int | nAttachmentID, | ||
int | nRenderNumber | ||
) |
Get the specified attachment matrix of the current model.
this is usually for getting the mount point on a certain model, such as horses.
nRenderNumber | if it is bigger than current calculated render number, the value will be recalculated. If 0, it will not recalculate |
CharModelInstance * CParaXAnimInstance::GetCharModel | ( | ) |
Get the character model instance.
If the model instance is not of character type, then NULL will be returned. But it does not mean that there is not a valid model instance of other types
|
virtual |
we support multi-dimensional child object.
by default objects have only one column.
Reimplemented from ParaEngine::IAttributeFields.
|
virtual |
get attribute by child object.
used to iterate across the attribute field hierarchy.
Reimplemented from ParaEngine::IAttributeFields.
|
virtual |
get the number of child objects (row count) in the given column.
please note different columns can have different row count.
Reimplemented from ParaEngine::IAttributeFields.
|
virtual |
get the ID of the current animation.
0 is default standing animation.
Reimplemented from ParaEngine::CAnimInstanceBase.
int CParaXAnimInstance::GetIdleAnimationID | ( | ) |
|
virtual |
get the current local time in case it is animated in milli seconds frames.
Reimplemented from ParaEngine::IAttributeFields.
|
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 from ParaEngine::CAnimInstanceBase.
|
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 from ParaEngine::CAnimInstanceBase.
|
virtual |
whether an animation id exist.
this function may have different return value when asset is async loaded.
nAnimID | predefined id. |
Reimplemented from ParaEngine::CAnimInstanceBase.
|
virtual |
check to see if the underlying model has a given animation id.
Reimplemented from ParaEngine::CAnimInstanceBase.
bool CParaXAnimInstance::HasAttachmentMatrix | ( | int | nAttachmentID | ) |
Get the specified attachment matrix of the current model.
this is usually for getting the mount point on a certain model, such as horses.
nAttachmentID | NULL if not successful, otherwise it is pOut. |
bool CParaXAnimInstance::HasMountPoint | ( | int | nMountPointID = 0 | ) |
whether the character has a mount point at the given ID.
Such characters are usually cars, horses, planes, etc.
void CParaXAnimInstance::Init | ( | ParaXEntity * | pModel | ) |
init the animation instance.
associate it with the ParaX model
|
virtual |
this class should be implemented if one wants to add new attribute.
This function is always called internally.
Reimplemented from ParaEngine::CAnimInstanceBase.
|
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.
Reimplemented from ParaEngine::CAnimInstanceBase.
|
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.
fSpeed | [out] the speed of the animation after applying scaling is returned. |
bAppend | if true, the new animation will be appended to the current animation according to the following rules:
|
Reimplemented from ParaEngine::CAnimInstanceBase.
|
virtual |
if the animation is different, we will play a new one.
If the current animation is looping and bAppend is false, play immediately from the beginning of the new animation.
set the next animation to default
if the current animation is non-looping, we will set the next animation to play to the new animation.
|
virtual |
reset the animation and blending animation.
this function must be called when the base model (CharModelInstance) is changed.
Reimplemented from ParaEngine::CAnimInstanceBase.
|
virtual |
set the current animation frame number relative to the beginning of current animation.
nFrame | 0 means beginning. if nFrame is longer than the current animation length, it will wrap (modulate the length). |
Reimplemented from ParaEngine::CAnimInstanceBase.
|
virtual |
set the blending factor between the current and blend animation.
fBlendingFactor | from [0,1]. where 0 means no blending. |
Reimplemented from ParaEngine::CAnimInstanceBase.
void CParaXAnimInstance::SetIdleAnimationID | ( | int | nID | ) |
the current idle animation ID.
default value is 0
nID |
|
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.
Reimplemented from ParaEngine::CAnimInstanceBase.
|
virtual |
update world transform by applying local size scale.
return true if succeed
AnimIndex ParaEngine::CParaXAnimInstance::m_BlendingAnim |
the animation sequence with which the current animation should be blended.
an absolute ParaX frame number denoting the blending animation frame. It is always within the range of the blending animation sequence's start and end frame number.
bool ParaEngine::CParaXAnimInstance::m_bUseGlobalTime |
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.
AnimIndex ParaEngine::CParaXAnimInstance::m_CurrentAnim |
current animation index, this is different from sequence ID an absolute ParaX frame number denoting the current animation frame.
It is always within the range of the current animation sequence's start and end frame number.
int ParaEngine::CParaXAnimInstance::m_curTime |
current time for dynamic fields.
float ParaEngine::CParaXAnimInstance::m_fBlendingFactor |
by how much the blending frame should be blended with the current frame.
1.0 will use solely the blending frame, whereas 0.0 will use only the current frame. [0,1), blendingFrame*(blendingFactor)+(1-blendingFactor)*currentFrame
unsigned short ParaEngine::CParaXAnimInstance::m_nCurrentIdleAnimationID |
the current idle animation ID.
[1] is largest alternative standing animation ID. if 0, it means not available.
short ParaEngine::CParaXAnimInstance::m_nCustomStandingAnimCount |
the number of custom animations.
if -1, it is undefined. if 0, it means there is no such animations. custom standing animations are at ANIM_CUSTOM0 - ANIM_CUSTOM3.
AnimIndex ParaEngine::CParaXAnimInstance::m_NextAnim |
the next animation index.if it is -1, the next animation will depends on the loop property of the current sequenc; otherwise, the animation specified by the ID will be played next, after the current animation reached the end.