00001 /*========================================================================= 00002 UberSim Source Code Release 00003 ------------------------------------------------------------------------- 00004 Copyright (C) 2002 Manuela Veloso, Brett Browning, Mike Bowling, 00005 James Bruce; {mmv, brettb, mhb, jbruce}@cs.cmu.edu 00006 Erick Tryzelaar {erickt}@andrew.cmu.edu 00007 School of Computer Science, Carnegie Mellon University 00008 ------------------------------------------------------------------------- 00009 This software is distributed under the GNU General Public License, 00010 version 2. If you do not have a copy of this licence, visit 00011 www.gnu.org, or write: Free Software Foundation, 59 Temple Place, 00012 Suite 330 Boston, MA 02111-1307 USA. This program is distributed 00013 in the hope that it will be useful, but WITHOUT ANY WARRANTY, 00014 including MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00015 -------------------------------------------------------------------------*/ 00016 00017 #ifndef __SIM_MOTION_CONTROLLER_H__ 00018 #define __SIM_MOTION_CONTROLLER_H__ 00019 00020 #include "Controller.h" 00021 #include "Matrix33.h" 00022 #include "Vector3.h" 00028 class Spatial; 00029 00030 class MotionController : Controller 00031 { 00032 public: 00033 MotionController (); 00034 virtual ~MotionController (); 00035 00036 public: 00037 Spatial* getModel (); 00038 00039 Vector3& getLocalPosition (); 00040 Matrix33& getLocalRotation (); 00041 Vector3& getLocalVelocity (); 00042 Vector3& getLocalAngularVelocity (); 00043 Vector3& getLocalAcceleration (); 00044 Vector3& getLocalAngularAcceleration (); 00045 00046 Vector3& getWorldPosition (); 00047 Matrix33& getWorldRotation (); 00048 Vector3& getWorldVelocity (); 00049 Vector3& getWorldAngularVelocity (); 00050 Vector3& getWorldAcceleration (); 00051 Vector3& getWorldAngularAcceleration (); 00052 00053 public: 00054 virtual void setModel (Spatial* model); 00055 00056 virtual void setLocalPosition (const Vector3& localPosition); 00057 virtual void setLocalRotation (const Matrix33& localRotation); 00058 virtual void setLocalVelocity (const Vector3& localVelocity); 00059 virtual void setLocalAngularVelocity (const Vector3& localAngularVelocity); 00060 virtual void setLocalAcceleration (const Vector3& localAcceleration); 00061 virtual void setLocalAngularAcceleration (const Vector3& localAngularAcceleration); 00062 00063 virtual void setWorldPosition (const Vector3& worldPosition); 00064 virtual void setWorldRotation (const Matrix33& worldRotation); 00065 virtual void setWorldVelocity (const Vector3& worldVelocity); 00066 virtual void setWorldAngularVelocity (const Vector3& worldAngularVelocity); 00067 virtual void setWorldAcceleration (const Vector3& worldAcceleration); 00068 virtual void setWorldAngularAcceleration (const Vector3& worldAngularAcceleration); 00069 00070 public: 00071 virtual void update (Real deltaTime); 00072 00073 protected: 00074 Spatial* model; 00075 00076 Vector3 localVelocity; 00077 Vector3 localAngularVelocity; 00078 Vector3 localAcceleration; 00079 Vector3 localAngularAcceleration; 00080 00081 Vector3 worldVelocity; 00082 Vector3 worldAngularVelocity; 00083 Vector3 worldAcceleration; 00084 Vector3 worldAngularAcceleration; 00085 }; 00086 00087 #endif