From e2ade750d1efeac55ed69a72c8367a3be9882c40 Mon Sep 17 00:00:00 2001 From: plane000 Date: Sat, 6 Oct 2018 16:27:37 +0100 Subject: [PATCH] Camera class complete --- TODO.txt | 2 +- crumpet-engine/camera.cpp | 40 ++++++++++++++++++++++++++++++++++++++- crumpet-engine/camera.h | 7 ++++++- 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/TODO.txt b/TODO.txt index 470af9c..091ed25 100644 --- a/TODO.txt +++ b/TODO.txt @@ -17,7 +17,7 @@ CURRENT TODO LIST FOR THE DEVELOPMENT OF THE CRUMPET GAME ENGINE [x] x,y,w,h properties [ ] Switch other classes to use this instead of SDL_Rect* and make sure to update the render pipeline [x] Center point - [ ] Maybe a point class + [-] Maybe a point class - used Vec2* [ ] Game camera class and redo rendering pipeline [ ] Add rotation and flipping for entities and sprites [x] Camera class diff --git a/crumpet-engine/camera.cpp b/crumpet-engine/camera.cpp index 3b5e737..afeb52e 100644 --- a/crumpet-engine/camera.cpp +++ b/crumpet-engine/camera.cpp @@ -1,7 +1,45 @@ #include "camera.h" -Camera::Camera() { +Camera::Camera(int screenWidth, int screenHeight) { + Rect* res = new Rect(0, 0, screenWidth, screenHeight); + m_view = res; +} +void Camera::TranslateView(Vec2* offset) { + m_view->Translate(offset); +} + +void Camera::TranslateViewX(int x) { + m_view->TranslateX(x); +} + +void Camera::TranslateViewY(int y) { + m_view->TranslateY(y); +} + +void Camera::SetSize(Vec2* size) { + m_view->SetSize(size); +} + +void Camera::SetCenter(Vec2* point) { + m_view->x = (point->x - m_view->CenterX()); + m_view->y = (point->y - m_view->CenterY()); +} + +int Camera::GetX() { + return m_view->x; +} + +int Camera::GetY() { + return m_view->y; +} + +int Camera::GetW() { + return m_view->w; +} + +int Camera::GetH() { + return m_view->h; } Camera::~Camera() { diff --git a/crumpet-engine/camera.h b/crumpet-engine/camera.h index fc8eff3..cd40fdb 100644 --- a/crumpet-engine/camera.h +++ b/crumpet-engine/camera.h @@ -6,7 +6,7 @@ class Camera { public: - Camera(); + Camera(int screenWidth, int screenHeight); void TranslateView(Vec2* offset); void TranslateViewX(int x); void TranslateViewY(int y); @@ -14,6 +14,11 @@ public: void SetCenter(Vec2* point); + int GetX(); + int GetY(); + int GetW(); + int GetH(); + virtual ~Camera(); private: Rect* m_view;