00001 /* 00002 Enki - a fast 2D robot simulator 00003 Copyright (C) 1999-2008 Stephane Magnenat <stephane at magnenat dot net> 00004 Copyright (C) 2004-2005 Markus Waibel <markus dot waibel at epfl dot ch> 00005 Copyright (c) 2004-2005 Antoine Beyeler <abeyeler at ab-ware dot com> 00006 Copyright (C) 2005-2006 Laboratory of Intelligent Systems, EPFL, Lausanne 00007 Copyright (C) 2006-2008 Laboratory of Robotics Systems, EPFL, Lausanne 00008 See AUTHORS for details 00009 00010 This program is free software; the authors of any publication 00011 arising from research using this software are asked to add the 00012 following reference: 00013 Enki - a fast 2D robot simulator 00014 http://lis.epfl.ch/enki 00015 Stephane Magnenat <stephane at magnenat dot net>, 00016 Markus Waibel <markus dot waibel at epfl dot ch> 00017 Laboratory of Intelligent Systems, EPFL, Lausanne. 00018 00019 You can redistribute this program and/or modify 00020 it under the terms of the GNU General Public License as published by 00021 the Free Software Foundation; either version 2 of the License, or 00022 (at your option) any later version. 00023 00024 This program is distributed in the hope that it will be useful, 00025 but WITHOUT ANY WARRANTY; without even the implied warranty of 00026 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00027 GNU General Public License for more details. 00028 00029 You should have received a copy of the GNU General Public License 00030 along with this program; if not, write to the Free Software 00031 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00032 */ 00033 00034 #ifndef __ENKI_INTERACTION_H 00035 #define __ENKI_INTERACTION_H 00036 00045 namespace Enki 00046 { 00047 class PhysicalObject; 00048 class Robot; 00049 class World; 00050 00052 00053 class LocalInteraction 00054 { 00055 protected: 00057 double r; 00058 00060 friend class Robot; 00062 Robot *owner; 00063 00064 public : 00066 LocalInteraction() {} 00068 LocalInteraction(double range, Robot* owner) : r(range), owner(owner) {} 00070 virtual ~LocalInteraction() { } 00072 virtual void init(double dt, World* w) { } 00074 00079 virtual void objectStep(double dt, World* w, PhysicalObject *po) { } 00081 00084 virtual void wallsStep(double dt, World* w) { } 00086 virtual void finalize(double dt, World* w) { } 00088 double getRange() const { return r; } 00089 }; 00090 00092 00093 class GlobalInteraction 00094 { 00095 protected: 00097 Robot *owner; 00098 00099 public : 00101 GlobalInteraction() {} 00103 GlobalInteraction(Robot* owner) : owner(owner) {} 00105 virtual ~GlobalInteraction() { } 00107 virtual void init(double dt, World *w) { } 00109 virtual void step(double dt, World *w) { } 00111 virtual void finalize(double dt, World *w) { } 00112 }; 00113 } 00114 #endif 00115
1.5.1