19class AnmObjShp :
public AnmObj {
21 AnmObjShp(
MEMAllocator* pAllocator, u16* pBindingBuf,
int numBinding);
22 virtual void G3dProc(ulong task, ulong param,
void* pInfo) = 0;
23 virtual ~AnmObjShp() {}
25 virtual void SetFrame(f32 frame) = 0;
26 virtual f32 GetFrame()
const = 0;
27 virtual void UpdateFrame() = 0;
29 virtual void SetUpdateRate(f32 rate) = 0;
30 virtual f32 GetUpdateRate()
const = 0;
32 virtual bool Bind(
const ResMdl mdl) = 0;
33 virtual void Release();
40 virtual void DetachAll();
42 virtual void SetWeight(
int idx, f32 weight);
43 virtual f32 GetWeight(
int idx)
const;
45 bool TestExistence(ulong idx)
const;
46 bool TestDefined(ulong idx)
const;
50 BINDING_ID_MASK = (1 << 14) - 1,
51 BINDING_INVALID = (1 << 14),
52 BINDING_UNDEFINED = (1 << 15),
56 static const int DEFAULT_MAX_CHILDREN = 4;
62 NW4R_G3D_RTTI_DECL_DERIVED(AnmObjShp, AnmObj);
103class AnmObjShpBlend :
public AnmObjShpNode {
104 static AnmObjShpBlend* Construct(
MEMAllocator* pAllocator, ulong* pSize,
105 ResMdl mdl,
int numChildren);
107 AnmObjShpBlend(
MEMAllocator* pAllocator, u16* pBindingBuf,
int numBinding,
111 virtual ~AnmObjShpBlend() {}
116 virtual void SetWeight(
int idx, f32 weight);
117 virtual f32 GetWeight(
int idx)
const;
122 NW4R_G3D_RTTI_DECL_DERIVED(AnmObjShpBlend, AnmObjShpNode);
130class AnmObjShpRes :
public AnmObjShp,
protected FrameCtrl {
132 static AnmObjShpRes* Construct(
MEMAllocator* pAllocator, ulong* pSize,
138 virtual void G3dProc(ulong task, ulong param,
void* pInfo);
139 virtual ~AnmObjShpRes() {}
141 virtual void SetFrame(f32 frame);
142 virtual f32 GetFrame()
const;
143 virtual void UpdateFrame();
145 virtual void SetUpdateRate(f32 rate);
146 virtual f32 GetUpdateRate()
const;
148 virtual bool Bind(
const ResMdl mdl);
159 void SetPlayPolicy(PlayPolicyFunc pFunc) {
160 FrameCtrl::SetPlayPolicy(pFunc);
168 NW4R_G3D_RTTI_DECL_DERIVED(AnmObjShpRes, AnmObjShp);