#pragma once class Camera { public: Camera(float width, float height); ~Camera(); void Translate() const; void SetLevelBoundaries(const Rectf& levelBoundaries); void SetTarget(const Rectf& target); void SnapToTarget(); void SetOffset(const Point2f& offset); Point2f& GetOffset(); void SetSmoothing(float smoothing); float& GetSmoothing(); void Update(float elapsedSec); private: Point2f m_Position; const Rectf* m_pTarget; float m_Smoothing; Point2f m_Offset; float m_Width; float m_Height; Rectf m_LevelBoundaries; void Clamp(Point2f& bottomLeftPos) const; };