My Project
ParaXAnimInstance.h
1 #pragma once
2 #include "AnimInstanceBase.h"
3 
4 namespace ParaEngine
5 {
6  class CParaXModel;
7  class ParaXModelCanvas;
8  class CharModelInstance;
9 
14  {
15  public:
16  CParaXAnimInstance(void);
17  virtual ~CParaXAnimInstance(void);
18 
19  ATTRIBUTE_DEFINE_CLASS(CParaXAnimInstance);
20 
22  virtual int InstallFields(CAttributeClass* pClass, bool bOverride);
23 
25  virtual IAttributeFields* GetChildAttributeObject(const std::string& sName);
27  virtual int GetChildAttributeObjectCount(int nColumnIndex = 0);
29  virtual int GetChildAttributeColumnCount();
30  virtual IAttributeFields* GetChildAttributeObject(int nRowIndex, int nColumnIndex = 0);
31 
32  ATTRIBUTE_METHOD1(CParaXAnimInstance, GetIdleAnimationID_s, int*) { *p1 = cls->GetIdleAnimationID(); return S_OK; }
33  ATTRIBUTE_METHOD1(CParaXAnimInstance, SetIdleAnimationID_s, int) { cls->SetIdleAnimationID(p1); return S_OK; }
34  ATTRIBUTE_METHOD(CParaXAnimInstance, UpdateModel_s) { cls->UpdateModel(); return S_OK; }
35 
36  public:
38  {
39  Matrix4 m_mat;
40  int m_nRenderNumber;
41  };
42  typedef map<int, AttachmentMat> ATTACHMENT_MATRIX_POOL_TYPE;
43 
45  enum ModelType{
52  };
53  public:
55  virtual int GetTime();
56  virtual void SetTime(int nTime);
57 
58 
60  bool HasMountPoint(int nMountPointID = 0);
61 
68  void Init(ParaXEntity * pModel);
69 
71  bool ResetBaseModel(ParaXEntity * pModel);
72 
75  virtual void ResetAnimation();
76 
78  virtual HRESULT Draw( SceneState * sceneState, const Matrix4* mxWorld,CParameterBlock* params=NULL);
79 
83  virtual void Animate( double dTimeDelta, int nRenderNumber=0 );
84 
85 
89  virtual bool UpdateWorldTransform(SceneState * sceneState, Matrix4& out, const Matrix4& mxWorld);
90 
92  bool UpdateModel(SceneState * sceneState = NULL);
93 
97  int GetIdleAnimationID();
102  void SetIdleAnimationID(int nID);
103 
105  virtual void BuildShadowVolume(SceneState * sceneState,ShadowVolume * pShadowVolume, LightParams* pLight, Matrix4* mxWorld);
106 
108  virtual void AdvanceTime( double dTimeDelta );
114  Matrix4* GetAttachmentMatrix(Matrix4* pOut, int nAttachmentID, int nRenderNumber);
115 
120  bool HasAttachmentMatrix(int nAttachmentID);
121 
132  virtual void LoadAnimation(const char * sName, float * fSpeed,bool bAppend = false);
133  virtual void LoadAnimation(int nAnimID, float * fSpeed,bool bAppend = false);
134  virtual void LoadAnimationByIndex(const AnimIndex& nAnimIndex, bool bAppend = false);
135  virtual void LoadDefaultStandAnim(float * fSpeed);
136  virtual void LoadDefaultWalkAnim(float * fSpeed);
137 
139  virtual bool HasAnimId(int nAnimID);
140 
143  virtual int GetCurrentAnimation();
146  virtual void GetCurrentRadius(float* fRadius);
149  virtual void GetCurrentSize(float * fWidth, float * fDepth);
152  virtual void GetCurrentSpeed (float* fSpeed);
155  virtual void GetSpeedOf(const char * sName, float * fSpeed);
156 
160  virtual void SetUseGlobalTime(bool bUseGlobalTime);
161 
165  virtual bool IsUseGlobalTime();
166 
170  virtual void SetAnimFrame(int nFrame);
171 
173  virtual int GetAnimFrame();
174 
178  virtual void SetBlendingFactor(float fBlendingFactor);
179 
183  virtual bool HasAnimation(int nAnimID);
184 
188  virtual bool HasAlphaBlendedObjects();
190  virtual int GetValidAnimID(int nAnimID);
191 
192  public:
197 
202 
207 
212 
215 
218 
223 
226  private:
228  ModelType m_modelType;
229  ref_ptr<CharModelInstance> m_pCharModel;
230 
233  ATTACHMENT_MATRIX_POOL_TYPE m_AttachmentMatrices;
234  };
235 
236 
237 
238 }
AnimIndex m_NextAnim
the next animation index.if it is -1, the next animation will depends on the loop property of the cur...
Definition: ParaXAnimInstance.h:201
ModelType
defines the model type that this instance holds
Definition: ParaXAnimInstance.h:45
an attribute class is a collection of attribute fields.
Definition: AttributeClass.h:10
ShadowVolume is a structure for storing shadow volume geometries.
Definition: ShadowVolume.h:39
It&#39;s used as parameter to Draw method of each scene object.
Definition: SceneState.h:284
int m_curTime
current time for dynamic fields.
Definition: ParaXAnimInstance.h:225
bool m_bUseGlobalTime
whether to use global time to sync animation.
Definition: ParaXAnimInstance.h:222
abstract class for all animation instance implementation.
Definition: AnimInstanceBase.h:66
bool HasAttachmentMatrix(int nAttachmentID)
Get the specified attachment matrix of the current model.
Definition: ParaXAnimInstance.cpp:471
different physics engine has different winding order.
Definition: EventBinding.h:32
virtual int GetTime()
get the current local time in case it is animated in milli seconds frames.
Definition: ParaXAnimInstance.cpp:47
virtual HRESULT Draw(SceneState *sceneState, const Matrix4 *mxWorld, CParameterBlock *params=NULL)
Render the model with its current settings.
Definition: ParaXAnimInstance.cpp:751
bool ResetBaseModel(ParaXEntity *pModel)
reset the base model
Definition: ParaXAnimInstance.cpp:178
character animation instance: it includes both the animation and model display information.
Definition: CustomCharModelInstance.h:17
virtual int InstallFields(CAttributeClass *pClass, bool bOverride)
this class should be implemented if one wants to add new attribute.
Definition: ParaXAnimInstance.cpp:959
virtual void AdvanceTime(double dTimeDelta)
Advance the animation by a time delta in second.
Definition: ParaXAnimInstance.cpp:480
virtual void ResetAnimation()
reset the animation and blending animation.
Definition: ParaXAnimInstance.cpp:164
Fixed model is a model which is not customizable, but can contain a list of animations to play such a...
Definition: ParaXAnimInstance.h:51
virtual int GetAnimFrame()
get the current animation frame number relative to the beginning of current animation.
Definition: ParaXAnimInstance.cpp:94
void SetIdleAnimationID(int nID)
the current idle animation ID.
Definition: ParaXAnimInstance.cpp:105
LightParams is a structure for which a shadow volume is built.
Definition: ShadowVolume.h:8
virtual void GetCurrentSize(float *fWidth, float *fDepth)
normally this will read the radius of the current animation and calculate the correct size after scal...
Definition: ParaXAnimInstance.cpp:794
virtual void SetUseGlobalTime(bool bUseGlobalTime)
whether to use global time to sync animation.
Definition: ParaXAnimInstance.cpp:63
virtual void GetCurrentRadius(float *fRadius)
normally this will read the radius of the current animation and calculate the correct size after scal...
Definition: ParaXAnimInstance.cpp:772
Matrix4 * GetAttachmentMatrix(Matrix4 *pOut, int nAttachmentID, int nRenderNumber)
Get the specified attachment matrix of the current model.
Definition: ParaXAnimInstance.cpp:434
virtual IAttributeFields * GetChildAttributeObject(const std::string &sName)
get attribute by child object.
Definition: ParaXAnimInstance.cpp:910
the character model is a fully customizable model for human shaped animation model one can change the...
Definition: ParaXAnimInstance.h:48
virtual int GetValidAnimID(int nAnimID)
look for a valid animation ID for nAnimID.
Definition: ParaXAnimInstance.cpp:129
unsigned short m_nCurrentIdleAnimationID
the current idle animation ID.
Definition: ParaXAnimInstance.h:214
virtual void GetSpeedOf(const char *sName, float *fSpeed)
normally this will read the move speed of the specified animation and calculate the correct(scaled) s...
Definition: ParaXAnimInstance.cpp:843
The ref_ptr class template stores a pointer to a dynamically allocated (AssetEntity|CRefCounted|BaseA...
Definition: PERefPtr.h:13
Class encapsulating a standard 4x4 homogeneous matrix.
Definition: ParaMatrix4.h:23
Definition: ParaXEntity.h:9
virtual void LoadAnimationByIndex(const AnimIndex &nAnimIndex, bool bAppend=false)
Definition: ParaXAnimInstance.cpp:201
it presents a given in bone animation providers or parax local model bone animation pools ...
Definition: AnimInstanceBase.h:13
virtual void LoadAnimation(const char *sName, float *fSpeed, bool bAppend=false)
Play or append the specified animation.
Definition: ParaXAnimInstance.cpp:420
A common interface for all classes implementing IAttributeFields By implementing this class&#39;s virtual...
Definition: IAttributeFields.h:59
virtual bool HasAlphaBlendedObjects()
return true if the object contains alpha blended render pass.
Definition: ParaXAnimInstance.cpp:260
CharModelInstance * GetCharModel()
Get the character model instance.
Definition: ParaXAnimInstance.cpp:115
AnimIndex m_BlendingAnim
the animation sequence with which the current animation should be blended.
Definition: ParaXAnimInstance.h:206
virtual void SetBlendingFactor(float fBlendingFactor)
set the blending factor between the current and blend animation.
Definition: ParaXAnimInstance.cpp:57
virtual bool HasAnimation(int nAnimID)
whether an animation id exist.
Definition: ParaXAnimInstance.cpp:274
void Init(ParaXEntity *pModel)
init the animation instance.
Definition: ParaXAnimInstance.cpp:124
virtual int GetCurrentAnimation()
get the ID of the current animation.
Definition: ParaXAnimInstance.cpp:244
virtual bool HasAnimId(int nAnimID)
check to see if the underlying model has a given animation id.
Definition: ParaXAnimInstance.cpp:150
virtual void Animate(double dTimeDelta, int nRenderNumber=0)
animate the model.
Definition: ParaXAnimInstance.cpp:670
virtual bool IsUseGlobalTime()
whether to use global time to sync animation.
Definition: ParaXAnimInstance.cpp:68
virtual void SetAnimFrame(int nFrame)
set the current animation frame number relative to the beginning of current animation.
Definition: ParaXAnimInstance.cpp:73
virtual int GetChildAttributeObjectCount(int nColumnIndex=0)
get the number of child objects (row count) in the given column.
Definition: ParaXAnimInstance.cpp:935
ParaXEntity * GetAnimModel()
get the animation model
Definition: ParaXAnimInstance.cpp:903
AnimIndex m_CurrentAnim
current animation index, this is different from sequence ID an absolute ParaX frame number denoting t...
Definition: ParaXAnimInstance.h:196
virtual int GetChildAttributeColumnCount()
we support multi-dimensional child object.
Definition: ParaXAnimInstance.cpp:954
virtual void GetCurrentSpeed(float *fSpeed)
normally this will read the move speed of the current animation and calculate the correct(scaled) spe...
Definition: ParaXAnimInstance.cpp:818
float m_fBlendingFactor
by how much the blending frame should be blended with the current frame.
Definition: ParaXAnimInstance.h:211
bool UpdateModel(SceneState *sceneState=NULL)
update model according to current animation data and time
Definition: ParaXAnimInstance.cpp:681
this is primary animation instance used for normal animated character or advanced customizable charac...
Definition: ParaXAnimInstance.h:13
virtual bool UpdateWorldTransform(SceneState *sceneState, Matrix4 &out, const Matrix4 &mxWorld)
update world transform by applying local size scale.
Definition: ParaXAnimInstance.cpp:730
virtual void BuildShadowVolume(SceneState *sceneState, ShadowVolume *pShadowVolume, LightParams *pLight, Matrix4 *mxWorld)
shadow volume
Definition: ParaXAnimInstance.cpp:650
bool HasMountPoint(int nMountPointID=0)
whether the character has a mount point at the given ID.
Definition: ParaXAnimInstance.cpp:110
int GetIdleAnimationID()
Definition: ParaXAnimInstance.cpp:99
Definition: ParaXAnimInstance.h:37
a list of CParameter{name, value} pairs of anything.
Definition: ParameterBlock.h:108
short m_nCustomStandingAnimCount
the number of custom animations.
Definition: ParaXAnimInstance.h:217