X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fcamera.hpp;h=061fe4d1b26a87313b1cdc8788f9042b75d229dc;hb=7e15c4f871809033278711a6e9327616da00c4c9;hp=0f4d043d537fa57b569f21eac54f437643d08c09;hpb=bfb1843f48afe90512ac90b4f4b8451f1f0e1d18;p=supertux.git diff --git a/src/object/camera.hpp b/src/object/camera.hpp index 0f4d043d5..061fe4d1b 100644 --- a/src/object/camera.hpp +++ b/src/object/camera.hpp @@ -50,9 +50,8 @@ public: /// write camera mode to a lisp file virtual void write(lisp::Writer& writer); - /// reset camera postion - virtual void reset(const Vector& tuxpos); - virtual void reset_kd(const Vector& tuxpos); + /// reset camera position + void reset(const Vector& tuxpos); /** return camera position */ const Vector& get_translation() const; @@ -87,18 +86,24 @@ public: }; CameraMode mode; + /** + * get the coordinates of the point directly in the center of this camera + */ + Vector get_center() const; + private: void update_scroll_normal(float elapsed_time); - void update_scroll_normal_kd(float elapsed_time); - void update_scroll_normal_exp(float elapsed_time); void update_scroll_autoscroll(float elapsed_time); void update_scroll_to(float elapsed_time); void keep_in_bounds(Vector& vector); void shake(); - enum LeftRightScrollChange - { - NONE, LEFT, RIGHT + /** + * The camera basically provides lookahead on the left or right side + * or is undecided. + */ + enum LookaheadMode { + LOOKAHEAD_NONE, LOOKAHEAD_LEFT, LOOKAHEAD_RIGHT }; Vector translation; @@ -106,8 +111,11 @@ private: Sector* sector; // normal mode - bool do_backscrolling; - LeftRightScrollChange scrollchange; + LookaheadMode lookahead_mode; + float changetime; + Vector lookahead_pos; + Vector peek_pos; + Vector cached_translation; // autoscroll mode std::auto_ptr autoscroll_path;