1#ifndef NW_G3D_ANIMOBJ_H_
2#define NW_G3D_ANIMOBJ_H_
4#include <nw/g3d/g3d_config.h>
5#include <nw/g3d/math/g3d_MathCommon.h>
6#include <nw/g3d/res/g3d_ResAnimCurve.h>
7#include <nw/g3d/res/g3d_Binding.h>
8#include <nw/g3d/g3d_Sizer.h>
9#include <nw/g3d/ut/g3d_Flag.h>
13namespace nw {
namespace g3d {
27 float inputFrame,
float startFrame,
float endFrame,
void* pUserPtr);
31 void Init(
float startFrame,
float endFrame,
PlayPolicy pPlayPolicy);
89float PlayPolicy_Onetime(
float inputFrame,
float startFrame,
float endFrame,
void* pUserData);
91float PlayPolicy_Loop(
float inputFrame,
float startFrame,
float endFrame,
void* pUserData);
122 void Init(
bit32* pBindArray,
int tableSize);
127 m_NumAnim =
static_cast<u16>(animCount);
138 void BindAll(
const u16* pBindIndexArray);
140 void Bind(
int animIndex,
int targetIndex)
150 void Unbind(
int animIndex,
int targetIndex)
238 NW_G3D_WARNING(m_pFrameCacheArray == NULL || curveCount <= m_Size,
239 "Too many curves to store context.\n");
249 for (
int idxCurve = 0; idxCurve <
m_NumCurve; ++idxCurve)
294 m_pFrameCtrl = pFrameCtrl != NULL ? pFrameCtrl : &m_DefaultFrameCtrl;
Definition g3d_AnimObj.h:94
void SetBindFlag(int animIndex, BindFlag flag)
Definition g3d_AnimObj.h:207
void BindAll(const u16 *pBindIndexArray)
Definition g3d_AnimObj.cpp:95
bool IsApplyEnabled(int animIndex) const
Definition g3d_AnimObj.h:183
void Unbind(int animIndex, int targetIndex)
Definition g3d_AnimObj.h:150
int GetTargetIndex(int animIndex) const
Definition g3d_AnimObj.h:159
bit32 * m_pBindArray
Definition g3d_AnimObj.h:220
bit16 m_Flag
Definition g3d_AnimObj.h:221
bool IsTargetBound() const
Definition g3d_AnimObj.h:175
int GetTargetCount() const
Definition g3d_AnimObj.h:134
void SetTargetUnbound()
Definition g3d_AnimObj.h:173
bool IsCalcEnabled(int animIndex) const
Definition g3d_AnimObj.h:177
int GetAnimCount() const
Definition g3d_AnimObj.h:132
void SetBindFlagRaw(int animIndex, bit32 flag)
Definition g3d_AnimObj.h:212
int GetAnimIndex(int targetIndex) const
Definition g3d_AnimObj.h:165
u16 m_Size
Definition g3d_AnimObj.h:222
BindFlag GetBindFlag(int animIndex) const
Definition g3d_AnimObj.h:201
u16 m_NumTarget
Definition g3d_AnimObj.h:224
BindFlag
Definition g3d_AnimObj.h:97
@ SKIP_CALC
Definition g3d_AnimObj.h:99
@ DISABLED
Definition g3d_AnimObj.h:101
@ ENABLED
Definition g3d_AnimObj.h:98
@ SKIP_APPLY
Definition g3d_AnimObj.h:100
bool IsDisabled(int animIndex) const
Definition g3d_AnimObj.h:195
void ClearAll(int targetCount)
Definition g3d_AnimObj.cpp:84
Flag
Definition g3d_AnimObj.h:105
@ REVERSE_SHIFT
Definition g3d_AnimObj.h:108
@ FLAG_SKIP_CALC
Definition g3d_AnimObj.h:113
@ NOT_BOUND
Definition g3d_AnimObj.h:106
@ REVERSE_NOT_BOUND
Definition g3d_AnimObj.h:109
@ FLAG_MASK
Definition g3d_AnimObj.h:116
@ FLAG_SKIP_APPLY
Definition g3d_AnimObj.h:114
@ FLAG_SHIFT
Definition g3d_AnimObj.h:111
@ INDEX_MASK
Definition g3d_AnimObj.h:107
@ FLAG_DISABLED
Definition g3d_AnimObj.h:115
@ FLAG_ENABLED
Definition g3d_AnimObj.h:112
@ REVERSE_INDEX_MASK
Definition g3d_AnimObj.h:110
@ TARGET_BOUND
Definition g3d_AnimObj.h:117
u16 m_NumAnim
Definition g3d_AnimObj.h:223
void SetAnimCount(int animCount)
Definition g3d_AnimObj.h:124
void SetTargetBound()
Definition g3d_AnimObj.h:171
void Bind(int animIndex, int targetIndex)
Definition g3d_AnimObj.h:140
int GetSize() const
Definition g3d_AnimObj.h:130
bool IsEnabled(int animIndex) const
Definition g3d_AnimObj.h:189
void Init(bit32 *pBindArray, int tableSize)
Definition g3d_AnimObj.cpp:74
AnimBindTable()
Definition g3d_AnimObj.h:120
Definition g3d_AnimObj.h:230
int m_Size
Definition g3d_AnimObj.h:268
float m_LastFrame
Definition g3d_AnimObj.h:270
void Init(AnimFrameCache *pFrameCacheArray, int arraySize)
Definition g3d_AnimObj.cpp:109
int GetCurveCount() const
Definition g3d_AnimObj.h:256
void SetCurveCount(int curveCount)
Definition g3d_AnimObj.h:236
void SetLastFrame(float frame)
Definition g3d_AnimObj.h:262
bool IsFrameCacheValid() const
Definition g3d_AnimObj.h:258
float GetLastFrame() const
Definition g3d_AnimObj.h:264
void Reset()
Definition g3d_AnimObj.h:244
AnimFrameCache * GetFrameCacheArray(int startIndex)
Definition g3d_AnimObj.h:260
int m_NumCurve
Definition g3d_AnimObj.h:269
AnimFrameCache * m_pFrameCacheArray
Definition g3d_AnimObj.h:267
AnimContext()
Definition g3d_AnimObj.h:232
Definition g3d_AnimObj.h:24
void SetPlayPolicy(PlayPolicy policy)
Definition g3d_AnimObj.h:60
float m_EndFrame
Definition g3d_AnimObj.h:81
void * GetUserPtr()
Definition g3d_AnimObj.h:66
float GetEndFrame() const
Definition g3d_AnimObj.h:54
float m_Frame
Definition g3d_AnimObj.h:79
float m_StartFrame
Definition g3d_AnimObj.h:80
void SetFrame(float frame)
Definition g3d_AnimObj.h:38
float GetStep() const
Definition g3d_AnimObj.h:58
const void * GetUserPtr() const
Definition g3d_AnimObj.h:68
void Init(float startFrame, float endFrame, PlayPolicy pPlayPolicy)
Definition g3d_AnimObj.cpp:19
void UpdateFrame()
Definition g3d_AnimObj.h:33
PlayPolicy GetPlayPolicy() const
Definition g3d_AnimObj.h:62
void SetStep(float step)
Definition g3d_AnimObj.h:56
void * m_pUserPtr
Definition g3d_AnimObj.h:84
AnimFrameCtrl()
Definition g3d_AnimObj.cpp:9
float(* PlayPolicy)(float inputFrame, float startFrame, float endFrame, void *pUserPtr)
Definition g3d_AnimObj.h:26
static const float INVALID_FRAME
Definition g3d_AnimObj.h:76
float GetStartFrame() const
Definition g3d_AnimObj.h:52
void SetUserPtr(void *pUserPtr)
Definition g3d_AnimObj.h:64
void SetFrameRange(float start, float end)
Definition g3d_AnimObj.h:45
float GetFrame() const
Definition g3d_AnimObj.h:43
const T * GetUserPtr() const
Definition g3d_AnimObj.h:74
T * GetUserPtr()
Definition g3d_AnimObj.h:71
float m_Step
Definition g3d_AnimObj.h:82
PlayPolicy m_pPlayPolicy
Definition g3d_AnimObj.h:83
Definition g3d_AnimObj.h:276
void SetBufferPtr(void *pBuffer)
Definition g3d_AnimObj.h:318
void * m_pResultBuffer
Definition g3d_AnimObj.h:336
AnimContext & GetContext()
Definition g3d_AnimObj.h:301
void * m_pBufferPtr
Definition g3d_AnimObj.h:337
const AnimContext & GetContext() const
Definition g3d_AnimObj.h:303
void SetResultBuffer(void *pBuffer)
Definition g3d_AnimObj.h:320
const AnimFrameCtrl & GetDefaultFrameCtrl() const
Definition g3d_AnimObj.h:299
AnimFrameCtrl & GetFrameCtrl()
Definition g3d_AnimObj.h:288
AnimFrameCtrl & GetDefaultFrameCtrl()
Definition g3d_AnimObj.h:297
const AnimFrameCtrl & GetFrameCtrl() const
Definition g3d_AnimObj.h:290
void SetFrameCtrl(AnimFrameCtrl *pFrameCtrl)
Definition g3d_AnimObj.h:292
AnimFrameCtrl * m_pFrameCtrl
Definition g3d_AnimObj.h:333
void * GetResultBuffer()
Definition g3d_AnimObj.h:322
virtual ~AnimObj()
Definition g3d_AnimObj.h:286
AnimObj()
Definition g3d_AnimObj.cpp:116
AnimContext m_Context
Definition g3d_AnimObj.h:335
BindFlag
Definition g3d_AnimObj.h:279
@ SKIP_CALC
Definition g3d_AnimObj.h:281
@ DISABLED
Definition g3d_AnimObj.h:283
@ SKIP_APPLY
Definition g3d_AnimObj.h:282
@ ENABLED
Definition g3d_AnimObj.h:280
void UpdateLastFrame()
Definition g3d_AnimObj.h:330
void InvalidateContext()
Definition g3d_AnimObj.h:305
int GetCurveCount() const
Definition g3d_AnimObj.h:311
void * GetBufferPtr()
Definition g3d_AnimObj.h:313
void ResetFrameCtrl(int frameCount, bool loop)
Definition g3d_AnimObj.cpp:121
const void * GetResultBuffer() const
Definition g3d_AnimObj.h:324
virtual void ClearResult()=0
bool IsFrameChanged() const
Definition g3d_AnimObj.h:328
AnimFrameCtrl m_DefaultFrameCtrl
Definition g3d_AnimObj.h:334
Definition g3d_AnimObj.h:343
ModelAnimObj()
Definition g3d_AnimObj.h:364
virtual void BindFast(const ResModel *pModel)=0
int GetAnimCount() const
Definition g3d_AnimObj.h:359
AnimBindTable & GetBindTable()
Definition g3d_AnimObj.h:351
const AnimBindTable & GetBindTable() const
Definition g3d_AnimObj.h:353
virtual BindResult Bind(const ResModel *pModel)=0
bool IsTargetBound() const
Definition g3d_AnimObj.h:355
virtual BindResult Bind(const ModelObj *pModel)=0
AnimBindTable m_BindTable
Definition g3d_AnimObj.h:381
virtual void ApplyTo(ModelObj *pModelObj) const =0
BindFlag GetBindFlagImpl(int targetIndex) const
void SetBindFlagImpl(int targetIndex, BindFlag flag)
int GetTargetCount() const
Definition g3d_AnimObj.h:361
void SetTargetBound()
Definition g3d_AnimObj.h:366
void SetTargetUnbound()
Definition g3d_AnimObj.h:372
Definition g3d_ModelObj.h:15
Definition g3d_Binding.h:16
Definition g3d_ResModel.h:38
#define NW_G3D_ASSERT_INDEX_BOUNDS(index, size)
Definition g3d_assert.h:23
#define NW_G3D_ASSERT(exp)
Definition g3d_assert.h:17
#define NW_G3D_WARNING(exp,...)
Definition g3d_assert.h:54
#define NW_G3D_DISALLOW_COPY_AND_ASSIGN(TypeName)
Definition g3d_defs.h:81
u16 bit16
Definition g3d_defs.h:130
u32 bit32
Definition g3d_defs.h:131
Definition g3d_defs.h:122
Definition g3d_GfxManage.cpp:10
float PlayPolicy_Loop(float inputFrame, float startFrame, float endFrame, void *)
Definition g3d_AnimObj.cpp:44
float PlayPolicy_Onetime(float inputFrame, float startFrame, float endFrame, void *)
Definition g3d_AnimObj.cpp:28
Definition g3d_ResAnimCurve.h:25
float start
Definition g3d_ResAnimCurve.h:26