mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-26 10:34:30 +00:00
55 lines
1.9 KiB
C++
55 lines
1.9 KiB
C++
#include "Library/MapObj/SupportFreezeSyncGroupHolder.h"
|
|
|
|
#include "Library/LiveActor/ActorInitFunction.h"
|
|
#include "Library/LiveActor/ActorSensorUtil.h"
|
|
#include "Project/LiveActor/SupportFreezeSyncGroup.h"
|
|
|
|
namespace al {
|
|
SupportFreezeSyncGroupHolder::SupportFreezeSyncGroupHolder() : LiveActor("DRC拘束グループ監視") {
|
|
mSupportFreezeSyncGroups = new SupportFreezeSyncGroup*[mSupportFreezeSyncGroupMaxCount];
|
|
|
|
for (s32 i = 0; i < mSupportFreezeSyncGroupMaxCount; i++)
|
|
mSupportFreezeSyncGroups[i] = nullptr;
|
|
}
|
|
|
|
void SupportFreezeSyncGroupHolder::initAfterPlacementSceneObj(const ActorInitInfo& info) {
|
|
initActorSceneInfo(this, info);
|
|
initExecutorUpdate(this, info, "DRCアシスト同期グループ");
|
|
initActorPoseTRSV(this);
|
|
|
|
initHitSensor(1);
|
|
|
|
HitSensor* bodySensor = addHitSensorMapObj(this, info, "Body", 0.0f, 0, {0.0f, 0.0f, 0.0f});
|
|
for (s32 i = 0; i < mSupportFreezeSyncGroupCount; i++)
|
|
mSupportFreezeSyncGroups[i]->setHostSensor(bodySensor);
|
|
|
|
makeActorAlive();
|
|
}
|
|
|
|
void SupportFreezeSyncGroupHolder::movement() {
|
|
for (s32 i = 0; i < mSupportFreezeSyncGroupCount; i++)
|
|
mSupportFreezeSyncGroups[i]->movement();
|
|
}
|
|
|
|
void SupportFreezeSyncGroupHolder::regist(LiveActor* actor, const ActorInitInfo& info) {
|
|
SupportFreezeSyncGroup* supportFreezeSyncGroup = tryFindGroup(info);
|
|
if (!supportFreezeSyncGroup) {
|
|
supportFreezeSyncGroup = new SupportFreezeSyncGroup();
|
|
supportFreezeSyncGroup->init(info);
|
|
|
|
mSupportFreezeSyncGroups[mSupportFreezeSyncGroupCount] = supportFreezeSyncGroup;
|
|
mSupportFreezeSyncGroupCount++;
|
|
}
|
|
|
|
supportFreezeSyncGroup->regist(actor);
|
|
}
|
|
|
|
SupportFreezeSyncGroup* SupportFreezeSyncGroupHolder::tryFindGroup(const ActorInitInfo& info) {
|
|
for (s32 i = 0; i < mSupportFreezeSyncGroupCount; i++)
|
|
if (mSupportFreezeSyncGroups[i]->isEqualGroupId(info))
|
|
return mSupportFreezeSyncGroups[i];
|
|
|
|
return nullptr;
|
|
}
|
|
} // namespace al
|