X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fgraphics%2FCamera.cpp;h=74ebd5f6fb3759f99870ec618af5ed20b5c707e6;hb=1129b8ac89f1e614f69793227ccec90157708aea;hp=a72157a9ccc15c2e02d54929812b876a257fa249;hpb=2d0a41dc0a53915153ceccda914d59affd388864;p=space.git diff --git a/src/graphics/Camera.cpp b/src/graphics/Camera.cpp index a72157a..74ebd5f 100644 --- a/src/graphics/Camera.cpp +++ b/src/graphics/Camera.cpp @@ -3,28 +3,40 @@ namespace space { -Camera::Camera(int w, int h, const Vector &t) +Camera::Camera(Vector s, const Vector &t) : target(&t) -, offset(w/2, h/2) -, zoom(0) { +, size(s) +, offset(size / 2) +, zoom(1) +, zoomAcc(0) { } -void Camera::Resize(int w, int h) { - offset = Vector(w/2, h/2); +void Camera::Resize(Vector s) { + size = s; + offset = size / 2; } void Camera::Update(float delta) { + zoom += zoom * zoomAcc * delta; + if (zoom < 0.0001) zoom = 0.0001; +} + +void Camera::StartZoom() { + zoomAcc += 1; +} +void Camera::StopZoom() { + zoomAcc -= 1; } -void Camera::DoubleZoom() { - zoom += 1; +void Camera::StartShrink() { + zoomAcc -= 1; } -void Camera::HalfZoom() { - zoom -= 1; +void Camera::StopShrink() { + zoomAcc += 1; } }