prime/include/MetroidPrime/Cameras/CCameraManager.hpp

75 lines
2.1 KiB
C++
Raw Normal View History

#ifndef _CCAMERAMANAGER
#define _CCAMERAMANAGER
2022-08-13 01:26:00 +00:00
#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;
class CGameCamera;
2022-08-13 01:26:00 +00:00
class CInterpolationCamera;
class CStateManager;
2022-08-13 01:26:00 +00:00
class CCameraManager {
public:
2022-11-04 05:39:14 +00:00
CGameCamera& CurrentCamera(CStateManager& mgr) const;
const CGameCamera& GetCurrentCamera(const CStateManager& mgr) const;
2022-10-08 04:53:28 +00:00
CFirstPersonCamera* FirstPersonCamera() const /* map */ { return x7c_fpCamera; }
2022-10-05 18:05:56 +00:00
const CFirstPersonCamera* GetFirstPersonCamera() const { return x7c_fpCamera; }
2022-09-29 05:30:20 +00:00
void SetPlayerCamera(CStateManager& mgr, TUniqueId newCamId);
void SetFogDensity(float fogDensityTarget, float fogDensitySpeed);
2022-10-06 20:34:27 +00:00
bool IsInCinematicCamera() const;
2022-11-03 12:29:47 +00:00
void RemoveCameraShaker(int id);
int AddCameraShaker(const CCameraShakeData& data, bool sfx);
static float DefaultThirdPersonFov();
2022-10-21 12:01:25 +00:00
int GetFluidCounter() const { return x74_fluidCounter; }
2022-09-21 05:18:07 +00:00
2022-08-13 01:26:00 +00:00
private:
TUniqueId x0_curCameraId;
rstl::vector< TUniqueId > x4_cineCameras;
rstl::list< CCameraShakeData > x14_shakers;
uint x2c_lastShakeId;
2022-08-13 01:26:00 +00:00
CVector3f x30_shakeOffset;
CAreaFog x3c_fog;
int x74_fluidCounter;
2022-08-13 01:26:00 +00:00
TUniqueId x78_fluidId;
CFirstPersonCamera* x7c_fpCamera;
CBallCamera* x80_ballCamera;
int x84_rumbleId;
2022-08-13 01:26:00 +00:00
CInterpolationCamera* x88_interpCamera;
short x8c_;
float x90_rumbleCooldown;
float x94_fogDensityFactor;
float x98_fogDensitySpeed;
float x9c_fogDensityFactorTarget;
2022-08-13 01:26:00 +00:00
bool xa0_24_pendingRumble : 1;
bool xa0_25_rumbling : 1;
bool xa0_26_inWater : 1;
TUniqueId xa2_spindleCamId;
TUniqueId xa4_pathCamId;
TUniqueId xa6_camHintId;
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;
float x3bc_curFov;
2022-08-13 01:26:00 +00:00
};
CHECK_SIZEOF(CCameraManager, 0x3c0)
#endif // _CCAMERAMANAGER