+++ /dev/null
-/*************************************************************************
- * *
- * Open Dynamics Engine, Copyright (C) 2001, 2002 Russell L. Smith. *
- * All rights reserved. Email: russ@q12.org Web: www.q12.org *
- * *
- * This library is free software; you can redistribute it and/or *
- * modify it under the terms of EITHER: *
- * (1) The GNU Lesser General Public License as published by the Free *
- * Software Foundation; either version 2.1 of the License, or (at *
- * your option) any later version. The text of the GNU Lesser *
- * General Public License is included with this library in the *
- * file LICENSE.TXT. *
- * (2) The BSD-style license that is included with this library in *
- * the file LICENSE-BSD.TXT. *
- * *
- * This library 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 files *
- * LICENSE.TXT and LICENSE-BSD.TXT for more details. *
- * *
- *************************************************************************/
-
-/* C++ interface for non-collision stuff */
-
-
-#ifndef _ODE_ODECPP_H_
-#define _ODE_ODECPP_H_
-#ifdef __cplusplus
-
-
-
-
-//namespace ode {
-
-
-class dWorldSimpleIDContainer {
-protected:
- dWorldID _id;
-
- dWorldSimpleIDContainer(): _id(0) {}
- ~dWorldSimpleIDContainer() { destroy(); }
-
- void destroy() {
- if (_id) {
- dWorldDestroy(_id);
- _id = 0;
- }
- }
-};
-
-class dWorldDynamicIDContainer: public dWorldSimpleIDContainer {
-protected:
- virtual ~dWorldDynamicIDContainer() {}
-};
-
-template <class dWorldTemplateBase>
-class dWorldTemplate: public dWorldTemplateBase {
- // intentionally undefined, don't use these
- dWorldTemplate (const dWorldTemplate<dWorldTemplateBase> &);
- void operator= (const dWorldTemplate<dWorldTemplateBase> &);
-
-protected:
- dWorldID get_id() const { return dWorldTemplateBase::_id; }
- void set_id(dWorldID value) { dWorldTemplateBase::_id = value; }
-
-public:
- dWorldTemplate()
- { set_id(dWorldCreate()); }
-
- dWorldID id() const
- { return get_id(); }
- operator dWorldID() const
- { return get_id(); }
-
- void setGravity (dReal x, dReal y, dReal z)
- { dWorldSetGravity (get_id(), x, y, z); }
- void setGravity (const dVector3 g)
- { setGravity (g[0], g[1], g[2]); }
- void getGravity (dVector3 g) const
- { dWorldGetGravity (get_id(), g); }
-
- void setERP (dReal erp)
- { dWorldSetERP(get_id(), erp); }
- dReal getERP() const
- { return dWorldGetERP(get_id()); }
-
- void setCFM (dReal cfm)
- { dWorldSetCFM(get_id(), cfm); }
- dReal getCFM() const
- { return dWorldGetCFM(get_id()); }
-
- void step (dReal stepsize)
- { dWorldStep (get_id(), stepsize); }
-
- void quickStep(dReal stepsize)
- { dWorldQuickStep (get_id(), stepsize); }
- void setQuickStepNumIterations(int num)
- { dWorldSetQuickStepNumIterations (get_id(), num); }
- int getQuickStepNumIterations() const
- { return dWorldGetQuickStepNumIterations (get_id()); }
- void setQuickStepW(dReal over_relaxation)
- { dWorldSetQuickStepW (get_id(), over_relaxation); }
- dReal getQuickStepW() const
- { return dWorldGetQuickStepW (get_id()); }
-
- void setAutoDisableLinearThreshold (dReal threshold)
- { dWorldSetAutoDisableLinearThreshold (get_id(), threshold); }
- dReal getAutoDisableLinearThreshold() const
- { return dWorldGetAutoDisableLinearThreshold (get_id()); }
- void setAutoDisableAngularThreshold (dReal threshold)
- { dWorldSetAutoDisableAngularThreshold (get_id(), threshold); }
- dReal getAutoDisableAngularThreshold() const
- { return dWorldGetAutoDisableAngularThreshold (get_id()); }
- void setAutoDisableSteps (int steps)
- { dWorldSetAutoDisableSteps (get_id(), steps); }
- int getAutoDisableSteps() const
- { return dWorldGetAutoDisableSteps (get_id()); }
- void setAutoDisableTime (dReal time)
- { dWorldSetAutoDisableTime (get_id(), time); }
- dReal getAutoDisableTime() const
- { return dWorldGetAutoDisableTime (get_id()); }
- void setAutoDisableFlag (int do_auto_disable)
- { dWorldSetAutoDisableFlag (get_id(), do_auto_disable); }
- int getAutoDisableFlag() const
- { return dWorldGetAutoDisableFlag (get_id()); }
-
- dReal getLinearDampingThreshold() const
- { return dWorldGetLinearDampingThreshold(get_id()); }
- void setLinearDampingThreshold(dReal threshold)
- { dWorldSetLinearDampingThreshold(get_id(), threshold); }
- dReal getAngularDampingThreshold() const
- { return dWorldGetAngularDampingThreshold(get_id()); }
- void setAngularDampingThreshold(dReal threshold)
- { dWorldSetAngularDampingThreshold(get_id(), threshold); }
- dReal getLinearDamping() const
- { return dWorldGetLinearDamping(get_id()); }
- void setLinearDamping(dReal scale)
- { dWorldSetLinearDamping(get_id(), scale); }
- dReal getAngularDamping() const
- { return dWorldGetAngularDamping(get_id()); }
- void setAngularDamping(dReal scale)
- { dWorldSetAngularDamping(get_id(), scale); }
- void setDamping(dReal linear_scale, dReal angular_scale)
- { dWorldSetDamping(get_id(), linear_scale, angular_scale); }
-
- dReal getMaxAngularSpeed() const
- { return dWorldGetMaxAngularSpeed(get_id()); }
- void setMaxAngularSpeed(dReal max_speed)
- { dWorldSetMaxAngularSpeed(get_id(), max_speed); }
-
- void setContactSurfaceLayer(dReal depth)
- { dWorldSetContactSurfaceLayer (get_id(), depth); }
- dReal getContactSurfaceLayer() const
- { return dWorldGetContactSurfaceLayer (get_id()); }
-
- void impulseToForce (dReal stepsize, dReal ix, dReal iy, dReal iz,
- dVector3 force)
- { dWorldImpulseToForce (get_id(), stepsize, ix, iy, iz, force); }
-};
-
-
-class dBodySimpleIDContainer {
-protected:
- dBodyID _id;
-
- dBodySimpleIDContainer(): _id(0) {}
- ~dBodySimpleIDContainer() { destroy(); }
-
- void destroy() {
- if (_id) {
- dBodyDestroy(_id);
- _id = 0;
- }
- }
-};
-
-class dBodyDynamicIDContainer: public dBodySimpleIDContainer {
-protected:
- virtual ~dBodyDynamicIDContainer() {}
-};
-
-template <class dBodyTemplateBase, class dWorldTemplateBase>
-class dBodyTemplate: public dBodyTemplateBase {
- // intentionally undefined, don't use these
- dBodyTemplate (const dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase> &);
- void operator= (const dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase> &);
-
-protected:
- dBodyID get_id() const { return dBodyTemplateBase::_id; }
- void set_id(dBodyID value) { dBodyTemplateBase::_id = value; }
-
- void destroy() { dBodyTemplateBase::destroy(); }
-
-public:
- dBodyTemplate()
- { }
- dBodyTemplate (dWorldID world)
- { set_id(dBodyCreate(world)); }
- dBodyTemplate (dWorldTemplate<dWorldTemplateBase>& world)
- { set_id(dBodyCreate(world.id())); }
-
- void create (dWorldID world) {
- destroy();
- set_id(dBodyCreate(world));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world) {
- create(world.id());
- }
-
- dBodyID id() const
- { return get_id(); }
- operator dBodyID() const
- { return get_id(); }
-
- void setData (void *data)
- { dBodySetData (get_id(), data); }
- void *getData() const
- { return dBodyGetData (get_id()); }
-
- void setPosition (dReal x, dReal y, dReal z)
- { dBodySetPosition (get_id(), x, y, z); }
- void setPosition (const dVector3 p)
- { setPosition(p[0], p[1], p[2]); }
-
- void setRotation (const dMatrix3 R)
- { dBodySetRotation (get_id(), R); }
- void setQuaternion (const dQuaternion q)
- { dBodySetQuaternion (get_id(), q); }
- void setLinearVel (dReal x, dReal y, dReal z)
- { dBodySetLinearVel (get_id(), x, y, z); }
- void setLinearVel (const dVector3 v)
- { setLinearVel(v[0], v[1], v[2]); }
- void setAngularVel (dReal x, dReal y, dReal z)
- { dBodySetAngularVel (get_id(), x, y, z); }
- void setAngularVel (const dVector3 v)
- { setAngularVel (v[0], v[1], v[2]); }
-
- const dReal * getPosition() const
- { return dBodyGetPosition (get_id()); }
- const dReal * getRotation() const
- { return dBodyGetRotation (get_id()); }
- const dReal * getQuaternion() const
- { return dBodyGetQuaternion (get_id()); }
- const dReal * getLinearVel() const
- { return dBodyGetLinearVel (get_id()); }
- const dReal * getAngularVel() const
- { return dBodyGetAngularVel (get_id()); }
-
- void setMass (const dMass *mass)
- { dBodySetMass (get_id(), mass); }
- void setMass (const dMass &mass)
- { setMass (&mass); }
- dMass getMass () const
- { dMass mass; dBodyGetMass (get_id(), &mass); return mass; }
-
- void addForce (dReal fx, dReal fy, dReal fz)
- { dBodyAddForce (get_id(), fx, fy, fz); }
- void addForce (const dVector3 f)
- { addForce (f[0], f[1], f[2]); }
- void addTorque (dReal fx, dReal fy, dReal fz)
- { dBodyAddTorque (get_id(), fx, fy, fz); }
- void addTorque (const dVector3 t)
- { addTorque(t[0], t[1], t[2]); }
-
- void addRelForce (dReal fx, dReal fy, dReal fz)
- { dBodyAddRelForce (get_id(), fx, fy, fz); }
- void addRelForce (const dVector3 f)
- { addRelForce (f[0], f[1], f[2]); }
- void addRelTorque (dReal fx, dReal fy, dReal fz)
- { dBodyAddRelTorque (get_id(), fx, fy, fz); }
- void addRelTorque (const dVector3 t)
- { addRelTorque (t[0], t[1], t[2]); }
-
- void addForceAtPos (dReal fx, dReal fy, dReal fz,
- dReal px, dReal py, dReal pz)
- { dBodyAddForceAtPos (get_id(), fx, fy, fz, px, py, pz); }
- void addForceAtPos (const dVector3 f, const dVector3 p)
- { addForceAtPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
- void addForceAtRelPos (dReal fx, dReal fy, dReal fz,
- dReal px, dReal py, dReal pz)
- { dBodyAddForceAtRelPos (get_id(), fx, fy, fz, px, py, pz); }
- void addForceAtRelPos (const dVector3 f, const dVector3 p)
- { addForceAtRelPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
- void addRelForceAtPos (dReal fx, dReal fy, dReal fz,
- dReal px, dReal py, dReal pz)
- { dBodyAddRelForceAtPos (get_id(), fx, fy, fz, px, py, pz); }
- void addRelForceAtPos (const dVector3 f, const dVector3 p)
- { addRelForceAtPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
- void addRelForceAtRelPos (dReal fx, dReal fy, dReal fz,
- dReal px, dReal py, dReal pz)
- { dBodyAddRelForceAtRelPos (get_id(), fx, fy, fz, px, py, pz); }
- void addRelForceAtRelPos (const dVector3 f, const dVector3 p)
- { addRelForceAtRelPos (f[0], f[1], f[2], p[0], p[1], p[2]); }
-
- const dReal * getForce() const
- { return dBodyGetForce(get_id()); }
- const dReal * getTorque() const
- { return dBodyGetTorque(get_id()); }
- void setForce (dReal x, dReal y, dReal z)
- { dBodySetForce (get_id(), x, y, z); }
- void setForce (const dVector3 f)
- { setForce (f[0], f[1], f[2]); }
- void setTorque (dReal x, dReal y, dReal z)
- { dBodySetTorque (get_id(), x, y, z); }
- void setTorque (const dVector3 t)
- { setTorque (t[0], t[1], t[2]); }
-
- void setDynamic()
- { dBodySetDynamic (get_id()); }
- void setKinematic()
- { dBodySetKinematic (get_id()); }
- bool isKinematic() const
- { return dBodyIsKinematic (get_id()) != 0; }
-
- void enable()
- { dBodyEnable (get_id()); }
- void disable()
- { dBodyDisable (get_id()); }
- bool isEnabled() const
- { return dBodyIsEnabled (get_id()) != 0; }
-
- void getRelPointPos (dReal px, dReal py, dReal pz, dVector3 result) const
- { dBodyGetRelPointPos (get_id(), px, py, pz, result); }
- void getRelPointPos (const dVector3 p, dVector3 result) const
- { getRelPointPos (p[0], p[1], p[2], result); }
-
- void getRelPointVel (dReal px, dReal py, dReal pz, dVector3 result) const
- { dBodyGetRelPointVel (get_id(), px, py, pz, result); }
- void getRelPointVel (const dVector3 p, dVector3 result) const
- { getRelPointVel (p[0], p[1], p[2], result); }
-
- void getPointVel (dReal px, dReal py, dReal pz, dVector3 result) const
- { dBodyGetPointVel (get_id(), px, py, pz, result); }
- void getPointVel (const dVector3 p, dVector3 result) const
- { getPointVel (p[0], p[1], p[2], result); }
-
- void getPosRelPoint (dReal px, dReal py, dReal pz, dVector3 result) const
- { dBodyGetPosRelPoint (get_id(), px, py, pz, result); }
- void getPosRelPoint (const dVector3 p, dVector3 result) const
- { getPosRelPoint (p[0], p[1], p[2], result); }
-
- void vectorToWorld (dReal px, dReal py, dReal pz, dVector3 result) const
- { dBodyVectorToWorld (get_id(), px, py, pz, result); }
- void vectorToWorld (const dVector3 p, dVector3 result) const
- { vectorToWorld (p[0], p[1], p[2], result); }
-
- void vectorFromWorld (dReal px, dReal py, dReal pz, dVector3 result) const
- { dBodyVectorFromWorld (get_id(), px, py, pz, result); }
- void vectorFromWorld (const dVector3 p, dVector3 result) const
- { vectorFromWorld (p[0], p[1], p[2], result); }
-
- void setFiniteRotationMode (bool mode)
- { dBodySetFiniteRotationMode (get_id(), mode); }
-
- void setFiniteRotationAxis (dReal x, dReal y, dReal z)
- { dBodySetFiniteRotationAxis (get_id(), x, y, z); }
- void setFiniteRotationAxis (const dVector3 a)
- { setFiniteRotationAxis (a[0], a[1], a[2]); }
-
- bool getFiniteRotationMode() const
- { return dBodyGetFiniteRotationMode (get_id()) != 0; }
- void getFiniteRotationAxis (dVector3 result) const
- { dBodyGetFiniteRotationAxis (get_id(), result); }
-
- int getNumJoints() const
- { return dBodyGetNumJoints (get_id()); }
- dJointID getJoint (int index) const
- { return dBodyGetJoint (get_id(), index); }
-
- void setGravityMode (bool mode)
- { dBodySetGravityMode (get_id(), mode); }
- bool getGravityMode() const
- { return dBodyGetGravityMode (get_id()) != 0; }
-
- bool isConnectedTo (dBodyID body) const
- { return dAreConnected (get_id(), body) != 0; }
-
- void setAutoDisableLinearThreshold (dReal threshold)
- { dBodySetAutoDisableLinearThreshold (get_id(), threshold); }
- dReal getAutoDisableLinearThreshold() const
- { return dBodyGetAutoDisableLinearThreshold (get_id()); }
- void setAutoDisableAngularThreshold (dReal threshold)
- { dBodySetAutoDisableAngularThreshold (get_id(), threshold); }
- dReal getAutoDisableAngularThreshold() const
- { return dBodyGetAutoDisableAngularThreshold (get_id()); }
- void setAutoDisableSteps (int steps)
- { dBodySetAutoDisableSteps (get_id(), steps); }
- int getAutoDisableSteps() const
- { return dBodyGetAutoDisableSteps (get_id()); }
- void setAutoDisableTime (dReal time)
- { dBodySetAutoDisableTime (get_id(), time); }
- dReal getAutoDisableTime() const
- { return dBodyGetAutoDisableTime (get_id()); }
- void setAutoDisableFlag (bool do_auto_disable)
- { dBodySetAutoDisableFlag (get_id(), do_auto_disable); }
- bool getAutoDisableFlag() const
- { return dBodyGetAutoDisableFlag (get_id()) != 0; }
-
- dReal getLinearDamping() const
- { return dBodyGetLinearDamping(get_id()); }
- void setLinearDamping(dReal scale)
- { dBodySetLinearDamping(get_id(), scale); }
- dReal getAngularDamping() const
- { return dBodyGetAngularDamping(get_id()); }
- void setAngularDamping(dReal scale)
- { dBodySetAngularDamping(get_id(), scale); }
- void setDamping(dReal linear_scale, dReal angular_scale)
- { dBodySetDamping(get_id(), linear_scale, angular_scale); }
- dReal getLinearDampingThreshold() const
- { return dBodyGetLinearDampingThreshold(get_id()); }
- void setLinearDampingThreshold(dReal threshold) const
- { dBodySetLinearDampingThreshold(get_id(), threshold); }
- dReal getAngularDampingThreshold() const
- { return dBodyGetAngularDampingThreshold(get_id()); }
- void setAngularDampingThreshold(dReal threshold)
- { dBodySetAngularDampingThreshold(get_id(), threshold); }
- void setDampingDefaults()
- { dBodySetDampingDefaults(get_id()); }
-
- dReal getMaxAngularSpeed() const
- { return dBodyGetMaxAngularSpeed(get_id()); }
- void setMaxAngularSpeed(dReal max_speed)
- { dBodySetMaxAngularSpeed(get_id(), max_speed); }
-
- bool getGyroscopicMode() const
- { return dBodyGetGyroscopicMode(get_id()) != 0; }
- void setGyroscopicMode(bool mode)
- { dBodySetGyroscopicMode(get_id(), mode); }
-
-};
-
-
-class dJointGroupSimpleIDContainer {
-protected:
- dJointGroupID _id;
-
- dJointGroupSimpleIDContainer(): _id(0) {}
- ~dJointGroupSimpleIDContainer() { destroy(); }
-
- void destroy() {
- if (_id) {
- dJointGroupDestroy(_id);
- _id = 0;
- }
- }
-};
-
-class dJointGroupDynamicIDContainer: public dJointGroupSimpleIDContainer {
-protected:
- virtual ~dJointGroupDynamicIDContainer() {}
-};
-
-template <class dJointGroupTemplateBase>
-class dJointGroupTemplate: public dJointGroupTemplateBase {
- // intentionally undefined, don't use these
- dJointGroupTemplate (const dJointGroupTemplate<dJointGroupTemplateBase> &);
- void operator= (const dJointGroupTemplate<dJointGroupTemplateBase> &);
-
-protected:
- dJointGroupID get_id() const { return dJointGroupTemplateBase::_id; }
- void set_id(dJointGroupID value) { dJointGroupTemplateBase::_id = value; }
-
- void destroy() { dJointGroupTemplateBase::destroy(); }
-
-public:
- dJointGroupTemplate ()
- { set_id(dJointGroupCreate(0)); }
-
- void create () {
- destroy();
- set_id(dJointGroupCreate(0));
- }
-
- dJointGroupID id() const
- { return get_id(); }
- operator dJointGroupID() const
- { return get_id(); }
-
- void empty()
- { dJointGroupEmpty (get_id()); }
- void clear()
- { empty(); }
-};
-
-
-class dJointSimpleIDContainer {
-protected:
- dJointID _id;
-
- dJointSimpleIDContainer(): _id(0) {}
- ~dJointSimpleIDContainer() { destroy(); }
-
- void destroy() {
- if (_id) {
- dJointDestroy (_id);
- _id = 0;
- }
- }
-};
-
-class dJointDynamicIDContainer: public dJointSimpleIDContainer {
-protected:
- virtual ~dJointDynamicIDContainer() {}
-};
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dJointTemplate: public dJointTemplateBase {
-private:
- // intentionally undefined, don't use these
- dJointTemplate (const dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &) ;
- void operator= (const dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- dJointID get_id() const { return dJointTemplateBase::_id; }
- void set_id(dJointID value) { dJointTemplateBase::_id = value; }
-
- void destroy() { dJointTemplateBase::destroy(); }
-
-protected:
- dJointTemplate() // don't let user construct pure dJointTemplate objects
- { }
-
-public:
- dJointID id() const
- { return get_id(); }
- operator dJointID() const
- { return get_id(); }
-
- int getNumBodies() const
- { return dJointGetNumBodies(get_id()); }
-
- void attach (dBodyID body1, dBodyID body2)
- { dJointAttach (get_id(), body1, body2); }
- void attach (dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase>& body1, dBodyTemplate<dBodyTemplateBase, dWorldTemplateBase>& body2)
- { attach(body1.id(), body2.id()); }
-
- void enable()
- { dJointEnable (get_id()); }
- void disable()
- { dJointDisable (get_id()); }
- bool isEnabled() const
- { return dJointIsEnabled (get_id()) != 0; }
-
- void setData (void *data)
- { dJointSetData (get_id(), data); }
- void *getData() const
- { return dJointGetData (get_id()); }
-
- dJointType getType() const
- { return dJointGetType (get_id()); }
-
- dBodyID getBody (int index) const
- { return dJointGetBody (get_id(), index); }
-
- void setFeedback(dJointFeedback *fb)
- { dJointSetFeedback(get_id(), fb); }
- dJointFeedback *getFeedback() const
- { return dJointGetFeedback(get_id()); }
-
- // If not implemented it will do nothing as describe in the doc
- virtual void setParam (int, dReal) {};
- virtual dReal getParam (int) const { return 0; }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dBallJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dBallJointTemplate (const dBallJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator= (const dBallJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dBallJointTemplate() { }
- dBallJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreateBall(world, group)); }
- dBallJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreateBall(world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreateBall(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setAnchor (dReal x, dReal y, dReal z)
- { dJointSetBallAnchor (get_id(), x, y, z); }
- void setAnchor (const dVector3 a)
- { setAnchor (a[0], a[1], a[2]); }
- void getAnchor (dVector3 result) const
- { dJointGetBallAnchor (get_id(), result); }
- void getAnchor2 (dVector3 result) const
- { dJointGetBallAnchor2 (get_id(), result); }
- virtual void setParam (int parameter, dReal value)
- { dJointSetBallParam (get_id(), parameter, value); }
- virtual dReal getParam (int parameter) const
- { return dJointGetBallParam (get_id(), parameter); }
- // TODO: expose params through methods
-} ;
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dHingeJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dHingeJointTemplate (const dHingeJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dHingeJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dHingeJointTemplate() { }
- dHingeJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreateHinge(world, group)); }
- dHingeJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreateHinge(world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreateHinge (world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setAnchor (dReal x, dReal y, dReal z)
- { dJointSetHingeAnchor (get_id(), x, y, z); }
- void setAnchor (const dVector3 a)
- { setAnchor (a[0], a[1], a[2]); }
- void getAnchor (dVector3 result) const
- { dJointGetHingeAnchor (get_id(), result); }
- void getAnchor2 (dVector3 result) const
- { dJointGetHingeAnchor2 (get_id(), result); }
-
- void setAxis (dReal x, dReal y, dReal z)
- { dJointSetHingeAxis (get_id(), x, y, z); }
- void setAxis (const dVector3 a)
- { setAxis(a[0], a[1], a[2]); }
- void getAxis (dVector3 result) const
- { dJointGetHingeAxis (get_id(), result); }
-
- dReal getAngle() const
- { return dJointGetHingeAngle (get_id()); }
- dReal getAngleRate() const
- { return dJointGetHingeAngleRate (get_id()); }
-
- virtual void setParam (int parameter, dReal value)
- { dJointSetHingeParam (get_id(), parameter, value); }
- virtual dReal getParam (int parameter) const
- { return dJointGetHingeParam (get_id(), parameter); }
- // TODO: expose params through methods
-
- void addTorque (dReal torque)
- { dJointAddHingeTorque(get_id(), torque); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dSliderJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dSliderJointTemplate (const dSliderJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dSliderJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dSliderJointTemplate() { }
- dSliderJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreateSlider(world, group)); }
- dSliderJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreateSlider(world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreateSlider(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setAxis (dReal x, dReal y, dReal z)
- { dJointSetSliderAxis (get_id(), x, y, z); }
- void setAxis (const dVector3 a)
- { setAxis (a[0], a[1], a[2]); }
- void getAxis (dVector3 result) const
- { dJointGetSliderAxis (get_id(), result); }
-
- dReal getPosition() const
- { return dJointGetSliderPosition (get_id()); }
- dReal getPositionRate() const
- { return dJointGetSliderPositionRate (get_id()); }
-
- virtual void setParam (int parameter, dReal value)
- { dJointSetSliderParam (get_id(), parameter, value); }
- virtual dReal getParam (int parameter) const
- { return dJointGetSliderParam (get_id(), parameter); }
- // TODO: expose params through methods
-
- void addForce (dReal force)
- { dJointAddSliderForce(get_id(), force); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dUniversalJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dUniversalJointTemplate (const dUniversalJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dUniversalJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dUniversalJointTemplate() { }
- dUniversalJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreateUniversal(world, group)); }
- dUniversalJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreateUniversal(world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreateUniversal(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setAnchor (dReal x, dReal y, dReal z)
- { dJointSetUniversalAnchor (get_id(), x, y, z); }
- void setAnchor (const dVector3 a)
- { setAnchor(a[0], a[1], a[2]); }
- void setAxis1 (dReal x, dReal y, dReal z)
- { dJointSetUniversalAxis1 (get_id(), x, y, z); }
- void setAxis1 (const dVector3 a)
- { setAxis1 (a[0], a[1], a[2]); }
- void setAxis2 (dReal x, dReal y, dReal z)
- { dJointSetUniversalAxis2 (get_id(), x, y, z); }
- void setAxis2 (const dVector3 a)
- { setAxis2 (a[0], a[1], a[2]); }
-
- void getAnchor (dVector3 result) const
- { dJointGetUniversalAnchor (get_id(), result); }
- void getAnchor2 (dVector3 result) const
- { dJointGetUniversalAnchor2 (get_id(), result); }
- void getAxis1 (dVector3 result) const
- { dJointGetUniversalAxis1 (get_id(), result); }
- void getAxis2 (dVector3 result) const
- { dJointGetUniversalAxis2 (get_id(), result); }
-
- virtual void setParam (int parameter, dReal value)
- { dJointSetUniversalParam (get_id(), parameter, value); }
- virtual dReal getParam (int parameter) const
- { return dJointGetUniversalParam (get_id(), parameter); }
- // TODO: expose params through methods
-
- void getAngles(dReal *angle1, dReal *angle2) const
- { dJointGetUniversalAngles (get_id(), angle1, angle2); }
-
- dReal getAngle1() const
- { return dJointGetUniversalAngle1 (get_id()); }
- dReal getAngle1Rate() const
- { return dJointGetUniversalAngle1Rate (get_id()); }
- dReal getAngle2() const
- { return dJointGetUniversalAngle2 (get_id()); }
- dReal getAngle2Rate() const
- { return dJointGetUniversalAngle2Rate (get_id()); }
-
- void addTorques (dReal torque1, dReal torque2)
- { dJointAddUniversalTorques(get_id(), torque1, torque2); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dHinge2JointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dHinge2JointTemplate (const dHinge2JointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dHinge2JointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dHinge2JointTemplate() { }
- dHinge2JointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreateHinge2(world, group)); }
- dHinge2JointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreateHinge2(world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreateHinge2(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setAnchor (dReal x, dReal y, dReal z)
- { dJointSetHinge2Anchor (get_id(), x, y, z); }
- void setAnchor (const dVector3 a)
- { setAnchor(a[0], a[1], a[2]); }
- void setAxis1 (dReal x, dReal y, dReal z)
- { dJointSetHinge2Axis1 (get_id(), x, y, z); }
- void setAxis1 (const dVector3 a)
- { setAxis1 (a[0], a[1], a[2]); }
- void setAxis2 (dReal x, dReal y, dReal z)
- { dJointSetHinge2Axis2 (get_id(), x, y, z); }
- void setAxis2 (const dVector3 a)
- { setAxis2 (a[0], a[1], a[2]); }
-
- void getAnchor (dVector3 result) const
- { dJointGetHinge2Anchor (get_id(), result); }
- void getAnchor2 (dVector3 result) const
- { dJointGetHinge2Anchor2 (get_id(), result); }
- void getAxis1 (dVector3 result) const
- { dJointGetHinge2Axis1 (get_id(), result); }
- void getAxis2 (dVector3 result) const
- { dJointGetHinge2Axis2 (get_id(), result); }
-
- dReal getAngle1() const
- { return dJointGetHinge2Angle1 (get_id()); }
- dReal getAngle1Rate() const
- { return dJointGetHinge2Angle1Rate (get_id()); }
- dReal getAngle2Rate() const
- { return dJointGetHinge2Angle2Rate (get_id()); }
-
- virtual void setParam (int parameter, dReal value)
- { dJointSetHinge2Param (get_id(), parameter, value); }
- virtual dReal getParam (int parameter) const
- { return dJointGetHinge2Param (get_id(), parameter); }
- // TODO: expose params through methods
-
- void addTorques(dReal torque1, dReal torque2)
- { dJointAddHinge2Torques(get_id(), torque1, torque2); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dPRJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dPRJointTemplate (const dPRJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dPRJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dPRJointTemplate() { }
- dPRJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreatePR(world, group)); }
- dPRJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreatePR(world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreatePR(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setAnchor (dReal x, dReal y, dReal z)
- { dJointSetPRAnchor (get_id(), x, y, z); }
- void setAnchor (const dVector3 a)
- { setAnchor (a[0], a[1], a[2]); }
- void setAxis1 (dReal x, dReal y, dReal z)
- { dJointSetPRAxis1 (get_id(), x, y, z); }
- void setAxis1 (const dVector3 a)
- { setAxis1(a[0], a[1], a[2]); }
- void setAxis2 (dReal x, dReal y, dReal z)
- { dJointSetPRAxis2 (get_id(), x, y, z); }
- void setAxis2 (const dVector3 a)
- { setAxis2(a[0], a[1], a[2]); }
-
- void getAnchor (dVector3 result) const
- { dJointGetPRAnchor (get_id(), result); }
- void getAxis1 (dVector3 result) const
- { dJointGetPRAxis1 (get_id(), result); }
- void getAxis2 (dVector3 result) const
- { dJointGetPRAxis2 (get_id(), result); }
-
- dReal getPosition() const
- { return dJointGetPRPosition (get_id()); }
- dReal getPositionRate() const
- { return dJointGetPRPositionRate (get_id()); }
-
- dReal getAngle() const
- { return dJointGetPRAngle (get_id()); }
- dReal getAngleRate() const
- { return dJointGetPRAngleRate (get_id()); }
-
- virtual void setParam (int parameter, dReal value)
- { dJointSetPRParam (get_id(), parameter, value); }
- virtual dReal getParam (int parameter) const
- { return dJointGetPRParam (get_id(), parameter); }
-};
-
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dPUJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase>
-{
-private:
- // intentionally undefined, don't use these
- dPUJointTemplate (const dPUJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dPUJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dPUJointTemplate() { }
- dPUJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreatePU(world, group)); }
- dPUJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreatePU(world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0)
- {
- destroy();
- set_id(dJointCreatePU(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setAnchor (dReal x, dReal y, dReal z)
- { dJointSetPUAnchor (get_id(), x, y, z); }
- void setAnchor (const dVector3 a)
- { setAnchor (a[0], a[1], a[2]); }
- void setAxis1 (dReal x, dReal y, dReal z)
- { dJointSetPUAxis1 (get_id(), x, y, z); }
- void setAxis1 (const dVector3 a)
- { setAxis1(a[0], a[1], a[2]); }
- void setAxis2 (dReal x, dReal y, dReal z)
- { dJointSetPUAxis2 (get_id(), x, y, z); }
- void setAxis3 (dReal x, dReal y, dReal z)
- { dJointSetPUAxis3 (get_id(), x, y, z); }
- void setAxis3 (const dVector3 a)
- { setAxis3(a[0], a[1], a[2]); }
- void setAxisP (dReal x, dReal y, dReal z)
- { dJointSetPUAxis3 (get_id(), x, y, z); }
- void setAxisP (const dVector3 a)
- { setAxisP(a[0], a[1], a[2]); }
-
- virtual void getAnchor (dVector3 result) const
- { dJointGetPUAnchor (get_id(), result); }
- void getAxis1 (dVector3 result) const
- { dJointGetPUAxis1 (get_id(), result); }
- void getAxis2 (dVector3 result) const
- { dJointGetPUAxis2 (get_id(), result); }
- void getAxis3 (dVector3 result) const
- { dJointGetPUAxis3 (get_id(), result); }
- void getAxisP (dVector3 result) const
- { dJointGetPUAxis3 (get_id(), result); }
-
- dReal getAngle1() const
- { return dJointGetPUAngle1 (get_id()); }
- dReal getAngle1Rate() const
- { return dJointGetPUAngle1Rate (get_id()); }
- dReal getAngle2() const
- { return dJointGetPUAngle2 (get_id()); }
- dReal getAngle2Rate() const
- { return dJointGetPUAngle2Rate (get_id()); }
-
- dReal getPosition() const
- { return dJointGetPUPosition (get_id()); }
- dReal getPositionRate() const
- { return dJointGetPUPositionRate (get_id()); }
-
- virtual void setParam (int parameter, dReal value)
- { dJointSetPUParam (get_id(), parameter, value); }
- virtual dReal getParam (int parameter) const
- { return dJointGetPUParam (get_id(), parameter); }
- // TODO: expose params through methods
-};
-
-
-
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dPistonJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase>
-{
-private:
- // intentionally undefined, don't use these
- dPistonJointTemplate (const dPistonJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dPistonJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dPistonJointTemplate() { }
- dPistonJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreatePiston(world, group)); }
- dPistonJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreatePiston(world, group)); }
-
- void create (dWorldID world, dJointGroupID group=0)
- {
- destroy();
- set_id(dJointCreatePiston(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setAnchor (dReal x, dReal y, dReal z)
- { dJointSetPistonAnchor (get_id(), x, y, z); }
- void setAnchor (const dVector3 a)
- { setAnchor (a[0], a[1], a[2]); }
- void getAnchor (dVector3 result) const
- { dJointGetPistonAnchor (get_id(), result); }
- void getAnchor2 (dVector3 result) const
- { dJointGetPistonAnchor2 (get_id(), result); }
-
- void setAxis (dReal x, dReal y, dReal z)
- { dJointSetPistonAxis (get_id(), x, y, z); }
- void setAxis (const dVector3 a)
- { setAxis(a[0], a[1], a[2]); }
- void getAxis (dVector3 result) const
- { dJointGetPistonAxis (get_id(), result); }
-
- dReal getPosition() const
- { return dJointGetPistonPosition (get_id()); }
- dReal getPositionRate() const
- { return dJointGetPistonPositionRate (get_id()); }
-
- virtual void setParam (int parameter, dReal value)
- { dJointSetPistonParam (get_id(), parameter, value); }
- virtual dReal getParam (int parameter) const
- { return dJointGetPistonParam (get_id(), parameter); }
- // TODO: expose params through methods
-
- void addForce (dReal force)
- { dJointAddPistonForce (get_id(), force); }
-};
-
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dFixedJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase>
-{
-private:
- // intentionally undefined, don't use these
- dFixedJointTemplate (const dFixedJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dFixedJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dFixedJointTemplate() { }
- dFixedJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreateFixed(world, group)); }
- dFixedJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreateFixed(world, group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreateFixed(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void set()
- { dJointSetFixed (get_id()); }
-
- virtual void setParam (int parameter, dReal value)
- { dJointSetFixedParam (get_id(), parameter, value); }
-
- virtual dReal getParam (int parameter) const
- { return dJointGetFixedParam (get_id(), parameter); }
- // TODO: expose params through methods
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dContactJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dContactJointTemplate (const dContactJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dContactJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dContactJointTemplate() { }
- dContactJointTemplate (dWorldID world, dJointGroupID group, dContact *contact)
- { set_id(dJointCreateContact(world, group, contact)); }
- dContactJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group, dContact *contact)
- { set_id(dJointCreateContact(world.id(), group, contact)); }
-
- void create (dWorldID world, dJointGroupID group, dContact *contact) {
- destroy();
- set_id(dJointCreateContact(world, group, contact));
- }
-
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group, dContact *contact)
- { create(world.id(), group, contact); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dNullJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dNullJointTemplate (const dNullJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dNullJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dNullJointTemplate() { }
- dNullJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreateNull(world, group)); }
- dNullJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreateNull (world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreateNull(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dAMotorJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dAMotorJointTemplate (const dAMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dAMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dAMotorJointTemplate() { }
- dAMotorJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreateAMotor(world, group)); }
- dAMotorJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreateAMotor(world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreateAMotor(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setMode (int mode)
- { dJointSetAMotorMode (get_id(), mode); }
- int getMode() const
- { return dJointGetAMotorMode (get_id()); }
-
- void setNumAxes (int num)
- { dJointSetAMotorNumAxes (get_id(), num); }
- int getNumAxes() const
- { return dJointGetAMotorNumAxes (get_id()); }
-
- void setAxis (int anum, int rel, dReal x, dReal y, dReal z)
- { dJointSetAMotorAxis (get_id(), anum, rel, x, y, z); }
- void setAxis (int anum, int rel, const dVector3 a)
- { setAxis(anum, rel, a[0], a[1], a[2]); }
- void getAxis (int anum, dVector3 result) const
- { dJointGetAMotorAxis (get_id(), anum, result); }
- int getAxisRel (int anum) const
- { return dJointGetAMotorAxisRel (get_id(), anum); }
-
- void setAngle (int anum, dReal angle)
- { dJointSetAMotorAngle (get_id(), anum, angle); }
- dReal getAngle (int anum) const
- { return dJointGetAMotorAngle (get_id(), anum); }
- dReal getAngleRate (int anum)
- { return dJointGetAMotorAngleRate (get_id(), anum); }
-
- void setParam (int parameter, dReal value)
- { dJointSetAMotorParam (get_id(), parameter, value); }
- dReal getParam (int parameter) const
- { return dJointGetAMotorParam (get_id(), parameter); }
- // TODO: expose params through methods
-
- void addTorques(dReal torque1, dReal torque2, dReal torque3)
- { dJointAddAMotorTorques(get_id(), torque1, torque2, torque3); }
-};
-
-
-template <class dJointTemplateBase, class dWorldTemplateBase, class dBodyTemplateBase>
-class dLMotorJointTemplate : public dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> {
-private:
- // intentionally undefined, don't use these
- dLMotorJointTemplate (const dLMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
- void operator = (const dLMotorJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> &);
-
-protected:
- typedef dJointTemplate<dJointTemplateBase, dWorldTemplateBase, dBodyTemplateBase> dBaseTemplate;
-
- dJointID get_id() const { return dBaseTemplate::get_id(); }
- void set_id(dJointID value) { dBaseTemplate::set_id(value); }
-
- void destroy() { dBaseTemplate::destroy(); }
-
-public:
- dLMotorJointTemplate() { }
- dLMotorJointTemplate (dWorldID world, dJointGroupID group=0)
- { set_id(dJointCreateLMotor(world, group)); }
- dLMotorJointTemplate (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { set_id(dJointCreateLMotor(world.id(), group)); }
-
- void create (dWorldID world, dJointGroupID group=0) {
- destroy();
- set_id(dJointCreateLMotor(world, group));
- }
- void create (dWorldTemplate<dWorldTemplateBase>& world, dJointGroupID group=0)
- { create(world.id(), group); }
-
- void setNumAxes (int num)
- { dJointSetLMotorNumAxes (get_id(), num); }
- int getNumAxes() const
- { return dJointGetLMotorNumAxes (get_id()); }
-
- void setAxis (int anum, int rel, dReal x, dReal y, dReal z)
- { dJointSetLMotorAxis (get_id(), anum, rel, x, y, z); }
- void setAxis (int anum, int rel, const dVector3 a)
- { setAxis(anum, rel, a[0], a[1], a[2]); }
- void getAxis (int anum, dVector3 result) const
- { dJointGetLMotorAxis (get_id(), anum, result); }
-
- void setParam (int parameter, dReal value)
- { dJointSetLMotorParam (get_id(), parameter, value); }
- dReal getParam (int parameter) const
- { return dJointGetLMotorParam (get_id(), parameter); }
- // TODO: expose params through methods
-};
-
-//}
-
-#if !defined(dODECPP_WORLD_TEMPLATE_BASE)
-
-#if defined(dODECPP_BODY_TEMPLATE_BASE) || defined(dODECPP_JOINTGROUP_TEMPLATE_BASE) || defined(dODECPP_JOINT_TEMPLATE_BASE)
-#error All the odecpp template bases must be defined or not defined together
-#endif
-
-#define dODECPP_WORLD_TEMPLATE_BASE dWorldDynamicIDContainer
-#define dODECPP_BODY_TEMPLATE_BASE dBodyDynamicIDContainer
-#define dODECPP_JOINTGROUP_TEMPLATE_BASE dJointGroupDynamicIDContainer
-#define dODECPP_JOINT_TEMPLATE_BASE dJointDynamicIDContainer
-
-#else // #if defined(dODECPP_WORLD_TEMPLATE_BASE)
-
-#if !defined(dODECPP_BODY_TEMPLATE_BASE) || !defined(dODECPP_JOINTGROUP_TEMPLATE_BASE) || !defined(dODECPP_JOINT_TEMPLATE_BASE)
-#error All the odecpp template bases must be defined or not defined together
-#endif
-
-#endif // #if defined(dODECPP_WORLD_TEMPLATE_BASE)
-
-
-typedef dWorldTemplate<dODECPP_WORLD_TEMPLATE_BASE> dWorld;
-typedef dBodyTemplate<dODECPP_BODY_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE> dBody;
-typedef dJointGroupTemplate<dODECPP_JOINTGROUP_TEMPLATE_BASE> dJointGroup;
-typedef dJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dJoint;
-typedef dBallJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dBallJoint;
-typedef dHingeJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dHingeJoint;
-typedef dSliderJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dSliderJoint;
-typedef dUniversalJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dUniversalJoint;
-typedef dHinge2JointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dHinge2Joint;
-typedef dPRJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dPRJoint;
-typedef dPUJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dPUJoint;
-typedef dPistonJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dPistonJoint;
-typedef dFixedJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dFixedJoint;
-typedef dContactJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dContactJoint;
-typedef dNullJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dNullJoint;
-typedef dAMotorJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dAMotorJoint;
-typedef dLMotorJointTemplate<dODECPP_JOINT_TEMPLATE_BASE, dODECPP_WORLD_TEMPLATE_BASE, dODECPP_BODY_TEMPLATE_BASE> dLMotorJoint;
-
-
-#endif
-#endif
-
-// Local variables:
-// mode:c++
-// c-basic-offset:2
-// End: