2023-12-13 00:40:16 -05:00
|
|
|
#include "Game/MapObj/CollisionBlocker.hpp"
|
2022-06-09 17:38:26 -04:00
|
|
|
|
|
|
|
|
CollisionBlocker::CollisionBlocker(const char *pName) : LiveActor(pName) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CollisionBlocker::init(const JMapInfoIter &rIter) {
|
|
|
|
|
MR::initDefaultPos(this, rIter);
|
|
|
|
|
initHitSensor(1);
|
|
|
|
|
|
|
|
|
|
TVec3f sensor_radius;
|
|
|
|
|
sensor_radius.x = 0.0f;
|
|
|
|
|
sensor_radius.y = 0.0f;
|
|
|
|
|
sensor_radius.z = 0.0f;
|
|
|
|
|
MR::addHitSensorEye(this, "eye", 4, 50.0f * mScale.y, sensor_radius);
|
|
|
|
|
MR::connectToSceneMapObjMovement(this);
|
|
|
|
|
MR::setClippingFar50m(this);
|
|
|
|
|
makeActorAppeared();
|
|
|
|
|
|
|
|
|
|
if (MR::isValidInfo(rIter)) {
|
|
|
|
|
MR::useStageSwitchSleep(this, rIter);
|
|
|
|
|
|
|
|
|
|
if (MR::useStageSwitchReadAppear(this, rIter)) {
|
|
|
|
|
makeActorDead();
|
|
|
|
|
MR::syncStageSwitchAppear(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (MR::useStageSwitchReadB(this, rIter)) {
|
|
|
|
|
MR::FunctorV0M<CollisionBlocker *, void (CollisionBlocker::*)()> breakFunc = MR::Functor<CollisionBlocker>(this, &CollisionBlocker::forceBreak);
|
|
|
|
|
MR::listenStageSwitchOnB(this, breakFunc);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CollisionBlocker::forceBreak() {
|
|
|
|
|
kill();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CollisionBlocker::attackSensor(HitSensor *a1, HitSensor *a2) {
|
|
|
|
|
if (MR::isSensorPlayer(a2)) {
|
|
|
|
|
MR::sendArbitraryMsg(42, a2, a1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CollisionBlocker::~CollisionBlocker() {
|
|
|
|
|
|
|
|
|
|
}
|