mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-29 20:14:41 +00:00
56 lines
1.8 KiB
C++
56 lines
1.8 KiB
C++
#include "Project/LiveActor/SupportFreezeSyncGroup.h"
|
|
|
|
#include "Library/HitSensor/HitSensorKeeper.h"
|
|
#include "Library/LiveActor/ActorSensorUtil.h"
|
|
#include "Library/LiveActor/LiveActor.h"
|
|
#include "Library/Placement/PlacementFunction.h"
|
|
|
|
namespace al {
|
|
SupportFreezeSyncGroup::SupportFreezeSyncGroup() = default;
|
|
|
|
void SupportFreezeSyncGroup::init(const ActorInitInfo& info) {
|
|
alPlacementFunction::getLinkGroupId(mSupportFreezeSyncGroupId, info, "SupportFreezeSyncGroup");
|
|
|
|
mActors = new LiveActor*[mMaxActorCount];
|
|
for (s32 i = 0; i < mMaxActorCount; i++)
|
|
mActors[i] = nullptr;
|
|
}
|
|
|
|
void SupportFreezeSyncGroup::regist(LiveActor* actor) {
|
|
if (mActorCount >= mMaxActorCount)
|
|
return;
|
|
|
|
mActors[mActorCount] = actor;
|
|
mActorCount++;
|
|
}
|
|
|
|
void SupportFreezeSyncGroup::setHostSensor(HitSensor* hostSensor) {
|
|
mHostSensor = hostSensor;
|
|
}
|
|
|
|
bool SupportFreezeSyncGroup::isEqualGroupId(const ActorInitInfo& info) const {
|
|
if (!mSupportFreezeSyncGroupId->isValid())
|
|
return false;
|
|
|
|
PlacementId groupId;
|
|
if (!alPlacementFunction::getLinkGroupId(&groupId, info, "SupportFreezeSyncGroup"))
|
|
return false;
|
|
|
|
return mSupportFreezeSyncGroupId->isEqual(groupId);
|
|
}
|
|
|
|
void SupportFreezeSyncGroup::movement() {
|
|
bool isAnyNerveSupportFreeze = false;
|
|
for (s32 i = 0; i < mActorCount; i++)
|
|
isAnyNerveSupportFreeze |= sendMsgIsNerveSupportFreeze(
|
|
mActors[i]->getHitSensorKeeper()->getSensor(0), mHostSensor);
|
|
|
|
for (s32 i = 0; i < mActorCount; i++)
|
|
if (isAnyNerveSupportFreeze)
|
|
sendMsgOnSyncSupportFreeze(mActors[i]->getHitSensorKeeper()->getSensor(0), mHostSensor);
|
|
else
|
|
sendMsgOffSyncSupportFreeze(mActors[i]->getHitSensorKeeper()->getSensor(0),
|
|
mHostSensor);
|
|
}
|
|
} // namespace al
|