SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
HatchWaterPlanet.cpp
1#include "Game/MapObj/HatchWaterPlanet.hpp"
2#include "Game/LiveActor/LodCtrl.hpp"
3
4HatchWaterPlanet::HatchWaterPlanet(const char *pName) : LiveActor(pName) {
5 mPlanetLODCtrl = nullptr;
6 mCollisionParts = nullptr;
7}
8
10 MR::initDefaultPos(this, rIter);
11 initModelManagerWithAnm("HatchWaterPlanet", nullptr, false);
12 MR::connectToScenePlanet(this);
13 initHitSensor(1);
14 MR::addBodyMessageSensorMapObj(this);
15 MR::initCollisionParts(this, "HatchWaterPlanetBefore", getSensor(nullptr), nullptr);
16 mCollisionParts = MR::createCollisionPartsFromLiveActor(this, "HatchWaterPlanetAfter", getSensor(nullptr), (MR::CollisionScaleType)2);
17 MR::invalidateCollisionParts(mCollisionParts);
18 initEffectKeeper(0, nullptr, false);
19 initSound(4, false);
20 if (MR::tryRegisterDemoCast(this, rIter)) {
21 MR::registerDemoActionNerve(this, &NrvHatchWaterPlanet::HatchWaterPlanetNrvOpen::sInstance, nullptr);
22 }
23
24 MR::setClippingTypeSphereContainsModelBoundingBox(this, 100.0f);
25 MR::setClippingFarMax(this);
26 mPlanetLODCtrl = MR::createLodCtrlPlanet(this, rIter, -1.0f, -1);
27 mPlanetLODCtrl->invalidate();
28 initNerve(&NrvHatchWaterPlanet::HatchWaterPlanetNrvWait::sInstance);
29 makeActorAppeared();
30}
31
32void HatchWaterPlanet::control() {
33 mPlanetLODCtrl->update();
34}
35
36void HatchWaterPlanet::exeOpen() {
37 if (MR::isFirstStep(this)) {
38 MR::startBck(this, "HatchWaterPlanet", nullptr);
39 MR::startBtk(this, "HatchWaterPlanet");
40 MR::startBck(mPlanetLODCtrl->_14, "HatchWaterPlanetLow", nullptr);
41 MR::setBckFrameAndStop(mPlanetLODCtrl->_14, 1.0f);
42 MR::startSound(this, "SE_OJ_HATCH_WATER_PNT_ST", -1, -1);
43 }
44
45 MR::startLevelSound(this, "SE_OJ_LV_HATCH_WATER_PNT_OP", -1, -1, -1);
46
47 if (MR::isBckStopped(this)) {
48 MR::startSound(this, "SE_OJ_HATCH_WATER_PNT_ED", -1, -1);
49 MR::startSystemSE("SE_SY_READ_RIDDLE_S", -1, -1);
50 setNerve(&NrvHatchWaterPlanet::HatchWaterPlanetNrvWaitAfterOpen::sInstance);
51 }
52}
53
54void HatchWaterPlanet::exeWaitAfterOpen() {
55 if (MR::isFirstStep(this)) {
56 MR::invalidateCollisionParts(this);
57 MR::validateCollisionParts(mCollisionParts);
58 }
59}
60
61HatchWaterPlanet::~HatchWaterPlanet() {
62
63}
64
65namespace NrvHatchWaterPlanet {
66 INIT_NERVE(HatchWaterPlanetNrvWait);
67 INIT_NERVE(HatchWaterPlanetNrvOpen);
68 INIT_NERVE(HatchWaterPlanetNrvWaitAfterOpen);
69
70 void HatchWaterPlanetNrvWaitAfterOpen::execute(Spine *pSpine) const {
71 HatchWaterPlanet* planet = reinterpret_cast<HatchWaterPlanet*>(pSpine->mExecutor);
72 planet->exeWaitAfterOpen();
73 }
74
75 void HatchWaterPlanetNrvOpen::execute(Spine *pSpine) const {
76 HatchWaterPlanet* planet = reinterpret_cast<HatchWaterPlanet*>(pSpine->mExecutor);
77 planet->exeOpen();
78 }
79
80 void HatchWaterPlanetNrvWait::execute(Spine *pSpine) const {
81
82 }
83};
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
HitSensor * getSensor(const char *pSensorName) const
Gets a sensor.
Definition Spine.hpp:9