SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
MapObjActor.hpp
1#pragma once
2
3#include "Game/LiveActor/LiveActor.hpp"
4#include "Game/MapObj/MapObjActorInitInfo.hpp"
5
6class LodCtrl;
12class ModelObj;
15
16namespace NrvMapObjActor {
17 NERVE(HostTypeWait);
18 NERVE(HostTypeMove);
19 NERVE(HostTypeDone);
20};
21
22namespace {
23 const char* cBrkNameColorChange = "ColorChange";
24 const char* cBtpNameTexChange = "TexChange";
25 const char* cBtkNameTexChange = "TexChange";
26 const char* cEffectNameAppear = "Appear";
27 const char* cBckNameMove = "Move";
28 const char* cFollowJointName = "Move";
29 const char* cEffectNameBreak = "Break";
30 const char* cBckNameBreak = "Break";
31};
32
33class MapObjActor : public LiveActor {
34public:
35 MapObjActor(const char *);
36 MapObjActor(const char *, const char *);
37
38 virtual ~MapObjActor() {
39
40 }
41
42 virtual void init(const JMapInfoIter &);
43 virtual void initAfterPlacement();
44 virtual void appear();
45 virtual void kill();
46 virtual void startClipped();
47 virtual void endClipped();
48 virtual void control();
49 virtual void calcAndSetBaseMtx();
50 virtual void connectToScene(const MapObjActorInitInfo &);
51 virtual void initCaseUseSwitchA(const MapObjActorInitInfo &);
52 virtual void initCaseNoUseSwitchA(const MapObjActorInitInfo &);
53 virtual void initCaseUseSwitchB(const MapObjActorInitInfo &);
54 virtual void initCaseNoUseSwitchB(const MapObjActorInitInfo &);
55 virtual void makeSubModels(const JMapInfoIter &, const MapObjActorInitInfo &) {
56
57 }
58
59 void initialize(const JMapInfoIter &, const MapObjActorInitInfo &);
60 bool isObjectName(const char *) const;
61 bool tryCreateBreakModel(const MapObjActorInitInfo &);
62 bool tryEmitWaitEffect();
63 bool tryDeleteWaitEffect();
64 void startMapPartsFunctions();
65 void endMapPartsFunctions();
66 void pauseMapPartsFunctions();
67 void setStateWait();
68 void updateProjmapMtx();
69 void exeWait();
70 void exeMove();
71
72 const char* mObjectName; // _8C
73 LodCtrl* mPlanetLodCtrl; // _90
74 ModelObj* mBloomModel; // _94
75 ModelObj* mModelObj; // _98
76 ProjmapEffectMtxSetter* mMatrixSetter; // _9C
77 MapPartsRailMover* mRailMover; // _A0
78 MapPartsRotator* mRotator; // _A4
79 MapPartsRailRotator* mRailRotator; // _A8
80 MapPartsRailPosture* mRailPosture; // _AC
81 MapPartsRailGuideDrawer* mRailGuideDrawer; // _B0
82 u8 _B4;
83 u8 _B5;
84 u8 _B6;
85 NrvMapObjActor::HostTypeWait* mWaitNrv; // _B8
86 NrvMapObjActor::HostTypeMove* mMoveNrv; // _BC
87 NrvMapObjActor::HostTypeDone* mDoneNrv; // _C0
88};
89
91public:
92 static void startAllMapPartsFunctions(const MapObjActor *);
93 static void endAllMapPartsFunctions(const MapObjActor *);
94 static void pauseAllMapPartsFunctions(const MapObjActor *);
95 static void resumeAllMapPartsFunctions(const MapObjActor *);
96 static bool isRotatorMoving(const MapObjActor *);
97 static bool isRailMoverWorking(const MapObjActor *);
98 static bool isRailMoverReachedEnd(const MapObjActor *);
99 static f32 getSeesaw1AxisAngularSpeed(const MapObjActor *);
100 static void forceRotateSeesaw1Axis(const MapObjActor *, f32);
101
102 static void startRotator(const MapObjActor *);
103 static void startRailMover(const MapObjActor *);
104 static void endRotator(const MapObjActor *);
105 static void pauseRotator(const MapObjActor *);
106 static void resetRailMoverToInitPos(const MapObjActor *);
107 static void startBreak(MapObjActor *);
108 static bool tryStartBreak(MapObjActor *);
109 static bool isBreakStopped(const MapObjActor *);
110 static void killBloomModel(MapObjActor *);
111 static void appearBloomModel(MapObjActor *);
112
113 static void setupInitInfoTypical(MapObjActorInitInfo *, const char *);
114
115 static void setupInitInfoSimpleMapObj(MapObjActorInitInfo *);
116
117 static void setupInitInfoPlanet(MapObjActorInitInfo *);
118
119 static void setupInitInfoSeesaw(MapObjActorInitInfo *, const JMapInfoIter &, const char *, f32);
120
121 static void setupInitInfoColorChangeArg0(MapObjActorInitInfo *, const JMapInfoIter &);
122 static void setupInitInfoTextureChangeArg1(MapObjActorInitInfo *, const JMapInfoIter &);
123 static void setupInitInfoShadowLengthArg2(MapObjActorInitInfo *, const JMapInfoIter &);
124};
The basis of a drawable actor that can contain states (see: Nerve)
Definition LiveActor.hpp:24
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.
virtual void calcAndSetBaseMtx()
Calculates and sets the base matrix of the actor.