X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fpath.hpp;h=779ca192318b3dcb07db9b4ee733714ac3076675;hb=c1277f5b7db9f55d1d28f658b4e804f32b76f0ce;hp=60812ecfbc847d81d033ebd789bf3913516ddd58;hpb=02288dc76442bd6616a200a2d22c0954d2fc8180;p=supertux.git diff --git a/src/object/path.hpp b/src/object/path.hpp index 60812ecfb..779ca1923 100644 --- a/src/object/path.hpp +++ b/src/object/path.hpp @@ -1,43 +1,67 @@ -// $Id$ -// // SuperTux Path // Copyright (C) 2005 Philipp // Copyright (C) 2006 Christoph Sommer // Copyright (C) 2006 Matthias Braun // -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA. -#ifndef __PATH_HPP__ -#define __PATH_HPP__ +// along with this program. If not, see . + +#ifndef HEADER_SUPERTUX_OBJECT_PATH_HPP +#define HEADER_SUPERTUX_OBJECT_PATH_HPP #include + #include "math/vector.hpp" -#include "lisp/lisp.hpp" -#include "serializable.hpp" +#include "util/reader_fwd.hpp" +#include "util/writer_fwd.hpp" -class Path : public Serializable +class Path { public: Path(); ~Path(); - void read(const lisp::Lisp& reader); - void write(lisp::Writer& writer); + void read(const Reader& reader); Vector get_base() const; + /** + * Helper class that stores an individual node of a Path + */ + class Node + { + public: + Vector position; /**< the position of this node */ + float time; /**< time (in seconds) to get from this node to next node */ + + Node() : + position(), + time() + {} + }; + + std::vector nodes; + + /** + * returns Node index nearest to reference_point or -1 if not applicable + */ + int get_nearest_node_no(Vector reference_point) const; + + /** + * returns Node index farthest from reference_point or -1 if not applicable + */ + int get_farthest_node_no(Vector reference_point) const; + private: friend class PathWalker; @@ -50,20 +74,9 @@ private: CIRCULAR }; - /** - * Helper class that stores an individual node of a Path - */ - class Node - { - public: - Vector position; /**< the position of this node */ - float time; /**< time (in seconds) to get from this node to next node */ - }; - - std::vector nodes; - WalkMode mode; }; #endif +/* EOF */