实体

动画 CAnimManager

动画块混合与关联

CAnimManager.h

动画块与混合。逻辑帧 / 任务侧用;渲染钩子里改要小心。

取动画块

GetAnimationBlock / GetAnimationBlockIndex
static CAnimBlock* GetAnimationBlock(char const* name);
static int GetAnimationBlockIndex(char const* name);
static int RegisterAnimBlock(char const* name);

取动画层级

GetAnimation

按名或 hash。

static CAnimBlendHierarchy* GetAnimation(char const* animName, CAnimBlock const* ifp);
static CAnimBlendHierarchy* GetAnimation(unsigned int hash, CAnimBlock const* ifp);

加动画到 clump

AddAnimation / BlendAnimation

AssocGroupId / AnimationId 见动画枚举。

static CAnimBlendAssociation* AddAnimation(RpClump* clump, int AssocGroupId, int AnimationId);
static CAnimBlendAssociation* AddAnimation(RpClump* clump, CAnimBlendHierarchy* pAnimBlendHier, int clumpAssocFlag);
static CAnimBlendAssociation* BlendAnimation(RpClump* clump, int AssocGroupId, int AnimationId, float clumpAssocBlendData);
static CAnimBlendAssociation* BlendAnimation(RpClump* clump, CAnimBlendHierarchy* pAnimBlendHier, int flags, float clumpAssocBlendData);

关联定义

CreateAnimAssociation / GetAnimAssociation
static CAnimBlendAssociation* CreateAnimAssociation(int AssocGroupId, int AnimationId);
static CAnimBlendStaticAssociation* GetAnimAssociation(int AssocGroupId, int AnimationId);

动画块引用

AddAnimBlockRef / RemoveAnimBlockRef
static void AddAnimBlockRef(int index);
static void RemoveAnimBlockRef(int index);
static int GetNumRefsToAnimBlock(int index);

全局表

ms_aAnimBlocks / ms_aAnimations
static CAnimBlock* ms_aAnimBlocks;
static CAnimBlendHierarchy* ms_aAnimations;
static int& ms_numAnimBlocks;

加载 ifp 还涉及 LoadAnimFile / Streaming;复杂链查头文件与逆向笔记。

On this page