OdysseyDecomp/lib/al/Library/MapObj/SubActorLodMapParts.cpp

56 lines
1.3 KiB
C++

#include "Library/MapObj/SubActorLodMapParts.h"
#include "Library/LiveActor/ActorActionFunction.h"
#include "Library/LiveActor/ActorInitUtil.h"
#include "Library/LiveActor/ActorModelFunction.h"
#include "Library/LiveActor/LiveActorFunction.h"
#include "Library/MapObj/SubActorLodExecutor.h"
#include "Library/Placement/PlacementFunction.h"
namespace al {
SubActorLodMapParts::SubActorLodMapParts(const char* name) : LiveActor(name) {}
void SubActorLodMapParts::init(const ActorInitInfo& info) {
const char* suffix = nullptr;
tryGetStringArg(&suffix, info, "Suffix");
initMapPartsActor(this, info, suffix);
mSubActorLodExecutor = new SubActorLodExecutor(this, info, 0);
if (getModelKeeper() && !isExistAction(this) && !isViewDependentModel(this))
mIsControlled = true;
trySyncStageSwitchAppearAndKill(this);
makeActorAlive();
}
void SubActorLodMapParts::control() {
mSubActorLodExecutor->control();
}
void SubActorLodMapParts::movement() {
if (mIsControlled) {
control();
return;
}
if (isHideModel(this)) {
LiveActor::movement();
return;
}
((SubActorLodMapParts*)getSubActor(this, 0))->movement();
}
void SubActorLodMapParts::calcAnim() {
if (mIsControlled) {
calcViewModel(this);
return;
}
LiveActor::calcAnim();
}
} // namespace al