NW4F G3d
Loading...
Searching...
No Matches
g3d_SceneAnimObj.h
Go to the documentation of this file.
1#ifndef NW_G3D_SCENEANIMOBJ_H_
2#define NW_G3D_SCENEANIMOBJ_H_
3
4#include <nw/g3d/g3d_config.h>
5#include <nw/g3d/g3d_AnimObj.h>
6#include <nw/g3d/res/g3d_ResSceneAnim.h>
7
8namespace nw { namespace g3d {
9
10class SceneAnimObj : public AnimObj
11{
12public:
13 void SetUserPtr(void* pUserPtr) { m_pUserPtr = pUserPtr; }
14
15 void* GetUserPtr() { return m_pUserPtr; }
16
17 const void* GetUserPtr() const { return m_pUserPtr; }
18
19 template <typename T>
20 T* GetUserPtr() { return static_cast<T*>(m_pUserPtr); }
21
22 template <typename T>
23 const T* GetUserPtr() const { return static_cast<const T*>(m_pUserPtr); }
24
25protected:
27
28private:
30
32};
33
35{
36public:
37 class InitArg;
38
40 {
42 };
43
45
46 bool Init(const InitArg& arg, void* pBuffer, size_t bufferSize);
47
48 static size_t CalcBufferSize(const InitArg& arg);
49
50 virtual void ClearResult();
51 virtual void Calc();
52
53 const ResCameraAnim* GetResource() const { return m_pRes; };
54
55 void SetResource(ResCameraAnim* pRes);
56
57 void ResetResource() { m_pRes = NULL; }
58
60 {
61 return static_cast<CameraAnimResult*>(GetResultBuffer());
62 }
63
65 {
66 return static_cast<const CameraAnimResult*>(GetResultBuffer());
67 }
68
70
72
73private:
74 class Sizer;
76
78};
79
80class CameraAnimObj::Sizer : public nw::g3d::Sizer
81{
82public:
84
85 void Calc(const InitArg& arg);
86
87 enum
88 {
92 };
93
95};
96
98{
99public:
101
102 void Clear()
103 {
104 m_NumCurve = -1;
105 m_ContextEnabled = true;
106 m_ContextAvailable = false;
107 }
108
109 void Reserve(const ResCameraAnim* pResAnim)
110 {
111 NW_G3D_ASSERT_NOT_NULL(pResAnim);
112 m_NumCurve = std::max(m_NumCurve, pResAnim->GetCurveCount());
114 m_Sizer.Invalidate();
115 }
116
117 void EnableContext() { m_ContextEnabled = true; m_Sizer.Invalidate(); }
118
119 void DisableContext() { m_ContextEnabled = false; m_Sizer.Invalidate(); }
120
122
123 void SetMaxCurveCount(int curveCount)
124 {
125 NW_G3D_ASSERT(curveCount >= 0);
126 m_NumCurve = curveCount;
127 m_ContextAvailable = true;
128 m_Sizer.Invalidate();
129 }
130
131 int GetMaxCurveCount() const { return m_NumCurve; }
132
133 bool IsValid() const { return m_NumCurve >= 0; }
134
135 Sizer& GetSizer() const { return m_Sizer; }
136
137private:
141 mutable Sizer m_Sizer;
142};
143
144namespace math {
145
146class Mtx34;
147class Mtx44;
148
149} // namespace math
150
152{
153public:
154 static void CalcAimCameraMtx(Mtx34* pMtx, const CameraAnimResult* pResult);
155 static void CalcRotateCameraMtx(Mtx34* pMtx, const CameraAnimResult* pResult);
156 static void CalcOrthoProjMtx(Mtx44* pMtx, const CameraAnimResult* pResult);
157 static void CalcPerspProjMtx(Mtx44* pMtx, const CameraAnimResult* pResult);
158 static void CalcOrthoProjTexMtx(Mtx34* pMtx, const CameraAnimResult* pResult);
159 static void CalcPerspProjTexMtx(Mtx34* pMtx, const CameraAnimResult* pResult);
160};
161
162} } // namespace nw::g3d
163
164#endif // NW_G3D_SCENEANIMOBJ_H_
Definition g3d_AnimObj.h:276
void * GetResultBuffer()
Definition g3d_AnimObj.h:322
AnimObj()
Definition g3d_AnimObj.cpp:116
const void * GetResultBuffer() const
Definition g3d_AnimObj.h:324
Definition g3d_SceneAnimObj.h:98
Sizer m_Sizer
Definition g3d_SceneAnimObj.h:141
bool IsValid() const
Definition g3d_SceneAnimObj.h:133
void SetMaxCurveCount(int curveCount)
Definition g3d_SceneAnimObj.h:123
void DisableContext()
Definition g3d_SceneAnimObj.h:119
bool m_ContextEnabled
Definition g3d_SceneAnimObj.h:139
InitArg()
Definition g3d_SceneAnimObj.h:100
Sizer & GetSizer() const
Definition g3d_SceneAnimObj.h:135
void Reserve(const ResCameraAnim *pResAnim)
Definition g3d_SceneAnimObj.h:109
bool IsContextEnabled() const
Definition g3d_SceneAnimObj.h:121
int GetMaxCurveCount() const
Definition g3d_SceneAnimObj.h:131
void EnableContext()
Definition g3d_SceneAnimObj.h:117
bool m_ContextAvailable
Definition g3d_SceneAnimObj.h:140
int m_NumCurve
Definition g3d_SceneAnimObj.h:138
void Clear()
Definition g3d_SceneAnimObj.h:102
Definition g3d_SceneAnimObj.h:81
@ NUM_CHUNK
Definition g3d_SceneAnimObj.h:91
@ RESULT_BUFFER
Definition g3d_SceneAnimObj.h:89
@ FRAMECACHE_ARRAY
Definition g3d_SceneAnimObj.h:90
void Calc(const InitArg &arg)
Definition g3d_SceneAnimObj.cpp:9
Sizer()
Definition g3d_SceneAnimObj.h:83
Chunk chunk[NUM_CHUNK]
Definition g3d_SceneAnimObj.h:94
Definition g3d_SceneAnimObj.h:35
CameraAnimResult * GetResult()
Definition g3d_SceneAnimObj.h:59
ResCameraAnim * m_pRes
Definition g3d_SceneAnimObj.h:75
CameraAnimObj()
Definition g3d_SceneAnimObj.h:44
const ResCameraAnim * GetResource() const
Definition g3d_SceneAnimObj.h:53
bit32 GetProjectionMode() const
Definition g3d_SceneAnimObj.h:71
virtual void Calc()
Definition g3d_SceneAnimObj.cpp:75
void SetResource(ResCameraAnim *pRes)
Definition g3d_SceneAnimObj.cpp:56
bit32 GetRotateMode() const
Definition g3d_SceneAnimObj.h:69
static size_t CalcBufferSize(const InitArg &arg)
Definition g3d_SceneAnimObj.cpp:23
Alignment
Definition g3d_SceneAnimObj.h:40
@ BUFFER_ALIGNMENT
Definition g3d_SceneAnimObj.h:41
void ResetResource()
Definition g3d_SceneAnimObj.h:57
bool Init(const InitArg &arg, void *pBuffer, size_t bufferSize)
Definition g3d_SceneAnimObj.cpp:30
virtual void ClearResult()
Definition g3d_SceneAnimObj.cpp:68
const CameraAnimResult * GetResult() const
Definition g3d_SceneAnimObj.h:64
Definition g3d_SceneAnimObj.h:152
static void CalcRotateCameraMtx(Mtx34 *pMtx, const CameraAnimResult *pResult)
static void CalcAimCameraMtx(Mtx34 *pMtx, const CameraAnimResult *pResult)
static void CalcOrthoProjTexMtx(Mtx34 *pMtx, const CameraAnimResult *pResult)
static void CalcOrthoProjMtx(Mtx44 *pMtx, const CameraAnimResult *pResult)
static void CalcPerspProjTexMtx(Mtx34 *pMtx, const CameraAnimResult *pResult)
static void CalcPerspProjMtx(Mtx44 *pMtx, const CameraAnimResult *pResult)
Definition g3d_SceneAnimObj.h:11
T * GetUserPtr()
Definition g3d_SceneAnimObj.h:20
void * m_pUserPtr
Definition g3d_SceneAnimObj.h:29
const T * GetUserPtr() const
Definition g3d_SceneAnimObj.h:23
const void * GetUserPtr() const
Definition g3d_SceneAnimObj.h:17
SceneAnimObj()
Definition g3d_SceneAnimObj.h:26
void SetUserPtr(void *pUserPtr)
Definition g3d_SceneAnimObj.h:13
void * GetUserPtr()
Definition g3d_SceneAnimObj.h:15
Definition g3d_Sizer.h:10
Sizer()
Definition g3d_Sizer.h:18
Definition g3d_Matrix34.h:34
Definition g3d_Matrix44.h:37
Definition g3d_ResSceneAnim.h:57
bit32 GetRotateMode() const
Definition g3d_ResSceneAnim.h:100
bool IsCurveBaked() const
Definition g3d_ResSceneAnim.h:96
bit32 GetProjectionMode() const
Definition g3d_ResSceneAnim.h:102
#define NW_G3D_ASSERT_NOT_NULL(exp)
Definition g3d_assert.h:20
#define NW_G3D_ASSERT(exp)
Definition g3d_assert.h:17
#define NW_G3D_DISALLOW_COPY_AND_ASSIGN(TypeName)
Definition g3d_defs.h:81
u32 bit32
Definition g3d_defs.h:131
Definition g3d_MathCommon.h:6
Definition g3d_GfxManage.cpp:10
Definition g3d_Sizer.h:13
Definition g3d_ResSceneAnim.h:14