diff options
author | Norman Lin <nlin@nlin.net> | 2002-10-18 19:46:57 +0400 |
---|---|---|
committer | Norman Lin <nlin@nlin.net> | 2002-10-18 19:46:57 +0400 |
commit | b7dadcfefd24b44283fc96207d7352732eb3dae1 (patch) | |
tree | 96c5e67b287bdaf25b280c7e9ee4d40db45c453f /source/gameengine/Ketsji/KX_OdePhysicsController.h | |
parent | bdad961ce365f6a57f12832b5ba763525ac164fb (diff) |
first checkin of ode blender engine files
Diffstat (limited to 'source/gameengine/Ketsji/KX_OdePhysicsController.h')
-rw-r--r-- | source/gameengine/Ketsji/KX_OdePhysicsController.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/source/gameengine/Ketsji/KX_OdePhysicsController.h b/source/gameengine/Ketsji/KX_OdePhysicsController.h new file mode 100644 index 00000000000..89141f68488 --- /dev/null +++ b/source/gameengine/Ketsji/KX_OdePhysicsController.h @@ -0,0 +1,100 @@ +/** + * $Id$ + * + * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** + * + * The contents of this file may be used under the terms of either the GNU + * General Public License Version 2 or later (the "GPL", see + * http://www.gnu.org/licenses/gpl.html ), or the Blender License 1.0 or + * later (the "BL", see http://www.blender.org/BL/ ) which has to be + * bought from the Blender Foundation to become active, in which case the + * above mentioned GPL option does not apply. + * + * The Original Code is Copyright (C) 2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL/BL DUAL LICENSE BLOCK ***** + */ +#ifndef __KX_ODEPHYSICSCONTROLLER_H +#define __KX_ODEPHYSICSCONTROLLER_H + +#include "KX_IPhysicsController.h" +#include "OdePhysicsController.h" + + +/** + Physics Controller, a special kind of Scene Graph Transformation Controller. + It get's callbacks from Physics in case a transformation change took place. + Each time the scene graph get's updated, the controller get's a chance + in the 'Update' method to reflect changed. +*/ + +class KX_OdePhysicsController : public KX_IPhysicsController, public ODEPhysicsController + +{ + +public: + KX_OdePhysicsController( + bool dyna, + bool fullRigidBody, + bool phantom, + class PHY_IMotionState* motionstate, + struct dxSpace* space, + struct dxWorld* world, + float mass, + float friction, + float restitution, + bool implicitsphere, + float center[3], + float extends[3], + float radius); + + virtual ~KX_OdePhysicsController() {}; + + virtual void applyImpulse(const MT_Point3& attach, const MT_Vector3& impulse); + virtual void SetObject (SG_IObject* object); + + virtual void RelativeTranslate(const MT_Vector3& dloc,bool local); + virtual void RelativeRotate(const MT_Matrix3x3& drot,bool local); + virtual void ApplyTorque(const MT_Vector3& torque,bool local); + virtual void ApplyForce(const MT_Vector3& force,bool local); + virtual MT_Vector3 GetLinearVelocity(); + virtual MT_Vector3 GetVelocity(const MT_Point3& pos); + virtual void SetAngularVelocity(const MT_Vector3& ang_vel,bool local); + virtual void SetLinearVelocity(const MT_Vector3& lin_vel,bool local); + virtual void getOrientation(MT_Quaternion& orn); + virtual void setOrientation(const MT_Quaternion& orn); + virtual void setPosition(const MT_Point3& pos); + virtual void setScaling(const MT_Vector3& scaling); + virtual MT_Scalar GetMass(); + virtual MT_Vector3 getReactionForce(); + virtual void setRigidBody(bool rigid); + + virtual void SuspendDynamics(); + virtual void RestoreDynamics(); + + + virtual SG_Controller* GetReplica(class SG_Node* destnode); + + + virtual void SetSumoTransform(bool nondynaonly); + // todo: remove next line ! + virtual void SetSimulatedTime(double time); + + // call from scene graph to update + virtual bool Update(double time); + + void + SetOption( + int option, + int value + ){ + // intentionally empty + }; + +}; +#endif //__KX_ODEPHYSICSCONTROLLER_H |