1#ifndef NW4R_G3D_RES_RES_ANM_H
2#define NW4R_G3D_RES_RES_ANM_H
3#include <nw4r/types_nw4r.h>
21 u8 PADDING_0x2[0x4 - 0x2];
37enum AnmPolicy { ANM_POLICY_ONETIME, ANM_POLICY_LOOP, ANM_POLICY_MAX };
41 s32 toResKeyFrameAnmData;
46inline f32 GetResAnmResult(
const ResAnmData* pData, f32 frame,
bool constant) {
48 return pData->constValue;
51 const ResKeyFrameAnmData* pFrameData =
52 reinterpret_cast<const ResKeyFrameAnmData*
>(
53 reinterpret_cast<const char*
>(pData) + pData->toResKeyFrameAnmData);
55 return GetResKeyFrameAnmResult(pFrameData, frame);
58template <
typename T>
inline f32 ClipFrame(
const T& rInfo, f32 frame) {
63 if (rInfo.numFrame <= frame) {
64 return rInfo.numFrame;
79 s32 toResColorAnmFramesData;
89inline ulong GetResColorAnmResult(
const ResColorAnmData* pData, f32 frame,
92 return pData->constValue;
95 const ResColorAnmFramesData* pFrameData =
96 reinterpret_cast<const ResColorAnmFramesData*
>(
97 reinterpret_cast<const char*
>(pData) +
98 pData->toResColorAnmFramesData);
100 return GetResColorAnmResult(pFrameData, frame);
111 s32 toResBoolAnmFramesData;
121 const ulong* pBits = pData->boolBits;
122 ulong index =
static_cast<ulong
>(frame);
124 ulong wordIdx = index / 32;
125 ulong bitIdx = index % 32;
127 ulong targetBit = (1U << 31) >> bitIdx;
128 ulong bitWord = pBits[wordIdx];
130 return bitWord & targetBit;
133inline bool GetResBoolAnmResult(
const ResBoolAnmData* pData,
int frame) {
134 const ResBoolAnmFramesData* pFrameData =
135 reinterpret_cast<const ResBoolAnmFramesData*
>(
136 reinterpret_cast<const char*
>(pData) +
137 pData->toResBoolAnmFramesData);
139 return GetResBoolAnmFramesResult(pFrameData, frame);
3D graphics drawing library.