SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
SuperSpinDriver.hpp
1#pragma once
2
3#include "Game/LiveActor/LiveActor.hpp"
4#include "Game/LiveActor/ModelObj.hpp"
5#include "Game/MapObj/SpinDriverCamera.hpp"
6#include "Game/MapObj/SpinDriverOperateRing.hpp"
7#include "Game/MapObj/SpinDriverShootPath.hpp"
8#include "Game/MapObj/SpinDriverPathDrawer.hpp"
9
10namespace {
11 static f32 sCanBindTime = 90.0f;
12};
13
14class SuperSpinDriver : public LiveActor {
15public:
16 SuperSpinDriver(const char *, s32);
17
18 virtual ~SuperSpinDriver();
19 virtual void init(const JMapInfoIter &);
20 virtual void initAfterPlacement();
21 virtual void appear();
22 virtual void makeActorAppeared();
23 virtual void startClipped();
24 virtual void endClipped();
25 virtual void control();
26 virtual void calcAndSetBaseMtx();
27 virtual void attackSensor(HitSensor *, HitSensor *);
28 virtual bool receiveOtherMsg(u32, HitSensor *, HitSensor *);
29
30 void initParamFromJMapInfo(const JMapInfoIter &);
31 void initGravityAxis();
32 void initSensor();
33 void initEmptyModel();
34 void initEventCamera(const JMapInfoIter &);
35 void initShootPath(const JMapInfoIter &);
36 void initShootPathDraw(const JMapInfoIter &);
37 void initColor();
38 void initOperateRing();
39 void initAppearState(const JMapInfoIter &);
40 bool canBind(HitSensor *, HitSensor *) const;
41 bool tryBind(HitSensor *, HitSensor *) const;
42 bool tryEndCapture();
43 bool tryForceCancel();
44 bool tryShootStart();
45 bool tryShoot();
46 bool tryEndShoot();
47 bool tryEndCoolDown();
48 bool trySwitchOff();
49 void requestAppear();
50 void requestEmptyAppear();
51 void requestActive();
52 void requestHide();
53 void requestShow();
54
55 void exeEmptyNonActive();
56 void exeEmptyAppear();
57 void exeEmptyWait();
58 void exeNonActive();
59 void exeAppear();
60 void exeWait();
61 void exeCapture();
62 void exeShootStart();
63 void exeShoot();
64 inline void exeCoolDown();
65 inline void exeShootOnEnd();
66
67 void updateShootMotion();
68 void cancelBind();
69 void endBind();
70 void updateBindActorMatrix();
71 void updateBindActorPoseToShoot(f32);
72 void turnBindHead(const TVec3f &, f32);
73 void moveBindPosToCenter();
74 void startPathDraw();
75 void endPathDraw();
76 void updatePathDraw(f32);
77 void updateOperateRate();
78 void updateBindPosition(f32);
79 void calcShootMotionTime();
80 void addSwingSignRotateY();
81 void onUse();
82 void offUse();
83 bool isNeedEmptyModel() const;
84 bool isRightToUse() const;
85
86 LiveActor* _8C;
87 SpinDriverShootPath* mShootPath; // _90
88 SpinDriverCamera* mSpinDriverCamera; // _94
89 SpinDriverOperateRing* mOperateRing; // _98
90 SpinDriverPathDrawer* mPathDrawer; // _9C
91 ModelObj* mEmptyModel; // _A0
92 TQuat4f _A4;
93 TQuat4f _B4;
94 TVec3f _C4;
95 TVec3f _D0;
96 TVec3f _DC;
97 TVec3f _E8;
98 TVec3f _F4;
99 TVec3f _100;
100 TVec3f _10C;
101 TVec3f _118;
102 TVec3f _124;
103 f32 _130;
104 f32 _134;
105 f32 _138;
106 f32 _13C;
107 f32 _140;
108 f32 _144;
109 f32 _148;
110 f32 _14C;
111 u32 _150;
112 u32 _154;
113 u32 _158;
114 u32 _15C;
115 u32 _160;
116 f32 _164;
117 u32 _168;
118 u32 _16C;
119 s32 mColor; // _170
120 u8 _174;
121 u8 _175;
122 u8 _176;
123 u8 _177;
124 u32 _178;
125 u8 _17C;
126 u8 _17D;
127 u8 _17E;
128 u8 _17F;
129};
130
131namespace MR {
132 NameObj* createSuperSpinDriverYellow(const char *);
133 NameObj* createSuperSpinDriverGreen(const char *);
134 NameObj* createSuperSpinDriverPink(const char *);
135};
136
137namespace NrvSuperSpinDriver {
138 NERVE_DECL_NULL(SuperSpinDriverNrvTryDemo);
139 NERVE_DECL(SuperSpinDriverNrvEmptyNonActive, SuperSpinDriver, SuperSpinDriver::exeEmptyNonActive);
140 NERVE_DECL(SuperSpinDriverNrvEmptyAppear, SuperSpinDriver, SuperSpinDriver::exeEmptyAppear);
141 NERVE_DECL(SuperSpinDriverNrvEmptyWait, SuperSpinDriver, SuperSpinDriver::exeEmptyWait);
142 NERVE_DECL(SuperSpinDriverNrvNonActive, SuperSpinDriver, SuperSpinDriver::exeNonActive);
143 NERVE_DECL(SuperSpinDriverNrvAppear, SuperSpinDriver, SuperSpinDriver::exeAppear);
144 NERVE_DECL(SuperSpinDriverNrvWait, SuperSpinDriver, SuperSpinDriver::exeWait);
145 NERVE_DECL(SuperSpinDriverNrvCapture, SuperSpinDriver, SuperSpinDriver::exeCapture);
146 NERVE_DECL(SuperSpinDriverNrvShootStart, SuperSpinDriver, SuperSpinDriver::exeShootStart);
147 NERVE_DECL_ONEND(SuperSpinDriverNrvShoot, SuperSpinDriver, SuperSpinDriver::exeShoot, SuperSpinDriver::exeShootOnEnd);
148 NERVE_DECL(SuperSpinDriverNrvCoolDown, SuperSpinDriver, SuperSpinDriver::exeCoolDown);
149};
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
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.