]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/cameracontroller.h
Also check if the clock is stopped
[r2c2.git] / source / designer / cameracontroller.h
index b18e2519d25aadecaff80eb4e8c345b7bc7ffb85..5b6c3155314c74b2eb5b705aa90eabbeab67eee2 100644 (file)
@@ -1,17 +1,11 @@
-/* $Id$
-
-This file is part of R²C²
-Copyright © 2010 Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
 #ifndef CAMERACONTROLLER_H_
 #define CAMERACONTROLLER_H_
 
-#include <msp/gbase/window.h>
+#include <msp/graphics/window.h>
 #include <msp/gl/camera.h>
-
-class Designer;
+#include <msp/input/keyboard.h>
+#include <msp/input/mouse.h>
+#include "3d/view.h"
 
 /**
 Moves the camera based on keyboard and mouse events.  Controls are as follows:
@@ -38,17 +32,20 @@ private:
                DISTANCE
        };
 
-       Designer &designer;
-       Msp::Graphics::EventSource &event_source;
+       R2C2::View3D &view;
+       Msp::Input::Keyboard &keyboard;
+       Msp::Input::Mouse &mouse;
        Msp::GL::Camera &camera;
        int move_x;
        int move_y;
        int pointer_x;
        int pointer_y;
+       bool shift_pressed;
+       bool ctrl_pressed;
        DragMode drag_mode;
 
 public:
-       CameraController(Designer &, Msp::Graphics::EventSource &, Msp::GL::Camera &);
+       CameraController(R2C2::View3D &, Msp::Input::Keyboard &, Msp::Input::Mouse &);
 
        void top_down();
        void set_look_direction(const Msp::GL::Vector3 &);
@@ -56,16 +53,16 @@ public:
 
        void move(float, float);
        void adjust_distance(float);
-       void rotate(float);
-       void pitch(float);
+       void rotate(const R2C2::Angle &);
+       void pitch(const R2C2::Angle &);
 
        void tick(float);
 private:
-       void button_press(int, int, unsigned, unsigned);
-       void button_release(int, int, unsigned, unsigned);
-       void pointer_motion(int, int);
-       void key_press(unsigned, unsigned, wchar_t);
-       void key_release(unsigned, unsigned);
+       void button_press(unsigned);
+       void button_release(unsigned);
+       void axis_motion(unsigned, float, float);
+       void key_press(unsigned);
+       void key_release(unsigned);
 
 public:
        /** Return the focus point, i.e. where the look ray intersects with ground. */