mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-27 02:54:08 +00:00
61 lines
1.5 KiB
C++
61 lines
1.5 KiB
C++
#include "Library/MapObj/FixMapParts.h"
|
|
|
|
#include "Library/Demo/DemoFunction.h"
|
|
#include "Library/LiveActor/ActorActionFunction.h"
|
|
#include "Library/LiveActor/ActorInitUtil.h"
|
|
#include "Library/LiveActor/ActorModelFunction.h"
|
|
#include "Library/LiveActor/ActorSensorUtil.h"
|
|
#include "Library/Placement/PlacementFunction.h"
|
|
#include "Library/Stage/StageSwitchUtil.h"
|
|
|
|
namespace al {
|
|
FixMapParts::FixMapParts(const char* name) : LiveActor(name) {}
|
|
|
|
void FixMapParts::init(const ActorInitInfo& info) {
|
|
const char* suffix = nullptr;
|
|
tryGetStringArg(&suffix, info, "Suffix");
|
|
initMapPartsActor(this, info, suffix);
|
|
trySyncStageSwitchAppearAndKill(this);
|
|
registActorToDemoInfo(this, info);
|
|
|
|
if (getModelKeeper() && !isExistAction(this) && !isViewDependentModel(this))
|
|
mIsStatic = true;
|
|
}
|
|
|
|
void FixMapParts::appear() {
|
|
LiveActor::appear();
|
|
|
|
if (isExistModel(this))
|
|
tryStartAction(this, "Appear");
|
|
}
|
|
|
|
void FixMapParts::movement() {
|
|
if (!mIsStatic)
|
|
LiveActor::movement();
|
|
}
|
|
|
|
void FixMapParts::calcAnim() {
|
|
if (!mIsStatic)
|
|
LiveActor::calcAnim();
|
|
else
|
|
calcViewModel(this);
|
|
}
|
|
|
|
bool FixMapParts::receiveMsg(const SensorMsg* message, HitSensor* other, HitSensor* self) {
|
|
if (isMsgAskSafetyPoint(message))
|
|
return !isValidSwitchAppear(this) && !isValidSwitchKill(this);
|
|
|
|
if (isMsgShowModel(message)) {
|
|
showModelIfHide(this);
|
|
return true;
|
|
}
|
|
|
|
if (isMsgHideModel(message)) {
|
|
hideModelIfShow(this);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
} // namespace al
|