Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

97 lines
2.3 KiB
C++

#pragma once
#ifndef CAMERA_CONTROLLER_H
#define CAMERA_CONTROLLER_H
#include <Stuff\Stuff.hpp>
class EdGUIObject;
class ObjectManager;
class DrawInfo;
using namespace Stuff;
#define VCLIPLIMIT 2.0f;
class CameraController
{
public:
bool RBMode;
bool RevMouse;
bool TerrainFollow;
CameraController(ObjectManager& object_manager);
~CameraController();
static CameraController* GetInstance();
Stuff::YawPitchRange GetYawPitchRange() const;
void SetYawPitchRange(Stuff::YawPitchRange ypr);
void SetHeight(Stuff::Scalar height);
Stuff::Scalar GetHeight() const;
void SetSpeed(Stuff::Scalar speed);
Stuff::Scalar GetSpeed() const;
Stuff::Scalar GetCameraYaw() const;
void SetCameraYaw(Stuff::Scalar yaw);
void Reset();
void Update();
void SetLookAt(const Stuff::Point3D& look_at, bool adjust_to_terrain);
Stuff::Point3D GetLookAt() const;
void Draw(DrawInfo& dinf);
float GetMinYaw() const { return (0); }
float GetMaxYaw() const { return (Stuff::Two_Pi); }
float GetMinPitch() const { return (-1.3f); }
float GetMaxPitch() const { return (1.3f); }
float GetMinDistance() const { return (0); }
float GetMaxDistance() const { return (500); }
float GetMinHeight() const { return VCLIPLIMIT; }
float GetMaxHeight() const { return (500); }
// LinearMatrix4D &GetCameraMat();
// void SetCameraMat(LinearMatrix4D &mat);
void TranslateForward(float dist);
void SaveToReg();
void LoadFromReg();
float GetDefaultYaw() const { return (0); }
float GetDefaultPitch() const { return (0.25f); }
float GetDefaultDistance() const { return (100); }
bool StaysInsideBounds(const Stuff::Point3D& new_point, const Stuff::YawPitchRange& new_ypr) const;
void SetLookAtMode(bool lmode);
bool GetLookAtMode() {return LookAtMode;}
void UpdateCamera();
bool ProcessIO();
void PutPointInsideBounds(Stuff::Point3D& point);
void PutYPRInsideBounds(Stuff::YawPitchRange& ypr);
private:
static CameraController* m_Instance;
Scalar m_LastCameraAnimateTime;
Scalar LastTime,OldDistance;
bool LookAtMode;
ObjectManager& m_ObjectManager;
Stuff::YawPitchRange m_YawPitchRange;
Stuff::Point3D m_LookAtPoint;
Stuff::Scalar m_Height;
Stuff::Scalar m_Speed;
};
#endif // CAMERA_CONTROLLER_H