]> git.localhorst.tv Git - space.git/blobdiff - src/graphics/Camera.h
simple zoom
[space.git] / src / graphics / Camera.h
index 10699f097e2f5e6d9ca38892bd5d78a3aa5bff7e..e40b051bc64d78c18479fdbcac6f276049a0e830 100644 (file)
@@ -12,16 +12,37 @@ public:
        Camera(int w, int h, const Vector<float> &);
 
 public:
+       void SetTarget(const Vector<float> &t) { target = &t; }
+       void SetZoom(float z) { zoom = z; }
+
        void Resize(int w, int h);
+       void Update(float deltaT);
+
+       void DoubleZoom();
+       void HalfZoom();
 
-       Vector<float> Offset() {
-               return -(*target - offset);
+       Vector<int> ToScreen(Vector<float> v) const {
+               return Vector<int>(OffsetOf(v));
+       }
+       Vector<float> OffsetOf(Vector<float> v) const {
+               return ToScale(v - *target) + offset;
+       }
+       Vector<float> ToScale(Vector<float> v) const {
+               if (zoom == 0) {
+                       return v;
+               } else if (zoom > 0) {
+                       return v * float(1 << zoom);
+               } else {
+                       return v / float(1 << -zoom);
+               }
        }
 
 private:
        const Vector<float> *target;
        Vector<float> offset;
 
+       int zoom;
+
 };
 
 }