2018-10-07 03:42:33 +00:00
|
|
|
#pragma once
|
2016-04-16 21:49:47 +00:00
|
|
|
|
|
|
|
#include "CGameCamera.hpp"
|
2017-11-20 17:33:21 +00:00
|
|
|
#include "CCameraSpline.hpp"
|
2016-04-16 21:49:47 +00:00
|
|
|
|
2018-12-08 05:30:43 +00:00
|
|
|
namespace urde {
|
2016-04-16 21:49:47 +00:00
|
|
|
|
2018-12-08 05:30:43 +00:00
|
|
|
class CPathCamera : public CGameCamera {
|
2016-04-16 21:49:47 +00:00
|
|
|
public:
|
2018-12-08 05:30:43 +00:00
|
|
|
enum class EInitialSplinePosition { BallCamBasis, Negative, Positive, ClampBasis };
|
|
|
|
|
2017-11-20 17:33:21 +00:00
|
|
|
private:
|
2018-12-08 05:30:43 +00:00
|
|
|
CCameraSpline x188_spline;
|
|
|
|
float x1d4_pos = 0.f;
|
|
|
|
float x1d8_time = 0.f;
|
|
|
|
float x1dc_lengthExtent;
|
|
|
|
float x1e0_filterMag;
|
|
|
|
float x1e4_filterProportion;
|
|
|
|
EInitialSplinePosition x1e8_initPos;
|
|
|
|
u32 x1ec_flags;
|
|
|
|
float x1f0_minEaseDist;
|
|
|
|
float x1f4_maxEaseDist;
|
2017-11-20 17:33:21 +00:00
|
|
|
|
|
|
|
public:
|
2018-12-08 05:30:43 +00:00
|
|
|
CPathCamera(TUniqueId uid, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf, bool active,
|
|
|
|
float lengthExtent, float filterMag, float filterProportion, float minEaseDist, float maxEaseDist,
|
|
|
|
u32 flags, EInitialSplinePosition initPos);
|
|
|
|
|
2019-08-09 19:46:49 +00:00
|
|
|
void Accept(IVisitor&) override;
|
|
|
|
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) override;
|
|
|
|
void Think(float, CStateManager&) override;
|
|
|
|
void Render(const CStateManager&) const override {}
|
|
|
|
void ProcessInput(const CFinalInput&, CStateManager& mgr) override;
|
|
|
|
void Reset(const zeus::CTransform&, CStateManager& mgr) override;
|
2018-12-08 05:30:43 +00:00
|
|
|
zeus::CTransform MoveAlongSpline(float, CStateManager&);
|
|
|
|
void ClampToClosedDoor(CStateManager&);
|
2016-04-16 21:49:47 +00:00
|
|
|
};
|
|
|
|
|
2018-12-08 05:30:43 +00:00
|
|
|
} // namespace urde
|