SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
CameraDirector.hpp
1#pragma once
2
3#include "Game/Camera/CameraParamChunkID.hpp"
4#include "Game/NameObj/NameObj.hpp"
5#include "JSystem/JGeometry.hpp"
6
7class CameraCover;
9class CameraHolder;
10class CameraMan;
11class CameraManGame;
12class CameraManEvent;
13class CameraManPause;
17class CameraPoseParam;
22class CameraShaker;
23class CameraTargetArg;
24class CameraTargetMtx;
25class CameraTargetObj;
28class LiveActor;
29class MarioActor;
30class OnlyCamera;
31
32namespace MR {
33 CameraDirector *getCameraDirector();
34}
35
37public:
39
40 }
41
42 virtual char *getBuffer(unsigned long);
43
44 char mBuffer[0x100]; // _C
45};
46
47#define CAMERA_MAN_CAPACITY 8
48
49class CameraDirector : public NameObj {
50public:
52 public:
53 inline CameraManStack() {
54 mElements = new CameraMan *[CAMERA_MAN_CAPACITY];
55 mCapacity = CAMERA_MAN_CAPACITY;
56 mCount = 0;
57 mElements = new CameraMan *[CAMERA_MAN_CAPACITY];
58 }
59
60 CameraMan **mElements;
61 u32 mCapacity;
62 u32 mCount;
63 };
64
65 CameraDirector(const char *);
66 virtual ~CameraDirector();
67
68 virtual void init(const JMapInfoIter &);
69 virtual void movement();
70
71 void setTarget(CameraTargetObj *);
72 CameraTargetObj *getTarget();
73 void push(CameraMan *);
74 CameraMan *pop();
75 void backLastMtx();
76 CameraMan *getCurrentCameraMan() const;
77 void updateCameraMan();
78 void calcPose();
79 void calcSubjective(); // TODO
80 bool isInterpolationOff();
81 void switchAntiOscillation();
82 void createViewMtx();
83 void checkStartCondition();
84 void startEvent(long, const char *, const CameraTargetArg &, long);
85 void endEvent(long, const char *, bool, long);
86 void endEventAtLanding(long, const char *, long); // TODO, need more info on _5C
87 CameraParamChunkEvent *getEventParameter(long, const char *);
88 void requestToResetCameraMan();
89 void setInterpolation(unsigned long);
90 void cover(unsigned long);
91 void closeCreatingCameraChunk();
92 void initCameraCodeCollection(const char *, long);
93 void registerCameraCode(unsigned long);
94 void termCameraCodeCollection();
95 void declareEvent(long, const char *);
96 void started();
97 void setTargetActor(const LiveActor *);
98 void setTargetPlayer(const MarioActor *);
99 bool isRotatingHard() const;
100 bool isSubjectiveCamera() const;
101 bool isEnableToControl() const;
102 bool isEnableToRoundLeft() const;
103 bool isEnableToRoundRight() const;
104 bool isEnableToReset() const;
105 bool isEventCameraActive(long, const char *) const;
106 bool isEventCameraActive() const;
107 void startStartPosCamera(bool);
108 bool isInterpolatingNearlyEnd() const;
109 bool isForceCameraChange() const;
110 f32 getDefaultFovy() const;
111 void startStartAnimCamera();
112 bool isStartAnimCameraEnd() const;
113 u32 getStartAnimCameraFrame() const;
114 void endStartAnimCamera();
115 void startTalkCamera(const TVec3f &, const TVec3f &, float, float, long);
116 void endTalkCamera(bool, long);
117 void startSubjectiveCamera(long);
118 void endSubjectiveCamera(long);
119 bool isAnimCameraEnd(long, const char *) const;
120 u32 getAnimCameraFrame(long, const char *) const;
121 void pauseOnAnimCamera(long, const char *);
122 void pauseOffAnimCamera(long, const char *);
123 void zoomInGameCamera();
124 void zoomOutGameCamera();
125 void checkEndOfEventCamera(); // TODO
126 void controlCameraSE(); // TODO
127 void removeEndEventAtLanding(long, const char *); // TODO
128 void calcViewMtxFromPoseParam(TPos3f *, const CameraPoseParam *); // TODO
129 bool isPlayableCameraSE(bool);
130 void resetCameraMan();
131 void createStartAnimCamera();
132 void createTalkCamera();
133 void createSubjectiveCamera();
134
135 // _15C[0] and _15C[1] seems to be a struct of size 0x88 with the following layout:
136 // 0x00: mZoneID
137 // 0x04: mName
138 // 0x84: unknown
139
140 // These are the only members which have been found accessed
141
142 CameraTargetObj *_C;
143 CameraManStack *mStack; // _10
144 OnlyCamera *mOnlyCamera; // _14
145 CameraPoseParam *mPoseParam1; // _18
146 CameraPoseParam *mPoseParam2; // _1C
147 CameraHolder *mHolder; // _20
148 CameraParamChunkHolder *mChunkHolder; // _24
149 GameCameraCreator *mCameraCreator; // _28
150 CameraRailHolder *mRailHolder; // _2C
151 CameraRegisterHolder *mRegisterHolder; // _30
152 CameraTargetHolder *mTargetHolder; // _34
153 CameraShaker *mShaker; // _38
154 CameraViewInterpolator *mViewInterpolator; // _3C
155 CameraCover *mCover; // _40
156 CameraRotChecker *mRotChecker; // _44
157 CameraManGame *mCameraManGame; // _48
158 CameraManEvent *mCameraManEvent; // _4C
159 CameraManPause *mCameraManPause; // _50
160 CameraManSubjective *mCameraManSubjective; // _54
161 bool _58;
162 u8 _59[3];
163 s32 _5C[2][34];
164 u32 _16C;
165 bool _170;
166 u8 _171[3];
167 s32 _174;
168 bool mStartCameraCreated; // _178
169 u8 _179[3];
170 CameraTargetMtx *mTargetMatrix; // _17C
171 TMtx34f _180;
172 bool mRequestCameraManReset; // _1B0
173 bool _1B1;
174 bool mIsSubjectiveCamera; // _1B2
175 bool _1B3;
176 s32 _1B4;
177 u8 _1B8[4];
178 f32 _1BC;
179 TPos3f _1C0;
180 bool _1F0;
181 bool _1F1;
182 bool _1F2;
183 u8 _1F3;
184};
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.
The basis of a drawable actor that can contain states (see: Nerve)
Definition LiveActor.hpp:24
The most basic form of an object.
Definition NameObj.hpp:11