ivaria/ode.h
Go to the documentation of this file.00001 /* 00002 Copyright (C) 2003 by Jorrit Tyberghein, Daniel Duhprey, 00003 Leandro Motta Barros 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public 00016 License along with this library; if not, write to the Free 00017 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00018 */ 00019 00020 #ifndef __CS_IVARIA_ODE_H__ 00021 #define __CS_IVARIA_ODE_H__ 00022 00027 #include "csutil/scf_interface.h" 00028 00033 struct iODEFrameUpdateCallback : public virtual iBase 00034 { 00035 SCF_INTERFACE(iODEFrameUpdateCallback, 2, 0, 0); 00036 00038 virtual void Execute (float stepsize) = 0; 00039 }; 00040 00046 struct iODEDynamicState : public virtual iBase 00047 { 00048 SCF_INTERFACE(iODEDynamicState, 2, 0, 0); 00049 00050 00052 virtual void SetGlobalERP (float erp) = 0; 00053 virtual float GlobalERP () = 0; 00054 00056 virtual void SetGlobalCFM (float cfm) = 0; 00057 virtual float GlobalCFM () = 0; 00058 00059 CS_DEPRECATED_METHOD_MSG("StepFast supported was dropped") 00060 virtual void EnableStepFast (bool enable) = 0; 00061 CS_DEPRECATED_METHOD_MSG("StepFast supported was dropped") 00062 virtual bool StepFastEnabled () = 0; 00063 CS_DEPRECATED_METHOD_MSG("StepFast supported was dropped") 00064 virtual void SetStepFastIterations (int iter) = 0; 00065 CS_DEPRECATED_METHOD_MSG("StepFast supported was dropped") 00066 virtual int StepFastIterations () = 0; 00067 00068 virtual void EnableQuickStep (bool enable) = 0; 00069 virtual bool QuickStepEnabled () = 0; 00070 virtual void SetQuickStepIterations (int iter) = 0; 00071 virtual int QuickStepIterations () = 0; 00072 00088 virtual void EnableFrameRate (bool enable) = 0; 00089 virtual bool FrameRateEnabled () = 0; 00090 00091 virtual void SetFrameRate (float hz) = 0; 00092 virtual float FrameRate () = 0; 00093 00094 virtual void SetFrameLimit (float hz) = 0; 00095 virtual float FrameLimit () = 0; 00096 00097 virtual void AddFrameUpdateCallback (iODEFrameUpdateCallback *cb) = 0; 00098 virtual void RemoveFrameUpdateCallback (iODEFrameUpdateCallback *cb) = 0; 00099 00105 virtual void EnableEventProcessing (bool enable) = 0; 00106 virtual bool EventProcessingEnabled () = 0; 00107 00119 virtual void EnableFastObjects (bool enable) = 0; 00120 virtual bool FastObjectsEnabled () = 0; 00121 00122 }; 00123 00124 struct iODEBallJoint; 00125 struct iODEHingeJoint; 00126 struct iODEHinge2Joint; 00127 struct iODEAMotorJoint; 00128 struct iODEUniversalJoint; 00129 struct iODESliderJoint; 00130 00137 struct iODEDynamicSystemState : public virtual iBase 00138 { 00139 SCF_INTERFACE(iODEDynamicSystemState, 2, 1, 0); 00140 00146 virtual void SetERP (float erp) = 0; 00147 virtual float ERP () = 0; 00148 00154 virtual void SetCFM (float cfm) = 0; 00155 virtual float CFM () = 0; 00156 00157 CS_DEPRECATED_METHOD_MSG("StepFast supported was dropped") 00158 virtual void EnableStepFast (bool enable) = 0; 00159 CS_DEPRECATED_METHOD_MSG("StepFast supported was dropped") 00160 virtual bool StepFastEnabled () = 0; 00161 CS_DEPRECATED_METHOD_MSG("StepFast supported was dropped") 00162 virtual void SetStepFastIterations (int iter) = 0; 00163 CS_DEPRECATED_METHOD_MSG("StepFast supported was dropped") 00164 virtual int StepFastIterations () = 0; 00165 00166 virtual void EnableQuickStep (bool enable) = 0; 00167 virtual bool QuickStepEnabled () = 0; 00168 virtual void SetQuickStepIterations (int iter) = 0; 00169 virtual int QuickStepIterations () = 0; 00170 00176 virtual void EnableAutoDisable (bool enable) = 0; 00177 virtual bool AutoDisableEnabled () =0; 00187 virtual void SetAutoDisableParams (float linear, float angular, int steps, 00188 float time)=0; 00189 00206 virtual void EnableFrameRate (bool enable) = 0; 00207 virtual bool FrameRateEnabled () = 0; 00208 00209 virtual void SetFrameRate (float hz) = 0; 00210 virtual float FrameRate () = 0; 00211 00212 virtual void SetFrameLimit (float hz) = 0; 00213 virtual float FrameLimit () = 0; 00214 00215 virtual void AddFrameUpdateCallback (iODEFrameUpdateCallback *cb) = 0; 00216 virtual void RemoveFrameUpdateCallback (iODEFrameUpdateCallback *cb) = 0; 00217 00231 virtual void EnableFastObjects (bool enable) = 0; 00232 virtual bool FastObjectsEnabled () = 0; 00233 00235 virtual csPtr<iODEBallJoint> CreateBallJoint () = 0; 00236 00238 virtual csPtr<iODEHingeJoint> CreateHingeJoint () = 0; 00239 00241 virtual csPtr<iODEHinge2Joint> CreateHinge2Joint () = 0; 00242 00244 virtual csPtr<iODEAMotorJoint> CreateAMotorJoint () = 0; 00245 00247 virtual csPtr<iODEUniversalJoint> CreateUniversalJoint () = 0; 00248 00250 virtual csPtr<iODESliderJoint> CreateSliderJoint () = 0; 00251 00253 virtual void RemoveJoint (iODEBallJoint* joint) = 0; 00254 00256 virtual void RemoveJoint (iODEHingeJoint* joint) = 0; 00257 00259 virtual void RemoveJoint (iODEAMotorJoint* joint) = 0; 00260 00262 virtual void RemoveJoint (iODEUniversalJoint* joint) = 0; 00263 00265 virtual void RemoveJoint (iODESliderJoint* joint) = 0; 00266 00268 virtual void RemoveJoint (iODEHinge2Joint* joint) = 0; 00269 00277 virtual void SetContactMaxCorrectingVel (float v) = 0; 00278 00285 virtual float GetContactMaxCorrectingVel () = 0; 00286 00296 virtual void SetContactSurfaceLayer (float depth) = 0; 00297 00307 virtual float GetContactSurfaceLayer () = 0; 00308 00313 virtual void EnableOldInertia (bool enable) = 0; 00314 virtual bool IsOldInertiaEnabled () const = 0; 00315 }; 00316 00320 enum ODEJointType 00321 { 00322 CS_ODE_JOINT_TYPE_UNKNOWN = -1, 00323 CS_ODE_JOINT_TYPE_BALL, 00324 CS_ODE_JOINT_TYPE_HINGE, 00325 CS_ODE_JOINT_TYPE_SLIDER, 00326 CS_ODE_JOINT_TYPE_CONTACT, 00327 CS_ODE_JOINT_TYPE_UNIVERSAL, 00328 CS_ODE_JOINT_TYPE_HINGE2, 00329 CS_ODE_JOINT_TYPE_FIXED, 00330 CS_ODE_JOINT_TYPE_AMOTOR 00331 }; 00332 00336 struct iODEJointState : public virtual iBase 00337 { 00338 SCF_INTERFACE(iODEJointState, 2, 0, 0); 00339 00340 virtual ODEJointType GetType() = 0; 00341 00346 virtual void SetLoStop (const csVector3 &value) = 0; 00347 00353 virtual void SetHiStop (const csVector3 &value) = 0; 00354 00356 virtual void SetVel (const csVector3 &value) = 0; 00357 00363 virtual void SetFMax (const csVector3 &value) = 0; 00364 00375 virtual void SetFudgeFactor (const csVector3 &value) = 0; 00376 00382 virtual void SetBounce (const csVector3 &value) = 0; 00383 00388 virtual void SetCFM (const csVector3 &value) = 0; 00389 00391 virtual void SetStopERP (const csVector3 &value) = 0; 00392 00399 virtual void SetStopCFM (const csVector3 &value) = 0; 00400 00402 virtual void SetSuspensionERP (const csVector3 &value) = 0; 00403 00405 virtual void SetSuspensionCFM (const csVector3 &value) = 0; 00406 00408 virtual csVector3 GetLoStop () = 0; 00409 00411 virtual csVector3 GetHiStop () = 0; 00412 00414 virtual csVector3 GetVel () = 0; 00415 00420 virtual csVector3 GetMaxForce () = 0; 00421 00423 virtual csVector3 GetFudgeFactor () = 0; 00424 00426 virtual csVector3 GetBounce () = 0; 00427 00432 virtual csVector3 GetCFM () = 0; 00433 00435 virtual csVector3 GetStopERP () = 0; 00436 00438 virtual csVector3 GetStopCFM () = 0; 00439 00441 virtual csVector3 GetSuspensionERP () = 0; 00442 00444 virtual csVector3 GetSuspensionCFM () = 0; 00445 00446 }; 00447 00451 struct iODEGeneralJointState : public virtual iBase 00452 { 00453 SCF_INTERFACE(iODEGeneralJointState, 2, 0, 0); 00454 00459 virtual void SetLoStop (float value, int axis) = 0; 00460 00466 virtual void SetHiStop (float value, int axis) = 0; 00467 00469 virtual void SetVel (float value, int axis) = 0; 00470 00476 virtual void SetFMax (float value, int axis) = 0; 00477 00488 virtual void SetFudgeFactor (float value, int axis) = 0; 00489 00495 virtual void SetBounce (float value, int axis) = 0; 00496 00501 virtual void SetCFM (float value, int axis) = 0; 00502 00504 virtual void SetStopERP (float value, int axis) = 0; 00505 00512 virtual void SetStopCFM (float value, int axis) = 0; 00513 00515 virtual void SetSuspensionERP (float value, int axis) = 0; 00516 00518 virtual void SetSuspensionCFM (float value, int axis) = 0; 00519 00521 virtual float GetLoStop (int axis) = 0; 00522 00524 virtual float GetHiStop (int axis) = 0; 00525 00527 virtual float GetVel (int axis) = 0; 00528 00533 virtual float GetFMax (int axis) = 0; 00534 00536 virtual float GetFudgeFactor (int axis) = 0; 00537 00539 virtual float GetBounce (int axis) = 0; 00540 00545 virtual float GetCFM (int axis) = 0; 00546 00548 virtual float GetStopERP (int axis) = 0; 00549 00551 virtual float GetStopCFM (int axis) = 0; 00552 00554 virtual float GetSuspensionERP (int axis) = 0; 00555 00557 virtual float GetSuspensionCFM (int axis) = 0; 00558 00566 virtual void Attach (iRigidBody *body1, iRigidBody *body2) = 0; 00567 00569 virtual csRef<iRigidBody> GetAttachedBody (int body) = 0; 00570 00572 virtual csVector3 GetFeedbackForce1 () = 0; 00573 00575 virtual csVector3 GetFeedbackTorque1 () = 0; 00576 00578 virtual csVector3 GetFeedbackForce2 () = 0; 00579 00581 virtual csVector3 GetFeedbackTorque2 () = 0; 00582 00583 }; 00584 00585 struct iODESliderJoint : public virtual iODEGeneralJointState 00586 { 00587 SCF_INTERFACE(iODESliderJoint, 2, 1, 0); 00588 00590 virtual void SetSliderAxis (float x, float y, float z) = 0; 00591 00593 virtual csVector3 GetSliderAxis () = 0; 00594 00600 virtual float GetSliderPosition () = 0; 00601 00603 virtual float GetSliderPositionRate () = 0; 00604 }; 00605 00613 struct iODEUniversalJoint : public virtual iODEGeneralJointState 00614 { 00615 SCF_INTERFACE(iODEUniversalJoint, 2, 1, 0); 00616 00618 virtual void SetUniversalAnchor (float x, float y, float z) = 0; 00619 00621 virtual void SetUniversalAxis1 (float x, float y, float z) = 0; 00622 00624 virtual void SetUniversalAxis2 (float x, float y, float z) = 0; 00625 00631 virtual csVector3 GetUniversalAnchor1 () = 0; 00632 00638 virtual csVector3 GetUniversalAnchor2 () = 0; 00639 00641 virtual csVector3 GetUniversalAxis1 () = 0; 00642 00644 virtual csVector3 GetUniversalAxis2 () = 0; 00645 00646 }; 00647 00648 enum ODEAMotorMode 00649 { 00650 CS_ODE_AMOTOR_MODE_UNKNOWN = -1, 00651 00652 CS_ODE_AMOTOR_MODE_USER = 0, 00653 CS_ODE_AMOTOR_MODE_EULER, 00654 00655 CS_ODE_AMOTOR_MODE_LAST 00656 }; 00657 00669 struct iODEAMotorJoint : public virtual iODEGeneralJointState 00670 { 00671 SCF_INTERFACE(iODEAMotorJoint, 2, 1, 0); 00672 00682 virtual void SetAMotorMode (ODEAMotorMode mode) = 0; 00683 00687 virtual ODEAMotorMode GetAMotorMode () = 0; 00688 00695 virtual void SetAMotorNumAxes (int axis_num) = 0; 00696 00701 virtual int GetAMotorNumAxes () = 0; 00702 00712 virtual void SetAMotorAxis (int axis_num, int rel_orient, float x, float y, 00713 float z) = 0; 00714 00723 virtual void SetAMotorAxis (int axis_num, int rel_orient, 00724 const csVector3 &axis) = 0; 00725 00729 virtual csVector3 GetAMotorAxis (int axis_num) = 0; 00730 00737 virtual int GetAMotorAxisRelOrientation (int axis_num) = 0; 00738 00746 virtual void SetAMotorAngle (int axis_num, float angle) = 0; 00747 00753 virtual float GetAMotorAngle (int axis_num) = 0; 00754 00760 virtual float GetAMotorAngleRate (int axis_num) = 0; 00761 }; 00762 00767 struct iODEHinge2Joint : public virtual iODEGeneralJointState 00768 { 00769 SCF_INTERFACE(iODEHinge2Joint, 2, 1, 0); 00770 00775 virtual void SetHingeAnchor (const csVector3 &pos) = 0; 00776 00780 virtual void SetHingeAxis1 (const csVector3 &axis) = 0; 00781 00785 virtual void SetHingeAxis2 (const csVector3 &axis) = 0; 00786 00787 00792 virtual csVector3 GetHingeAnchor1 () = 0; 00793 00798 virtual csVector3 GetHingeAnchor2 () = 0; 00799 00803 virtual csVector3 GetHingeAxis1 () = 0; 00804 00808 virtual csVector3 GetHingeAxis2 () = 0; 00809 00816 virtual float GetHingeAngle () = 0; 00817 00821 virtual float GetHingeAngleRate1 () = 0; 00822 00826 virtual float GetHingeAngleRate2 () = 0; 00827 00831 virtual csVector3 GetAnchorError () = 0; 00832 00833 }; 00834 00838 struct iODEHingeJoint : public virtual iODEGeneralJointState 00839 { 00840 SCF_INTERFACE(iODEHingeJoint, 2, 1, 0); 00841 00846 virtual void SetHingeAnchor (const csVector3 &pos) = 0; 00847 00851 virtual void SetHingeAxis (const csVector3 &axis) = 0; 00852 00857 virtual csVector3 GetHingeAnchor1 () = 0; 00858 00863 virtual csVector3 GetHingeAnchor2 () = 0; 00864 00868 virtual csVector3 GetHingeAxis () = 0; 00869 00876 virtual float GetHingeAngle () = 0; 00877 00881 virtual float GetHingeAngleRate () = 0; 00882 00886 virtual csVector3 GetAnchorError () = 0; 00887 00888 }; 00889 00893 struct iODEBallJoint : public virtual iBase 00894 { 00895 SCF_INTERFACE(iODEBallJoint, 2, 0, 0); 00896 00901 virtual void SetBallAnchor (const csVector3 &pos) = 0; 00902 00907 virtual csVector3 GetBallAnchor1 () = 0; 00908 00913 virtual csVector3 GetBallAnchor2 () = 0; 00914 00918 virtual csVector3 GetAnchorError () = 0; 00919 00927 virtual void Attach (iRigidBody *body1, iRigidBody *body2) = 0; 00928 00930 virtual csRef<iRigidBody> GetAttachedBody (int body) = 0; 00931 00933 virtual csVector3 GetFeedbackForce1 () = 0; 00934 00936 virtual csVector3 GetFeedbackTorque1 () = 0; 00937 00939 virtual csVector3 GetFeedbackForce2 () = 0; 00940 00942 virtual csVector3 GetFeedbackTorque2 () = 0; 00943 }; 00944 00945 #endif // __CS_IVARIA_ODE_H__
Generated for Crystal Space 2.1 by doxygen 1.6.1
