1#include "Game/MapObj/AirBubbleGenerator.hpp"
2#include "Game/MapObj/AirBubbleHolder.hpp"
4AirBubbleGenerator::~AirBubbleGenerator() {
8AirBubbleGenerator::AirBubbleGenerator(
const char *pName) :
LiveActor(pName) {
15 MR::createAirBubbleHolder();
16 MR::initDefaultPos(
this, rIter);
17 initModelManagerWithAnm(
"AirBubbleGenerator",
nullptr,
false);
18 MR::connectToSceneNoSilhouettedMapObj(
this);
19 initEffectKeeper(0,
nullptr,
false);
20 initNerve(&NrvAirBubbleGenerator::AirBubbleGenerateNrvWait::sInstance);
22 MR::addBodyMessageSensorReceiver(
this);
23 MR::initCollisionParts(
this,
"AirBubbleGenerator",
getSensor(
nullptr),
nullptr);
24 MR::getJMapInfoArg0NoInit(rIter, &mSpawnDelay);
25 MR::getJMapInfoArg1NoInit(rIter, &mBubbleDuration);
28 if (MR::useStageSwitchReadAppear(
this, rIter)) {
29 MR::syncStageSwitchAppear(
this);
37void AirBubbleGenerator::control() {
41void AirBubbleGenerator::exeWait() {
42 s32 spawnDelay = mSpawnDelay;
43 if (spawnDelay - 1 == getNerveStep() % spawnDelay) {
44 setNerve(&NrvAirBubbleGenerator::AirBubbleGeneratorNrvGenerate::sInstance);
50void AirBubbleGenerator::exeGenerate() {
53 if (MR::isFirstStep(
this)) {
54 MR::startSound(
this,
"SE_OJ_AIR_BUBBLE_APPEAR", -1, -1);
55 MR::startBck(
this,
"Generate",
nullptr);
58 if (MR::isGreaterStep(
this, 6)) {
59 MR::calcActorAxisY(&axisY,
this);
60 MR::appearAirBubble(MR::createVecAndScaleByAndAdd_2(axisY,
mPosition), mBubbleDuration);
61 setNerve(&NrvAirBubbleGenerator::AirBubbleGenerateNrvWait::sInstance);
66namespace NrvAirBubbleGenerator {
67 INIT_NERVE(AirBubbleGenerateNrvWait);
68 INIT_NERVE(AirBubbleGeneratorNrvGenerate);
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)
TVec3f mPosition
3D vector of the actor's position.
HitSensor * getSensor(const char *pSensorName) const
Gets a sensor.