SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
MapPartsBreaker.cpp
1#include "Game/MapObj/MapPartsBreaker.hpp"
2#include "Game/LiveActor/LiveActor.hpp"
3
4void MapPartsBreaker::exeReactToTornado() {
5 if (isFirstStep()) {
6 TVec3f* vel = &mHost->mVelocity;
7 vel->set((_28 * 5.0f) * _34);
8 }
9
10 if (getStep() % 3) {
11 mHost->mVelocity.negateSelf();
12 }
13
14 if (isStep(36)) {
15 if (_38) {
16 setNerve(&NrvMapPartsBreaker::HostTypeBreak::sInstance);
17 }
18 else {
19 mHost->mVelocity.zero();
20 mHost->mPosition.set(_1C);
21 _28.x = 0.0f;
22 _28.y = 1.0f;
23 _28.z = 0.0f;
24 setNerve(&NrvMapPartsBreaker::HostTypeWait::sInstance);
25 }
26 }
27 else {
28 _38 = 0;
29 }
30}
31
32void MapPartsBreaker::exeBreak() {
33 if (isFirstStep()) {
34 mHost->mVelocity.zero();
35 MR::emitEffect(mHost, "SmokeSphere");
36 MR::hideModel(mHost);
37 MR::invalidateCollisionParts(mHost);
38 }
39
40 if (isStep(15)) {
41 sendMsgToHost(206);
42 mHost->kill();
43 }
44}
45
46namespace NrvMapPartsBreaker {
47 INIT_NERVE(HostTypeWait);
48 INIT_NERVE(HostTypeReactToTornado);
49 INIT_NERVE(HostTypeBreak);
50
51 void HostTypeBreak::execute(Spine *pSpine) const {
52 MapPartsBreaker* breaker = reinterpret_cast<MapPartsBreaker*>(pSpine->mExecutor);
53 breaker->exeBreak();
54 }
55
56 void HostTypeReactToTornado::execute(Spine *pSpine) const {
57 MapPartsBreaker* breaker = reinterpret_cast<MapPartsBreaker*>(pSpine->mExecutor);
58 breaker->exeReactToTornado();
59 }
60
61 void HostTypeWait::execute(Spine *pSpine) const {
62
63 }
64};
TVec3f mPosition
3D vector of the actor's position.
Definition LiveActor.hpp:95
TVec3f mVelocity
3D vector of the actor's velocity.
Definition LiveActor.hpp:98
Definition Spine.hpp:9