1#ifndef NW_G3D_RES_RESANIMCURVE_H_
2#define NW_G3D_RES_RESANIMCURVE_H_
4#include <nw/g3d/g3d_config.h>
5#include <nw/g3d/math/g3d_MathCommon.h>
6#include <nw/g3d/res/g3d_ResCommon.h>
10namespace nw {
namespace g3d {
namespace res {
46 float GetFloat()
const {
return ref().fValue; }
47 int GetInt()
const {
return ref().iValue; }
117
118
119
120
121
122
123
124
125
126
127
128
133 frameCache
.start = std::numeric_limits<
float>::infinity();
140 frameCache
.start = std::numeric_limits<
float>::infinity();
167 template <
typename T>
170 template <
typename T>
173 template <
typename T>
176 template <
typename T>
179 template <
typename T>
182 template <
typename T>
189 template <
typename T>
190 void BakeImpl(
void* pBuffer,
float start,
int numKey);
196 return FastCast<
float>(value) * (1.0f / 32.0f);
202 return Math::Floor<s16>(value * 32.0f);
206float CalcCubic(
float t,
float c0,
float c1,
float c2,
float c3)
208 return ((c3 * t + c2) * t) * t + (c1 * t + c0);
222 float Get()
const {
return FastCast<
float>(
frame); }
234 static float Quantize(
float frame) {
return frame; }
252 float Get(
float ratio)
const
255 static_cast<
float>(
coef[2])
, static_cast<
float>(
coef[3])
);
264 float Get(
float ratio)
const
275 float Get()
const {
return StaticCast<
float>(
value); }
283 int Get()
const {
return static_cast<
int>(
value); }
286#if defined( __ghs__ )
Definition g3d_MathCommon.h:9
Definition g3d_ResCommon.h:62
Definition g3d_ResAnimCurve.h:42
float GetFloat() const
Definition g3d_ResAnimCurve.h:46
int GetInt() const
Definition g3d_ResAnimCurve.h:47
Definition g3d_ResAnimCurve.cpp:10
Definition g3d_ResAnimCurve.h:73
bool IsFloatCurve() const
Definition g3d_ResAnimCurve.h:147
Flag
Definition g3d_ResAnimCurve.h:78
@ KEY_MASK
Definition g3d_ResAnimCurve.h:90
@ CURVE_BAKED_BOOL
Definition g3d_ResAnimCurve.h:100
@ CURVE_CUBIC
Definition g3d_ResAnimCurve.h:94
@ CURVE_SHIFT
Definition g3d_ResAnimCurve.h:93
@ CURVE_INT_BASE
Definition g3d_ResAnimCurve.h:101
@ KEY_SHIFT
Definition g3d_ResAnimCurve.h:86
@ CURVE_MASK
Definition g3d_ResAnimCurve.h:102
@ CURVE_BAKED_INT
Definition g3d_ResAnimCurve.h:98
@ NUM_FRAME
Definition g3d_ResAnimCurve.h:84
@ KEY16
Definition g3d_ResAnimCurve.h:88
@ CURVE_BAKED_FLOAT
Definition g3d_ResAnimCurve.h:96
@ FRAME16
Definition g3d_ResAnimCurve.h:81
@ CURVE_STEP_BOOL
Definition g3d_ResAnimCurve.h:99
@ FRAME8
Definition g3d_ResAnimCurve.h:82
@ NUM_KEY
Definition g3d_ResAnimCurve.h:91
@ FRAME_MASK
Definition g3d_ResAnimCurve.h:83
@ CURVE_LINEAR
Definition g3d_ResAnimCurve.h:95
@ FRAME32
Definition g3d_ResAnimCurve.h:80
@ CURVE_STEP_INT
Definition g3d_ResAnimCurve.h:97
@ KEY8
Definition g3d_ResAnimCurve.h:89
@ KEY32
Definition g3d_ResAnimCurve.h:87
@ FRAME_SHIFT
Definition g3d_ResAnimCurve.h:79
float GetEndFrame() const
Definition g3d_ResAnimCurve.h:154
int EvalInt(float frame, AnimFrameCache *pFrameCache) const
Definition g3d_ResAnimCurve.cpp:76
float EvalFloat(float frame) const
Definition g3d_ResAnimCurve.h:130
bool IsIntCurve() const
Definition g3d_ResAnimCurve.h:148
int EvalStepBool(float frame, AnimFrameCache *pFrameCache) const
Definition g3d_ResAnimCurve.cpp:267
bit32 GetCurveType() const
Definition g3d_ResAnimCurve.h:161
int EvalStepInt(float frame, AnimFrameCache *pFrameCache) const
Definition g3d_ResAnimCurve.cpp:246
void UpdateFrameCache(AnimFrameCache *pFrameCache, float frame) const
Definition g3d_ResAnimCurve.cpp:147
WrapMode
Definition g3d_ResAnimCurve.h:106
@ WRAP_MIRROR
Definition g3d_ResAnimCurve.h:109
@ WRAP_REPEAT
Definition g3d_ResAnimCurve.h:108
@ WRAP_PRE_SHIFT
Definition g3d_ResAnimCurve.h:112
@ WRAP_MASK
Definition g3d_ResAnimCurve.h:111
@ WRAP_POST_SHIFT
Definition g3d_ResAnimCurve.h:113
@ WRAP_CLAMP
Definition g3d_ResAnimCurve.h:107
float WrapFrame(float frame) const
Definition g3d_ResAnimCurve.cpp:88
float EvalLinear(float frame, AnimFrameCache *pFrameCache) const
Definition g3d_ResAnimCurve.cpp:217
float EvalBakedFloat(float frame, AnimFrameCache *pFrameCache) const
Definition g3d_ResAnimCurve.cpp:231
void FindFrame(AnimFrameCache *pFrameCache, float frame) const
Definition g3d_ResAnimCurve.cpp:161
void BakeImpl(void *pBuffer, float start, int numKey)
int EvalBakedInt(float frame, AnimFrameCache *pFrameCache) const
Definition g3d_ResAnimCurve.cpp:256
WrapMode GetPreWrapMode() const
Definition g3d_ResAnimCurve.h:150
float EvalFloat(float frame, AnimFrameCache *pFrameCache) const
Definition g3d_ResAnimCurve.cpp:64
int EvalInt(float frame) const
Definition g3d_ResAnimCurve.h:137
bit32 GetFrameType() const
Definition g3d_ResAnimCurve.h:159
WrapMode GetPostWrapMode() const
Definition g3d_ResAnimCurve.h:151
float GetStartFrame() const
Definition g3d_ResAnimCurve.h:153
bit32 GetKeyType() const
Definition g3d_ResAnimCurve.h:160
float EvalCubic(float frame, AnimFrameCache *pFrameCache) const
Definition g3d_ResAnimCurve.cpp:203
int EvalBakedBool(float frame, AnimFrameCache *pFrameCache) const
Definition g3d_ResAnimCurve.cpp:276
#define NW_G3D_RES_COMMON(class_name)
Definition g3d_ResCommon.h:30
#define NW_G3D_FORCE_INLINE
Definition g3d_defs.h:66
u16 bit16
Definition g3d_defs.h:130
u32 bit32
Definition g3d_defs.h:131
Definition g3d_defs.h:122
NW_G3D_FORCE_INLINE float CalcCubic(float t, float c0, float c1, float c2, float c3)
Definition g3d_ResAnimCurve.h:206
NW_G3D_FORCE_INLINE float CastS10_5ToF32(s16 value)
Definition g3d_ResAnimCurve.h:194
NW_G3D_FORCE_INLINE float CalcLinear(float t, float c0, float c1)
Definition g3d_ResAnimCurve.h:212
NW_G3D_FORCE_INLINE s16 CastF32ToS10_5(float value)
Definition g3d_ResAnimCurve.h:200
Definition g3d_GfxManage.cpp:10
Definition g3d_ResAnimCurve.h:13
@ NOT_BOUND
Definition g3d_ResAnimCurve.h:20
@ PLAYPOLICY_LOOP
Definition g3d_ResAnimCurve.h:18
@ CURVE_BAKED
Definition g3d_ResAnimCurve.h:16
Definition g3d_ResAnimCurve.h:25
float start
Definition g3d_ResAnimCurve.h:26
int keyIndex
Definition g3d_ResAnimCurve.h:28
float end
Definition g3d_ResAnimCurve.h:27
Definition g3d_ResAnimCurve.h:229
float Get() const
Definition g3d_ResAnimCurve.h:232
static float Quantize(float frame)
Definition g3d_ResAnimCurve.h:234
float frame
Definition g3d_ResAnimCurve.h:230
Definition g3d_ResAnimCurve.h:219
T frame
Definition g3d_ResAnimCurve.h:220
float Get() const
Definition g3d_ResAnimCurve.h:222
static T Quantize(float frame)
Definition g3d_ResAnimCurve.h:224
Definition g3d_ResAnimCurve.h:32
f32 fValue
Definition g3d_ResAnimCurve.h:36
u32 targetOffset
Definition g3d_ResAnimCurve.h:33
s32 iValue
Definition g3d_ResAnimCurve.h:37
Definition g3d_ResAnimCurve.h:51
f32 startFrame
Definition g3d_ResAnimCurve.h:55
s32 iOffset
Definition g3d_ResAnimCurve.h:65
Offset ofsKeyArray
Definition g3d_ResAnimCurve.h:69
f32 fScale
Definition g3d_ResAnimCurve.h:59
u16 numKey
Definition g3d_ResAnimCurve.h:53
Offset ofsFrameArray
Definition g3d_ResAnimCurve.h:68
bit16 flag
Definition g3d_ResAnimCurve.h:52
f32 fOffset
Definition g3d_ResAnimCurve.h:64
u32 targetOffset
Definition g3d_ResAnimCurve.h:54
f32 endFrame
Definition g3d_ResAnimCurve.h:56
s32 iScale
Definition g3d_ResAnimCurve.h:60
Definition g3d_ResAnimCurve.h:249
T coef[4]
Definition g3d_ResAnimCurve.h:250
float Get(float ratio) const
Definition g3d_ResAnimCurve.h:252
Definition g3d_ResAnimCurve.h:272
float Get() const
Definition g3d_ResAnimCurve.h:275
T value
Definition g3d_ResAnimCurve.h:273
Definition g3d_ResAnimCurve.h:280
int Get() const
Definition g3d_ResAnimCurve.h:283
T value
Definition g3d_ResAnimCurve.h:281
Definition g3d_ResAnimCurve.h:261
float Get(float ratio) const
Definition g3d_ResAnimCurve.h:264
T coef[2]
Definition g3d_ResAnimCurve.h:262