X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fpath_walker.hpp;h=829eca175f9b547262d3a1c2273c7319a788ccf0;hb=04a3157ef478169b5a3fc05dae00ed6ee6a1fae2;hp=9f237eff69b98b776456db82b86dcc380395c1e0;hpb=7eedaa580901ec970795fe66d6e7fa56349fb0a0;p=supertux.git diff --git a/src/object/path_walker.hpp b/src/object/path_walker.hpp index 9f237eff6..829eca175 100644 --- a/src/object/path_walker.hpp +++ b/src/object/path_walker.hpp @@ -32,7 +32,7 @@ class PathWalker { public: - PathWalker(const Path* path); + PathWalker(const Path* path, bool running = true); virtual ~PathWalker(); /** @@ -41,16 +41,38 @@ public: */ virtual Vector advance(float elapsed_time); + /** advance until at given node, then stop */ + void goto_node(int node_no); + + /** start advancing automatically */ + void start_moving(); + + /** stop advancing automatically */ + void stop_moving(); + + /** returns true if PathWalker is currently moving */ + bool is_moving() { + return running; + } + const Path* path; private: void advance_node(); void goback_node(); - + + /** + * set to false to immediately stop advancing + */ + bool running; + size_t current_node_nr; size_t next_node_nr; - Vector last_pos; + /** + * stop advancing automatically when this node is reached + */ + int stop_at_node_nr; /** * the position between the current node and the next node as fraction