SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
CameraAnim.hpp
1#pragma once
2
3#include "Game/Camera/Camera.hpp"
4#include "revolution.h"
5
7 u8 mMagic[4]; // _0
8 u8 mType[4]; // _4
9 s32 _8;
10 s32 _C;
11 s32 _10;
12 s32 _14;
13 u32 mNrFrames; // _18
14 u32 mValueOffset; // _1C
15};
16
18 u32 mCount; // _0
19 u32 mOffset; // _4
20 u32 mType; // _8
21};
22
24 CanmKeyFrameComponentInfo mPosX; // _0
25 CanmKeyFrameComponentInfo mPosY; // _C
26 CanmKeyFrameComponentInfo mPosZ; // _18
27 CanmKeyFrameComponentInfo mWatchPosX; // _24
28 CanmKeyFrameComponentInfo mWatchPosY; // _30
29 CanmKeyFrameComponentInfo mWatchPosZ; // _3C
30 CanmKeyFrameComponentInfo mTwist; // _48
31 CanmKeyFrameComponentInfo mFovy; // _54
32};
33
35 u32 mCount; // _0
36 u32 mOffset; // _4
37};
38
40 CamnFrameComponentInfo mPosX; // _0
41 CamnFrameComponentInfo mPosY; // _8
42 CamnFrameComponentInfo mPosZ; // _10
43 CamnFrameComponentInfo mWatchPosX; // _18
44 CamnFrameComponentInfo mWatchPosY; // _20
45 CamnFrameComponentInfo mWatchPosZ; // _28
46 CamnFrameComponentInfo mTwist; // _30
47 CamnFrameComponentInfo mFovy; // _38
48};
49
51public:
52 inline BaseCamAnmDataAccessor() {
53
54 }
55
56 virtual inline ~BaseCamAnmDataAccessor() {
57
58 }
59
60 virtual void set(void *, void *) = 0;
61 virtual void getPos(TVec3f *, float) const = 0;
62 virtual void getWatchPos(TVec3f *, float) const = 0;
63 virtual float getTwist(float) const = 0;
64 virtual float getFovy(float) const = 0;
65};
66
68public:
69 inline KeyCamAnmDataAccessor() {
70 mInfo = NULL;
71 mValues = NULL;
72 }
73
74 virtual ~KeyCamAnmDataAccessor();
75
76 virtual void set(void *, void *);
77 virtual void getPos(TVec3f *, float) const;
78 virtual void getWatchPos(TVec3f *, float) const;
79 virtual float getTwist(float) const;
80 virtual float getFovy(float) const;
81
82 float get(float, unsigned long, unsigned long, unsigned long) const;
83 u32 searchKeyFrameIndex(float, unsigned long, unsigned long, unsigned long) const;
84 float get3f(float, unsigned long, unsigned long) const;
85 float get4f(float, unsigned long, unsigned long) const;
86 float calcHermite(float, float, float, float, float, float, float) const;
87
88 CanmKeyFrameInfo *mInfo; // _4
89 f32 *mValues; // _8
90};
91
93public:
94 inline CamAnmDataAccessor() {
95 mInfo = NULL;
96 mValues = NULL;
97 }
98
99 virtual ~CamAnmDataAccessor();
100
101 virtual void set(void *, void *);
102 virtual void getPos(TVec3f *, float) const;
103 virtual void getWatchPos(TVec3f *, float) const;
104 virtual float getTwist(float) const;
105 virtual float getFovy(float) const;
106
107 float get(float, unsigned long, unsigned long) const;
108
109 CanmFrameInfo *mInfo; // _4
110 f32 *mValues; // _8
111};
112
113class CameraAnim : public Camera {
114public:
115 CameraAnim(const char *);
116 virtual ~CameraAnim();
117
118 virtual void reset();
119 virtual CameraTargetObj *calc();
120 virtual bool isZeroFrameMoveOff() const;
121 virtual bool isCollisionOff() const;
122 virtual bool isInterpolationOff() const;
123 virtual CamTranslatorBase *createTranslator();
124
125 void setParam(unsigned char *, float);
126 bool isAnimEnd() const;
127 static u32 getAnimFrame(unsigned char *);
128 bool loadBin(unsigned char *);
129
130 s32 _4C;
131 s32 _50;
132 u32 mNrFrames; // _54
133 u8 mIsKey; // _58
134 u8 _59[3];
135 f32 mSpeed; // _5C
136 f32 mCurrentFrame; // _60
137 BaseCamAnmDataAccessor *mFileDataAccessor; // _64
138 CamAnmDataAccessor *mDataAccessor; // _68
139 KeyCamAnmDataAccessor *mKeyDataAccessor; // _6C
140 u32 mNrValues;
141 s32 _74;
142 u8 *mFileData; // _78
143 u8 _7C;
144 u8 _7D[3];
145};