2022-08-13 01:26:00 +00:00
|
|
|
#ifndef _CCAMERAMANAGER_HPP
|
|
|
|
#define _CCAMERAMANAGER_HPP
|
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
|
|
|
#include "MetroidPrime/CAreaFog.hpp"
|
|
|
|
#include "MetroidPrime/TGameTypes.hpp"
|
|
|
|
|
|
|
|
#include "Kyoto/Math/CVector3f.hpp"
|
|
|
|
|
|
|
|
#include "rstl/list.hpp"
|
|
|
|
#include "rstl/pair.hpp"
|
|
|
|
#include "rstl/reserved_vector.hpp"
|
|
|
|
#include "rstl/vector.hpp"
|
|
|
|
|
|
|
|
class CBallCamera;
|
|
|
|
class CCameraShakeData;
|
|
|
|
class CFirstPersonCamera;
|
2022-08-13 02:48:34 +00:00
|
|
|
class CGameCamera;
|
2022-08-13 01:26:00 +00:00
|
|
|
class CInterpolationCamera;
|
2022-08-13 02:48:34 +00:00
|
|
|
class CStateManager;
|
2022-08-13 01:26:00 +00:00
|
|
|
|
|
|
|
class CCameraManager {
|
2022-08-13 02:48:34 +00:00
|
|
|
public:
|
2022-10-04 14:08:26 +00:00
|
|
|
CGameCamera* CurrentCamera(CStateManager& mgr);
|
|
|
|
const CGameCamera* GetCurrentCamera(const CStateManager& mgr) const;
|
2022-09-29 05:30:20 +00:00
|
|
|
void SetPlayerCamera(CStateManager& mgr, TUniqueId newCamId);
|
2022-08-13 02:48:34 +00:00
|
|
|
|
2022-10-02 10:13:35 +00:00
|
|
|
void SetFogDensity(float fogDensityTarget, float fogDensitySpeed);
|
|
|
|
|
2022-09-21 05:18:07 +00:00
|
|
|
static f32 DefaultThirdPersonFov();
|
|
|
|
|
2022-08-13 01:26:00 +00:00
|
|
|
private:
|
|
|
|
TUniqueId x0_curCameraId;
|
|
|
|
rstl::vector< TUniqueId > x4_cineCameras;
|
|
|
|
rstl::list< CCameraShakeData > x14_shakers;
|
2022-09-05 04:01:13 +00:00
|
|
|
uint x2c_lastShakeId;
|
2022-08-13 01:26:00 +00:00
|
|
|
CVector3f x30_shakeOffset;
|
|
|
|
CAreaFog x3c_fog;
|
2022-09-05 04:01:13 +00:00
|
|
|
int x74_fluidCounter;
|
2022-08-13 01:26:00 +00:00
|
|
|
TUniqueId x78_fluidId;
|
|
|
|
CFirstPersonCamera* x7c_fpCamera;
|
|
|
|
CBallCamera* x80_ballCamera;
|
2022-09-05 04:01:13 +00:00
|
|
|
int x84_rumbleId;
|
2022-08-13 01:26:00 +00:00
|
|
|
CInterpolationCamera* x88_interpCamera;
|
2022-08-13 02:48:34 +00:00
|
|
|
s16 x8c_;
|
2022-08-13 01:26:00 +00:00
|
|
|
f32 x90_rumbleCooldown;
|
|
|
|
f32 x94_fogDensityFactor;
|
|
|
|
f32 x98_fogDensitySpeed;
|
|
|
|
f32 x9c_fogDensityFactorTarget;
|
|
|
|
bool xa0_24_pendingRumble : 1;
|
|
|
|
bool xa0_25_rumbling : 1;
|
|
|
|
bool xa0_26_inWater : 1;
|
|
|
|
TUniqueId xa2_spindleCamId;
|
|
|
|
TUniqueId xa4_pathCamId;
|
|
|
|
TUniqueId xa6_camHintId;
|
2022-09-05 04:01:13 +00:00
|
|
|
int xa8_hintPriority;
|
|
|
|
rstl::reserved_vector< rstl::pair< int, TUniqueId >, 64 > xac_cameraHints;
|
2022-08-13 01:26:00 +00:00
|
|
|
rstl::reserved_vector< TUniqueId, 64 > x2b0_inactiveCameraHints;
|
|
|
|
rstl::reserved_vector< TUniqueId, 64 > x334_activeCameraHints;
|
|
|
|
bool x3b8_24_ : 1;
|
|
|
|
bool x3b8_25_ : 1;
|
2022-08-13 02:48:34 +00:00
|
|
|
f32 x3bc_curFov;
|
2022-08-13 01:26:00 +00:00
|
|
|
};
|
|
|
|
CHECK_SIZEOF(CCameraManager, 0x3c0)
|
|
|
|
|
2022-09-18 06:05:46 +00:00
|
|
|
#endif
|