mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-29 20:14:41 +00:00
168 lines
5.7 KiB
C++
168 lines
5.7 KiB
C++
#pragma once
|
|
|
|
#include <basis/seadTypes.h>
|
|
|
|
#include "Library/HostIO/HioNode.h"
|
|
|
|
namespace agl {
|
|
class DrawContext;
|
|
}
|
|
|
|
namespace al {
|
|
class ActorResourceHolder;
|
|
class AreaObjDirector;
|
|
class CameraDirector;
|
|
class ClippingDirector;
|
|
class CollisionDirector;
|
|
class DemoDirector;
|
|
class EffectSystem;
|
|
class ExecuteAsyncExecutorUpdate;
|
|
class ExecuteDirector;
|
|
class GamePadSystem;
|
|
struct GraphicsInitArg;
|
|
class GraphicsSystemInfo;
|
|
class GravityHolder;
|
|
class HitSensorDirector;
|
|
class ItemDirectorBase;
|
|
class LiveActorGroup;
|
|
class ModelDisplayListController;
|
|
class ModelDrawBufferUpdater;
|
|
class ModelGroup;
|
|
class NatureDirector;
|
|
class PadRumbleDirector;
|
|
class PlayerHolder;
|
|
class ScreenPointDirector;
|
|
class ShadowDirector;
|
|
class StageSwitchDirector;
|
|
class SwitchAreaDirector;
|
|
|
|
struct ModelDrawBufferCounter {
|
|
s32 maxDrawBuffer = 3;
|
|
s32 currentDrawBuffer = 0;
|
|
};
|
|
|
|
class LiveActorKit : public HioNode {
|
|
public:
|
|
LiveActorKit(s32 maxActors, s32 maxPlayers);
|
|
virtual ~LiveActorKit();
|
|
|
|
void init(s32 maxCameras);
|
|
void initGraphics(const GraphicsInitArg& graphics);
|
|
void initHitSensorDirector();
|
|
void initGravityHolder();
|
|
void initShadowDirector();
|
|
void initEffectSystem();
|
|
// TODO: rename parameters
|
|
void initSwitchAreaDirector(s32 val1, s32 val2);
|
|
void initNatureDirector();
|
|
void endInit();
|
|
void update(const char* tableName);
|
|
void clearGraphicsRequest();
|
|
void updateGraphics();
|
|
void preDrawGraphics();
|
|
|
|
ActorResourceHolder* getActorResourceHolder() const { return mActorResourceHolder; }
|
|
|
|
AreaObjDirector* getAreaObjDirector() const { return mAreaObjDirector; }
|
|
|
|
ExecuteDirector* getExecuteDirector() const { return mExecuteDirector; }
|
|
|
|
GravityHolder* getGravityHolder() const { return mGravityHolder; }
|
|
|
|
EffectSystem* getEffectSystem() const { return mEffectSystem; }
|
|
|
|
GraphicsSystemInfo* getGraphicsSystemInfo() const { return mGraphicsSystemInfo; }
|
|
|
|
ModelDrawBufferCounter* getModelDrawBufferCounter() const { return mModelDrawBufferCounter; }
|
|
|
|
ModelDrawBufferUpdater* getModelDrawBufferUpdater() const { return mModelDrawBufferUpdater; }
|
|
|
|
ExecuteAsyncExecutorUpdate* getExecutorCore1() const { return mExecutorCore1; }
|
|
|
|
ExecuteAsyncExecutorUpdate* getExecutorCore2() const { return mExecutorCore2; }
|
|
|
|
ModelDisplayListController* getModelDisplayListController() const {
|
|
return mModelDisplayListController;
|
|
}
|
|
|
|
agl::DrawContext* getSceneDrawContext() const { return mSceneDrawContext; }
|
|
|
|
LiveActorGroup* getDynamicDrawActorGroup() const { return mDynamicDrawActorGroup; }
|
|
|
|
CameraDirector* getCameraDirector() const { return mCameraDirector; }
|
|
|
|
ClippingDirector* getClippingDirector() const { return mClippingDirector; }
|
|
|
|
CollisionDirector* getCollisionDirector() const { return mCollisionDirector; }
|
|
|
|
ItemDirectorBase* getItemDirector() const { return mItemDirector; }
|
|
|
|
PlayerHolder* getPlayerHolder() const { return mPlayerHolder; }
|
|
|
|
HitSensorDirector* getHitSensorDirector() const { return mHitSensorDirector; }
|
|
|
|
ScreenPointDirector* getScreenPointDirector() const { return mScreenPointDirector; }
|
|
|
|
ShadowDirector* getShadowDirector() const { return mShadowDirector; }
|
|
|
|
StageSwitchDirector* getStageSwitchDirector() const { return mStageSwitchDirector; }
|
|
|
|
SwitchAreaDirector* getSwitchAreaDirector() const { return mSwitchAreaDirector; }
|
|
|
|
LiveActorGroup* getLiveActorGroupAllActors() const { return mLiveActorGroupAllActors; }
|
|
|
|
DemoDirector* getDemoDirector() const { return mDemoDirector; }
|
|
|
|
GamePadSystem* getGamePadSystem() const { return mGamePadSystem; }
|
|
|
|
PadRumbleDirector* getPadRumbleDirector() const { return mPadRumbleDirector; }
|
|
|
|
NatureDirector* getNatureDirector() const { return mNatureDirector; }
|
|
|
|
ModelGroup* getModelGroup() const { return mModelGroup; }
|
|
|
|
void setItemDirector(ItemDirectorBase* itemDirector) { mItemDirector = itemDirector; }
|
|
|
|
void setDemoDirector(DemoDirector* demoDirector) { mDemoDirector = demoDirector; }
|
|
|
|
void setSceneDrawContext(agl::DrawContext* drawContext) { mSceneDrawContext = drawContext; }
|
|
|
|
void setGamePadSystem(GamePadSystem* gamePadSystem) { mGamePadSystem = gamePadSystem; }
|
|
|
|
void setEffectSystem(EffectSystem* effectSystem) { mEffectSystem = effectSystem; }
|
|
|
|
private:
|
|
s32 mMaxActors;
|
|
ActorResourceHolder* mActorResourceHolder = nullptr;
|
|
AreaObjDirector* mAreaObjDirector = nullptr;
|
|
ExecuteDirector* mExecuteDirector = nullptr;
|
|
GravityHolder* mGravityHolder = nullptr;
|
|
EffectSystem* mEffectSystem = nullptr;
|
|
GraphicsSystemInfo* mGraphicsSystemInfo = nullptr;
|
|
ModelDrawBufferCounter* mModelDrawBufferCounter = nullptr;
|
|
ModelDrawBufferUpdater* mModelDrawBufferUpdater = nullptr;
|
|
ExecuteAsyncExecutorUpdate* mExecutorCore1 = nullptr;
|
|
ExecuteAsyncExecutorUpdate* mExecutorCore2 = nullptr;
|
|
ModelDisplayListController* mModelDisplayListController = nullptr;
|
|
agl::DrawContext* mSceneDrawContext = nullptr;
|
|
LiveActorGroup* mDynamicDrawActorGroup = nullptr;
|
|
CameraDirector* mCameraDirector = nullptr;
|
|
ClippingDirector* mClippingDirector = nullptr;
|
|
CollisionDirector* mCollisionDirector = nullptr;
|
|
ItemDirectorBase* mItemDirector = nullptr;
|
|
PlayerHolder* mPlayerHolder = nullptr;
|
|
HitSensorDirector* mHitSensorDirector = nullptr;
|
|
ScreenPointDirector* mScreenPointDirector = nullptr;
|
|
ShadowDirector* mShadowDirector = nullptr;
|
|
StageSwitchDirector* mStageSwitchDirector = nullptr;
|
|
SwitchAreaDirector* mSwitchAreaDirector = nullptr;
|
|
LiveActorGroup* mLiveActorGroupAllActors = nullptr;
|
|
DemoDirector* mDemoDirector = nullptr;
|
|
GamePadSystem* mGamePadSystem = nullptr;
|
|
PadRumbleDirector* mPadRumbleDirector = nullptr;
|
|
NatureDirector* mNatureDirector = nullptr;
|
|
ModelGroup* mModelGroup = nullptr;
|
|
};
|
|
|
|
} // namespace al
|