1#include "Game/MapObj/HatchWaterPlanet.hpp"
2#include "Game/LiveActor/LodCtrl.hpp"
4HatchWaterPlanet::HatchWaterPlanet(
const char *pName) :
LiveActor(pName) {
5 mPlanetLODCtrl =
nullptr;
6 mCollisionParts =
nullptr;
10 MR::initDefaultPos(
this, rIter);
11 initModelManagerWithAnm(
"HatchWaterPlanet",
nullptr,
false);
12 MR::connectToScenePlanet(
this);
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);
20 if (MR::tryRegisterDemoCast(
this, rIter)) {
21 MR::registerDemoActionNerve(
this, &NrvHatchWaterPlanet::HatchWaterPlanetNrvOpen::sInstance,
nullptr);
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);
32void HatchWaterPlanet::control() {
33 mPlanetLODCtrl->update();
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);
45 MR::startLevelSound(
this,
"SE_OJ_LV_HATCH_WATER_PNT_OP", -1, -1, -1);
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);
54void HatchWaterPlanet::exeWaitAfterOpen() {
55 if (MR::isFirstStep(
this)) {
56 MR::invalidateCollisionParts(
this);
57 MR::validateCollisionParts(mCollisionParts);
61HatchWaterPlanet::~HatchWaterPlanet() {
65namespace NrvHatchWaterPlanet {
66 INIT_NERVE(HatchWaterPlanetNrvWait);
67 INIT_NERVE(HatchWaterPlanetNrvOpen);
68 INIT_NERVE(HatchWaterPlanetNrvWaitAfterOpen);
70 void HatchWaterPlanetNrvWaitAfterOpen::execute(
Spine *pSpine)
const {
72 planet->exeWaitAfterOpen();
75 void HatchWaterPlanetNrvOpen::execute(
Spine *pSpine)
const {
80 void HatchWaterPlanetNrvWait::execute(
Spine *pSpine)
const {
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)
HitSensor * getSensor(const char *pSensorName) const
Gets a sensor.