#ifndef _CGAMECAMERA #define _CGAMECAMERA #include "types.h" #include "MetroidPrime/CActor.hpp" #include "Kyoto/Math/CMatrix4f.hpp" #include "Kyoto/Math/CTransform4f.hpp" class CFinalInput; class CGameCamera : public CActor { public: CGameCamera(TUniqueId uid, bool active, const rstl::string& name, const CEntityInfo& info, const CTransform4f& xf, float fov, float nearZ, float farZ, float aspect, TUniqueId watchedId, bool disableInput, int controllerIdx); // CEntity ~CGameCamera() override; void Accept(IVisitor& visitor) override; void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override; void SetActive(const bool active) override; // CGameCamera virtual void ProcessInput(const CFinalInput&, CStateManager& mgr) = 0; virtual void Reset(const CTransform4f&, CStateManager& mgr) = 0; // GetPerspectiveMatrix__11CGameCameraCFv // ConvertToScreenSpace__11CGameCameraCFRC9CVector3f // ValidateCameraTransform__11CGameCameraFRC12CTransform4fRC12CTransform4f // ShouldTryRender__11CGameCameraCFv void SkipFovInterpolation(); TUniqueId GetWatchedObject() const { return xe8_watchedObject; } float GetFov() const { return x15c_currentFov; } void SetFov(float fov) { x15c_currentFov = fov; } float GetNearClipDistance() const { return x160_znear; } void InterpolateFOV(float start, float fov, float time, float delayTime); void UpdatePerspective(float dt); int GetControllerNumber() const { return x16c_controllerIdx; } bool DisablesInput() const { return x170_25_disablesInput; } float GetAspectRatio() const { return x168_aspect; } protected: TUniqueId xe8_watchedObject; mutable CMatrix4f xec_perspectiveMatrix; CTransform4f x12c_origXf; float x15c_currentFov; float x160_znear; float x164_zfar; float x168_aspect; int x16c_controllerIdx; mutable bool x170_24_perspDirty : 1; bool x170_25_disablesInput : 1; float x174_delayTime; float x178_perspInterpRemTime; float x17c_perspInterpDur; float x180_perspInterpStartFov; float x184_perspInterpEndFov; }; CHECK_SIZEOF(CGameCamera, 0x188) #endif // _CGAMECAMERA