1#include "Game/MapObj/IceStep.hpp"
3IceStep::IceStep(
const char *pName) :
LiveActor(pName) {
12 MR::initDefaultPos(
this, rIter);
13 initModelManagerWithAnm(
"IceStep",
nullptr,
false);
14 MR::connectToSceneMapObjStrongLight(
this);
16 initEffectKeeper(1,
nullptr,
false);
17 f32 scale = 90.0f *
mScale.x;
23 MR::addHitSensorMapObj(
this,
"body", 8, scale, offs);
25 MR::initCollisionParts(
this,
"IceStep",
getSensor(
"body"),
nullptr);
26 MR::validateClipping(
this);
27 initNerve(&NrvIceStep::IceStepNrvWait::sInstance);
32void IceStep::exeWait() {
39 MR::startBpk(
this,
"TimeOutLong");
42 MR::startBpk(
this,
"TimeOutShort");
48 if (MR::isBckStopped(
this)) {
56void IceStep::setOn(u32 stepIdx,
const TVec3f &rPosition,
const TVec3f &rRotation) {
59 MR::offUpdateCollisionParts(
this);
60 MR::onUpdateCollisionPartsOnetimeImmediately(
this);
61 s32 v8 = stepIdx >> 1;
68 MR::calcUpVec(&upVec,
this);
69 TVec3f multVec(MR::multVecNoCtor(MR::multVecNoCtor(upVec, v8), 0.2f));
70 mPosition = MR::addVec(multVec, rPosition);
72 MR::startBck(
this,
"Start",
nullptr);
73 MR::startBpk(
this,
"Start");
74 MR::startSound(
this,
"SE_OJ_ICE_FLOOR_FREEZE", -1, -1);
76 MR::invalidateClipping(
this);
77 MR::resetPosition(
this);
78 setNerve(&NrvIceStep::IceStepNrvWait::sInstance);
79 MR::validateCollisionParts(
this);
84void IceStep::destroy() {
85 MR::startBck(
this,
"End",
nullptr);
86 MR::startBpk(
this,
"End");
87 MR::startSound(
this,
"SE_OJ_ICE_FLOOR_MELT", -1, -1);
91void IceStep::doHit() {
92 MR::invalidateCollisionParts(
this);
93 setNerve(&NrvIceStep::IceStepNrvHit::sInstance);
94 MR::emitEffect(
this,
"Break");
95 MR::startSound(
this,
"SE_OJ_ICE_FLOOR_BREAK", -1, -1);
96 MR::startBck(
this,
"End",
nullptr);
105 if (MR::isOnPlayer(
this)) {
109 if (isNerve(&NrvIceStep::IceStepNrvWait::sInstance)) {
117void IceStep::control() {
121namespace NrvIceStep {
122 INIT_NERVE(IceStepNrvHit);
123 INIT_NERVE(IceStepNrvWait);
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 mRotation
3D vector of the actor's rotation.
TVec3f mPosition
3D vector of the actor's position.
TVec3f mScale
3D vector of the actor's scale.
HitSensor * getSensor(const char *pSensorName) const
Gets a sensor.