OdysseyDecomp/lib/al/include/Library/Camera/CameraDirector.h
MonsterDruide1 69d81ebd91
Custom format validation (Linting) (#17)
* Add script to verify formatting
* Add newline to end of files
* Add `#pragma once` to top of headers
* Add own header to includes at top of source files
* Remove useless namespace qualifiers
* Sort visibility modifiers correctly
* Format `#include`s in three blocks
* Remove `;` after namespaces
* Add for custom style checking to `lint`-GitHub-Action
* Format: No "// 0x" offset comments
* Remove macros from padding
2024-01-07 00:33:09 +01:00

102 lines
3.6 KiB
C++

#pragma once
#include <math/seadMatrix.h>
#include "Library/Execute/IUseExecutor.h"
#include "Library/HostIO/HioNode.h"
namespace al {
class SceneCameraInfo;
class SceneCameraCtrl;
class CameraPoseUpdater;
class CameraPoserFactory;
class CameraPoserSceneInfo;
class CameraTicketHolder;
class SpecialCameraHolder;
class CameraTargetCollideInfoHolder;
class CameraTargetHolder;
class CameraInputHolder;
class CameraAngleVerticalRequester;
class CameraStartParamCtrl;
class CameraStopJudge;
class CameraParamTransfer;
class CameraResourceHolder;
class CameraFlagCtrl;
class CameraInSwitchOnAreaDirector;
class CameraTicket;
class ICameraInput;
class PlacementId;
class CameraPoser;
class AreaObjDirector;
class IUseAudioKeeper;
class CameraRailHolder;
class NameToCameraParamTransferFunc;
class CameraDirector : public HioNode, IUseExecutor {
public:
virtual ~CameraDirector();
void init(CameraPoserSceneInfo*, const CameraPoserFactory*);
void initAreaCameraSwitcherMultiForPrototype(AreaObjDirector*);
void initAreaCameraSwitcherSingle();
void initResourceHolder(const CameraResourceHolder* resourceHolder);
void initSceneFovyDegree(f32 fov);
void initSettingCloudSea(f32);
void initSnapShotCameraAudioKeeper(IUseAudioKeeper* audioKeeper);
void initAndCreatePauseCameraCtrl(f32);
void execute() override;
void update();
void endInit();
CameraPoseUpdater* getPoseUpdater(s32 index);
CameraTicket* createCameraFromFactory(const char*, const PlacementId*, const char*, s32,
const sead::Matrix34f&);
CameraTicket* createCameraFromFactory(CameraPoser*, const PlacementId*, const char*, s32,
const sead::Matrix34f&, bool);
CameraTicket* createObjectCamera(const PlacementId*, const char*, const char*, s32,
const sead::Matrix34f&);
CameraTicket* createObjectEntranceCamera(const PlacementId*, const char*,
const sead::Matrix34f&);
CameraTicket* createMirrorObjectCamera(const PlacementId*, const char*, s32,
const sead::Matrix34f&);
ICameraInput* getCameraInput();
void setCameraInput(const ICameraInput* input);
void setViewCameraInput(const ICameraInput* input, s32);
void registerCameraRailHolder(CameraRailHolder* railHolder);
void setCameraParamTransferFuncTable(const NameToCameraParamTransferFunc*, s32);
f32 getSceneFovyDegree();
void validateCameraArea2D();
void invalidateCameraArea2D();
void stopByDeathPlayer();
void restartByDeathPlayer();
void startInvalidStopJudgeByDemo();
void endInvalidStopJudgeByDemo();
void startSnapShotMode(bool);
void endSnapShotMode();
private:
s32 mCountCameraPoseUpdaters;
SceneCameraInfo* mSceneCameraInfo;
SceneCameraCtrl* mSceneCameraCtrl;
CameraPoseUpdater** mPoseUpdaters;
CameraPoserFactory* mPoserFactory;
CameraPoserSceneInfo* mPoserSceneInfo;
CameraTicketHolder* mTicketHolder;
SpecialCameraHolder* mSpecialCameraHolder;
CameraTargetCollideInfoHolder* mTargetCollideInfoHolder;
CameraTargetHolder* mTargetHolder;
CameraInputHolder* mInputHolder;
CameraAngleVerticalRequester* mAngleVerticalRequester;
CameraStartParamCtrl* mStartParamCtrl;
CameraStopJudge* mStopJudge;
CameraParamTransfer* mParamTransfer;
const CameraResourceHolder* mCameraResourceHolder;
CameraFlagCtrl* mFlagCtrl;
void* customThing;
CameraInSwitchOnAreaDirector* mInSwitchOnAreaDirector;
void* anotherCustomThing;
};
} // namespace al