00001 /************************************************************************* 00002 * * 00003 * Open Physics Abstraction Layer * 00004 * Copyright (C) 2004-2005 * 00005 * Alan Fischer alan.fischer@gmail.com * 00006 * Andres Reinot andres@reinot.com * 00007 * Tyler Streeter tylerstreeter@gmail.com * 00008 * All rights reserved. * 00009 * Web: opal.sourceforge.net * 00010 * * 00011 * This library is free software; you can redistribute it and/or * 00012 * modify it under the terms of EITHER: * 00013 * (1) The GNU Lesser General Public License as published by the Free * 00014 * Software Foundation; either version 2.1 of the License, or (at * 00015 * your option) any later version. The text of the GNU Lesser * 00016 * General Public License is included with this library in the * 00017 * file license-LGPL.txt. * 00018 * (2) The BSD-style license that is included with this library in * 00019 * the file license-BSD.txt. * 00020 * * 00021 * This library is distributed in the hope that it will be useful, * 00022 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * 00024 * license-LGPL.txt and license-BSD.txt for more details. * 00025 * * 00026 *************************************************************************/ 00027 00028 #ifndef OPAL_MOTOR_H 00029 #define OPAL_MOTOR_H 00030 00031 #include "Defines.h" 00032 #include "MotorData.h" 00033 00034 namespace opal 00035 { 00036 class Solid; 00037 class Joint; 00038 00047 class Motor 00048 { 00049 public: 00050 Motor(); 00051 00053 virtual void OPAL_CALL setEnabled(bool e) = 0; 00054 00056 virtual bool OPAL_CALL isEnabled()const = 0; 00057 00061 virtual void OPAL_CALL setUserData(void* data); 00062 00064 virtual void* OPAL_CALL getUserData(); 00065 00067 virtual MotorType OPAL_CALL getType()const = 0; 00068 00070 virtual void OPAL_CALL setName(const std::string& name) = 0; 00071 00073 virtual const std::string& OPAL_CALL getName()const = 0; 00074 00077 virtual void OPAL_CALL internal_update() = 0; 00078 00080 virtual bool OPAL_CALL internal_dependsOnSolid(Solid* s); 00081 00083 virtual bool OPAL_CALL internal_dependsOnJoint(Joint* j); 00084 00087 //virtual void OPAL_CALL internal_setCustom(bool c); 00088 00090 //virtual bool OPAL_CALL internal_isCustom(); 00091 00093 virtual void OPAL_CALL internal_destroy(); 00094 00095 protected: 00096 virtual ~Motor(); 00097 00099 void init(); 00100 00103 void* mUserData; 00104 00107 //bool mIsCustom; 00108 00111 bool mInitCalled; 00112 00113 private: 00114 00115 }; 00116 } 00117 00118 #endif