mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-29 20:14:41 +00:00
103 lines
4.7 KiB
C++
103 lines
4.7 KiB
C++
#include "Library/LiveActor/ActorInitInfo.h"
|
|
|
|
#include "Library/Clipping/ClippingActorHolder.h"
|
|
#include "Library/Clipping/ClippingActorInfo.h"
|
|
#include "Library/Clipping/ViewIdHolder.h"
|
|
#include "Library/LiveActor/LiveActor.h"
|
|
#include "Project/Clipping/ClippingDirector.h"
|
|
|
|
namespace al {
|
|
ActorInitInfo::ActorInitInfo() = default;
|
|
|
|
void ActorInitInfo::initNew(
|
|
const PlacementInfo* pPlacementInfo, const LayoutInitInfo* pLayoutInitInfo,
|
|
LiveActorGroup* pAllActorsGroup, const ActorFactory* pActorFactory,
|
|
ActorResourceHolder* pActorResourceHolder, AreaObjDirector* pAreaObjDirector,
|
|
AudioDirector* pAudioDirector, CameraDirector* pCameraDirector,
|
|
ClippingDirector* pClippingDirector, CollisionDirector* pCollisionDirector,
|
|
DemoDirector* pDemoDirector, EffectSystemInfo* pEffectSystemInfo,
|
|
ExecuteDirector* pExecuteDirector, GameDataHolderBase* pGameDataHolder,
|
|
GravityHolder* pGravityHolder, HitSensorDirector* pHitSensorDirector,
|
|
ItemDirectorBase* pItemDirector, NatureDirector* pNatureDirector,
|
|
const GamePadSystem* pGamePadSystem, PadRumbleDirector* pPadRumbleDirector,
|
|
PlayerHolder* pPlayerHolder, SceneObjHolder* pSceneObjHolder, SceneMsgCtrl* pSceneMsgCtrl,
|
|
SceneStopCtrl* pSceneStopCtrl, ScreenCoverCtrl* pScreenCoverCtrl,
|
|
ScreenPointDirector* pScreenPointDirector, ShadowDirector* pShadowDirector,
|
|
StageSwitchDirector* pStageSwitchDirector, ModelGroup* pModelGroup,
|
|
GraphicsSystemInfo* pGraphicsSystemInfo, ModelDrawBufferCounter* pModelDrawBufferCounter,
|
|
LiveActorGroup* pKitDrawingGroup) {
|
|
actorSceneInfo.modelDrawBufferCounter = pModelDrawBufferCounter;
|
|
allActorsGroup = pAllActorsGroup;
|
|
actorFactory = pActorFactory;
|
|
actorResourceHolder = pActorResourceHolder;
|
|
effectSystemInfo = pEffectSystemInfo;
|
|
executeDirector = pExecuteDirector;
|
|
layoutInitInfo = pLayoutInitInfo;
|
|
actorSceneInfo.areaObjDirector = pAreaObjDirector;
|
|
hitSensorDirector = pHitSensorDirector;
|
|
stageSwitchDirector = pStageSwitchDirector;
|
|
screenPointDirector = pScreenPointDirector;
|
|
actorSceneInfo.cameraDirector = pCameraDirector;
|
|
actorSceneInfo.clippingDirector = pClippingDirector;
|
|
actorSceneInfo.gameDataHolder = pGameDataHolder;
|
|
actorSceneInfo.gravityHolder = pGravityHolder;
|
|
actorSceneInfo.collisionDirector = pCollisionDirector;
|
|
actorSceneInfo.demoDirector = pDemoDirector;
|
|
actorSceneInfo.itemDirector = pItemDirector;
|
|
actorSceneInfo.natureDirector = pNatureDirector;
|
|
actorSceneInfo.gamePadSystem = pGamePadSystem;
|
|
actorSceneInfo.padRumbleDirector = pPadRumbleDirector;
|
|
actorSceneInfo.playerHolder = pPlayerHolder;
|
|
actorSceneInfo.sceneObjHolder = pSceneObjHolder;
|
|
actorSceneInfo.sceneStopCtrl = pSceneStopCtrl;
|
|
actorSceneInfo.sceneMsgCtrl = pSceneMsgCtrl;
|
|
actorSceneInfo.screenCoverCtrl = pScreenCoverCtrl;
|
|
actorSceneInfo.shadowDirector = pShadowDirector;
|
|
actorSceneInfo.modelGroup = pModelGroup;
|
|
actorSceneInfo.graphicsSystemInfo = pGraphicsSystemInfo;
|
|
kitDrawingGroup = pKitDrawingGroup;
|
|
audioDirector = pAudioDirector;
|
|
placementInfo = pPlacementInfo;
|
|
viewIdHolder = ViewIdHolder::tryCreate(*pPlacementInfo);
|
|
}
|
|
|
|
void ActorInitInfo::initViewIdSelf(const PlacementInfo* pInfo, const ActorInitInfo& actorInfo) {
|
|
viewIdHolder = ViewIdHolder::tryCreate(*pInfo);
|
|
copyHostInfo(actorInfo, pInfo);
|
|
}
|
|
|
|
void ActorInitInfo::copyHostInfo(const ActorInitInfo& actorInfo, const PlacementInfo* pInfo) {
|
|
placementInfo = pInfo;
|
|
layoutInitInfo = actorInfo.layoutInitInfo;
|
|
allActorsGroup = actorInfo.allActorsGroup;
|
|
actorFactory = actorInfo.actorFactory;
|
|
actorSceneInfo = actorInfo.actorSceneInfo;
|
|
actorResourceHolder = actorInfo.actorResourceHolder;
|
|
audioDirector = actorInfo.audioDirector;
|
|
executeDirector = actorInfo.executeDirector;
|
|
effectSystemInfo = actorInfo.effectSystemInfo;
|
|
hitSensorDirector = actorInfo.hitSensorDirector;
|
|
screenPointDirector = actorInfo.screenPointDirector;
|
|
stageSwitchDirector = actorInfo.stageSwitchDirector;
|
|
kitDrawingGroup = actorInfo.kitDrawingGroup;
|
|
}
|
|
|
|
void ActorInitInfo::initViewIdHost(const PlacementInfo* pInfo, const ActorInitInfo& actorInfo) {
|
|
viewIdHolder = actorInfo.viewIdHolder;
|
|
copyHostInfo(actorInfo, pInfo);
|
|
}
|
|
|
|
void ActorInitInfo::initViewIdHostActor(const ActorInitInfo& actorInfo, const LiveActor* actor) {
|
|
viewIdHolder = actor->getSceneInfo()
|
|
->clippingDirector->getClippingActorHolder()
|
|
->find(actor)
|
|
->getViewIdHolder();
|
|
|
|
copyHostInfo(actorInfo, actorInfo.placementInfo);
|
|
}
|
|
|
|
void ActorInitInfo::initNoViewId(const PlacementInfo* pInfo, const ActorInitInfo& actorInfo) {
|
|
copyHostInfo(actorInfo, pInfo);
|
|
}
|
|
} // namespace al
|