实体
动画 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;复杂链查头文件与逆向笔记。