mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
64 lines
1.8 KiB
C++
64 lines
1.8 KiB
C++
#include "Library/MapObj/ChildStep.h"
|
|
|
|
#include "Library/LiveActor/ActorClippingFunction.h"
|
|
#include "Library/LiveActor/ActorInitFunction.h"
|
|
#include "Library/LiveActor/ActorInitUtil.h"
|
|
#include "Library/LiveActor/ActorPoseUtil.h"
|
|
#include "Library/Nerve/NerveSetupUtil.h"
|
|
#include "Library/Placement/PlacementFunction.h"
|
|
|
|
namespace al {
|
|
namespace {
|
|
NERVE_IMPL(ChildStep, Wait)
|
|
|
|
NERVES_MAKE_STRUCT(ChildStep, Wait)
|
|
} // namespace
|
|
|
|
ChildStep::ChildStep(const char* name, LiveActor* parent) : LiveActor(name), mParent(parent) {}
|
|
|
|
void ChildStep::init(const ActorInitInfo& info) {
|
|
initMapPartsActor(this, info, nullptr);
|
|
initNerve(this, &NrvChildStep.Wait, 0);
|
|
|
|
multVecInvQuat(&mPos, mParent, getTrans(this));
|
|
|
|
makeActorAlive();
|
|
}
|
|
|
|
bool ChildStep::receiveMsg(const SensorMsg* message, HitSensor* other, HitSensor* self) {
|
|
return mParent->receiveMsg(message, other, self);
|
|
}
|
|
|
|
void ChildStep::exeWait() {
|
|
multVecPose(getTransPtr(this), mParent, mPos);
|
|
}
|
|
|
|
s32 calcChildStepCount(const ActorInitInfo& info) {
|
|
return calcLinkChildNum(info, "ChildStep");
|
|
}
|
|
|
|
void tryInitSubActorKeeperChildStep(LiveActor* actor, const ActorInitInfo& info) {
|
|
s32 childStepCount = calcChildStepCount(info);
|
|
|
|
if (childStepCount <= 0)
|
|
return;
|
|
|
|
initSubActorKeeperNoFile(actor, info, childStepCount);
|
|
}
|
|
|
|
void createChildStep(const ActorInitInfo& info, LiveActor* parent, bool isSyncClipping) {
|
|
s32 childStepCount = calcChildStepCount(info);
|
|
|
|
for (s32 i = 0; i < childStepCount; i++) {
|
|
ChildStep* childStep = new ChildStep("子供足場", parent);
|
|
|
|
initLinksActor(childStep, info, "ChildStep", i);
|
|
|
|
if (isSyncClipping) {
|
|
invalidateClipping(childStep);
|
|
registerSubActorSyncClipping(parent, childStep);
|
|
}
|
|
}
|
|
}
|
|
} // namespace al
|