X-Git-Url: http://git.localhorst.tv/?p=space.git;a=blobdiff_plain;f=src%2Fgraphics%2FCamera.h;h=4d49cb618d6ece6ecb2c40635aa4c66a219231f5;hp=911f23601feacc59b287cf2734924470b20640c8;hb=08d0e47634e1632c96ebe3308535a86f5e625b40;hpb=11306935dbf7213d583222ce239985e1b3f180bf diff --git a/src/graphics/Camera.h b/src/graphics/Camera.h index 911f236..4d49cb6 100644 --- a/src/graphics/Camera.h +++ b/src/graphics/Camera.h @@ -15,6 +15,9 @@ public: void SetTarget(const Vector &t) { target = &t; } void SetZoom(float z) { zoom = z; } + Vector ScreenSize() const { return size; } + float Zoom() const { return zoom; } + void Resize(int w, int h); void Update(float deltaT); @@ -23,18 +26,27 @@ public: void StartShrink(); void StopShrink(); + /// transform v from world coords to screen coords Vector ToScreen(Vector v) const { - return Vector(OffsetOf(v)) + offset; - } - Vector OffsetOf(Vector v) const { - return ToScale(v - *target); + return Vector(ToScale(v - *target)) + offset; } + /// scale v to current zoom level Vector ToScale(Vector v) const { return v * zoom; } + /// transform v from screen coords to world coords + Vector FromScreen(Vector v) const { + return FromScale(v - offset) + *target; + } + /// scale v back from current zoom level + Vector FromScale(Vector v) const { + return v / zoom; + } + private: const Vector *target; + Vector size; Vector offset; float zoom;