| 1 | #include "Library/MapObj/SupportFreezeSyncGroupHolder.h" |
| 2 | |
| 3 | #include "Library/LiveActor/ActorInitFunction.h" |
| 4 | #include "Library/LiveActor/ActorSensorUtil.h" |
| 5 | #include "Project/LiveActor/SupportFreezeSyncGroup.h" |
| 6 | |
| 7 | namespace al { |
| 8 | SupportFreezeSyncGroupHolder::SupportFreezeSyncGroupHolder() : LiveActor("DRC拘束グループ監視" ) { |
| 9 | mSupportFreezeSyncGroups = new SupportFreezeSyncGroup*[mSupportFreezeSyncGroupMaxCount]; |
| 10 | |
| 11 | for (s32 i = 0; i < mSupportFreezeSyncGroupMaxCount; i++) |
| 12 | mSupportFreezeSyncGroups[i] = nullptr; |
| 13 | } |
| 14 | |
| 15 | void SupportFreezeSyncGroupHolder::initAfterPlacementSceneObj(const ActorInitInfo& info) { |
| 16 | initActorSceneInfo(actor: this, info); |
| 17 | initExecutorUpdate(actor: this, info, "DRCアシスト同期グループ" ); |
| 18 | initActorPoseTRSV(actor: this); |
| 19 | |
| 20 | initHitSensor(amount: 1); |
| 21 | |
| 22 | HitSensor* bodySensor = addHitSensorMapObj(this, info, "Body" , 0.0f, 0, {0.0f, 0.0f, 0.0f}); |
| 23 | for (s32 i = 0; i < mSupportFreezeSyncGroupCount; i++) |
| 24 | mSupportFreezeSyncGroups[i]->setHostSensor(bodySensor); |
| 25 | |
| 26 | makeActorAlive(); |
| 27 | } |
| 28 | |
| 29 | void SupportFreezeSyncGroupHolder::movement() { |
| 30 | for (s32 i = 0; i < mSupportFreezeSyncGroupCount; i++) |
| 31 | mSupportFreezeSyncGroups[i]->movement(); |
| 32 | } |
| 33 | |
| 34 | void SupportFreezeSyncGroupHolder::regist(LiveActor* actor, const ActorInitInfo& info) { |
| 35 | SupportFreezeSyncGroup* supportFreezeSyncGroup = tryFindGroup(info); |
| 36 | if (supportFreezeSyncGroup == nullptr) { |
| 37 | supportFreezeSyncGroup = new SupportFreezeSyncGroup(); |
| 38 | supportFreezeSyncGroup->init(info); |
| 39 | |
| 40 | mSupportFreezeSyncGroups[mSupportFreezeSyncGroupCount] = supportFreezeSyncGroup; |
| 41 | mSupportFreezeSyncGroupCount++; |
| 42 | } |
| 43 | |
| 44 | supportFreezeSyncGroup->regist(actor); |
| 45 | } |
| 46 | |
| 47 | SupportFreezeSyncGroup* SupportFreezeSyncGroupHolder::tryFindGroup(const ActorInitInfo& info) { |
| 48 | for (s32 i = 0; i < mSupportFreezeSyncGroupCount; i++) |
| 49 | if (mSupportFreezeSyncGroups[i]->isEqualGroupId(info)) |
| 50 | return mSupportFreezeSyncGroups[i]; |
| 51 | |
| 52 | return nullptr; |
| 53 | } |
| 54 | } // namespace al |
| 55 | |