CrystalSpace

Public API Reference

Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

ode.h

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 
00023 #define int8 ode_int8
00024 #define uint8 ode_uint8
00025 #define int32 ode_int32
00026 #define uint32 ode_uint32
00027 #include <ode/ode.h>
00028 #undef uint32
00029 #undef int32
00030 #undef uint8
00031 #undef int8
00032 
00033 SCF_VERSION (iODEFrameUpdateCallback, 0, 0, 1);
00034 
00040 struct iODEFrameUpdateCallback : public iBase
00041 {
00043   virtual void Execute (float stepsize) = 0;
00044 };
00045 
00046 SCF_VERSION (iODEDynamicState, 0, 0, 1);
00047 
00052 struct iODEDynamicState : public iBase
00053 {
00054 
00056   virtual void SetGlobalERP (float erp) = 0;
00057   virtual float GlobalERP () = 0;
00058 
00060   virtual void SetGlobalCFM (float cfm) = 0;
00061   virtual float GlobalCFM () = 0;
00062 
00064   virtual void EnableStepFast (bool enable) = 0;
00065   virtual bool StepFastEnabled () = 0;
00066   virtual void SetStepFastIterations (int iter) = 0;
00067   virtual int StepFastIterations () = 0;
00068 
00069   virtual void EnableQuickStep (bool enable) = 0;
00070   virtual bool QuickStepEnabled () = 0;
00071   virtual void SetQuickStepIterations (int iter) = 0;
00072   virtual int QuickStepIterations () = 0;
00073 
00089   virtual void EnableFrameRate (bool enable) = 0;
00090   virtual bool FrameRateEnabled () = 0;
00091 
00092   virtual void SetFrameRate (float hz) = 0;
00093   virtual float FrameRate () = 0;
00094 
00095   virtual void SetFrameLimit (float hz) = 0;
00096   virtual float FrameLimit () = 0;
00097 
00098   virtual void AddFrameUpdateCallback (iODEFrameUpdateCallback *cb) = 0;
00099   virtual void RemoveFrameUpdateCallback (iODEFrameUpdateCallback *cb) = 0;
00100 
00106   virtual void EnableEventProcessing (bool enable) = 0;
00107   virtual bool EventProcessingEnabled () = 0;
00108 
00120   virtual void EnableFastObjects (bool enable) = 0;
00121   virtual bool FastObjectsEnabled () = 0;
00122 
00123 };
00124 
00125 SCF_VERSION (iODEDynamicSystemState, 0, 0, 1);
00126 
00132 struct iODEDynamicSystemState : public iBase
00133 {
00139   virtual void SetERP (float erp) = 0;
00140   virtual float ERP () = 0;
00141 
00147   virtual void SetCFM (float cfm) = 0;
00148   virtual float CFM () = 0;
00149 
00155   virtual void EnableStepFast (bool enable) = 0;
00156   virtual bool StepFastEnabled () = 0;
00157   virtual void SetStepFastIterations (int iter) = 0;
00158   virtual int StepFastIterations () = 0;
00159 
00160   virtual void EnableQuickStep (bool enable) = 0;
00161   virtual bool QuickStepEnabled () = 0;
00162   virtual void SetQuickStepIterations (int iter) = 0;
00163   virtual int QuickStepIterations () = 0;
00164 
00169   virtual void EnableAutoDisable (bool enable) = 0;
00170   virtual bool AutoDisableEnabled () =0;
00180   virtual void SetAutoDisableParams (float linear, float angular, int steps,
00181     float time)=0;
00182 
00199   virtual void EnableFrameRate (bool enable) = 0;
00200   virtual bool FrameRateEnabled () = 0;
00201 
00202   virtual void SetFrameRate (float hz) = 0;
00203   virtual float FrameRate () = 0;
00204 
00205   virtual void SetFrameLimit (float hz) = 0;
00206   virtual float FrameLimit () = 0;
00207 
00208   virtual void AddFrameUpdateCallback (iODEFrameUpdateCallback *cb) = 0;
00209   virtual void RemoveFrameUpdateCallback (iODEFrameUpdateCallback *cb) = 0;
00210 
00224   virtual void EnableFastObjects (bool enable) = 0;
00225   virtual bool FastObjectsEnabled () = 0;
00226 
00227 };
00228 
00233 enum ODEJointType
00234 {
00235   CS_ODE_JOINT_TYPE_BALL = dJointTypeBall,
00236   CS_ODE_JOINT_TYPE_HINGE = dJointTypeHinge,
00237   CS_ODE_JOINT_TYPE_SLIDER = dJointTypeSlider,
00238   CS_ODE_JOINT_TYPE_CONTACT = dJointTypeContact,
00239   CS_ODE_JOINT_TYPE_UNIVERSAL = dJointTypeUniversal,
00240   CS_ODE_JOINT_TYPE_HINGE2 = dJointTypeHinge2,
00241   CS_ODE_JOINT_TYPE_FIXED = dJointTypeFixed,
00242   CS_ODE_JOINT_TYPE_AMOTOR = dJointTypeAMotor
00243 };
00244 
00245 
00246 SCF_VERSION (iODEJointState, 0, 0, 2);
00247 
00249 struct iODEJointState : public iBase
00250 {
00251   virtual ODEJointType GetType() = 0;
00252 
00253   // Baaad interface. Are those number axes? If so, perhaps pass it as
00254   // parameter.
00255   virtual void SetLoStop (float value) = 0;
00256   virtual void SetHiStop (float value) = 0;
00257   virtual void SetVel (float value) = 0;
00258   virtual void SetFMax (float value) = 0;
00259   virtual void SetFudgeFactor (float value) = 0;
00260   virtual void SetBounce (float value) = 0;
00261   virtual void SetCFM (float value) = 0;
00262   virtual void SetStopERP (float value) = 0;
00263   virtual void SetStopCFM (float value) = 0;
00264   virtual void SetSuspensionERP (float value) = 0;
00265   virtual void SetSuspensionCFM (float value) = 0;
00266 
00267   virtual void SetLoStop2 (float value) = 0;
00268   virtual void SetHiStop2 (float value) = 0;
00269   virtual void SetVel2 (float value) = 0;
00270   virtual void SetFMax2 (float value) = 0;
00271   virtual void SetFudgeFactor2 (float value) = 0;
00272   virtual void SetBounce2 (float value) = 0;
00273   virtual void SetCFM2 (float value) = 0;
00274   virtual void SetStopERP2 (float value) = 0;
00275   virtual void SetStopCFM2 (float value) = 0;
00276   virtual void SetSuspensionERP2 (float value) = 0;
00277   virtual void SetSuspensionCFM2 (float value) = 0;
00278 
00279   virtual void SetLoStop3 (float value) = 0;
00280   virtual void SetHiStop3 (float value) = 0;
00281   virtual void SetVel3 (float value) = 0;
00282   virtual void SetFMax3 (float value) = 0;
00283   virtual void SetFudgeFactor3 (float value) = 0;
00284   virtual void SetBounce3 (float value) = 0;
00285   virtual void SetCFM3 (float value) = 0;
00286   virtual void SetStopERP3 (float value) = 0;
00287   virtual void SetStopCFM3 (float value) = 0;
00288   virtual void SetSuspensionERP3 (float value) = 0;
00289   virtual void SetSuspensionCFM3 (float value) = 0;
00290 
00291   virtual float GetLoStop () = 0;
00292   virtual float GetHiStop () = 0;
00293   virtual float GetVel () = 0;
00294   virtual float GetFMax () = 0;
00295   virtual float GetFudgeFactor () = 0;
00296   virtual float GetBounce () = 0;
00297   virtual float GetCFM () = 0;
00298   virtual float GetStopERP () = 0;
00299   virtual float GetStopCFM () = 0;
00300   virtual float GetSuspensionERP () = 0;
00301   virtual float GetSuspensionCFM () = 0;
00302 
00303   virtual float GetLoStop2 () = 0;
00304   virtual float GetHiStop2 () = 0;
00305   virtual float GetVel2 () = 0;
00306   virtual float GetFMax2 () = 0;
00307   virtual float GetFudgeFactor2 () = 0;
00308   virtual float GetBounce2 () = 0;
00309   virtual float GetCFM2 () = 0;
00310   virtual float GetStopERP2 () = 0;
00311   virtual float GetStopCFM2 () = 0;
00312   virtual float GetSuspensionERP2 () = 0;
00313   virtual float GetSuspensionCFM2 () = 0;
00314 
00315   virtual float GetLoStop3 () = 0;
00316   virtual float GetHiStop3 () = 0;
00317   virtual float GetVel3 () = 0;
00318   virtual float GetFMax3 () = 0;
00319   virtual float GetFudgeFactor3 () = 0;
00320   virtual float GetBounce3 () = 0;
00321   virtual float GetCFM3 () = 0;
00322   virtual float GetStopERP3 () = 0;
00323   virtual float GetStopCFM3 () = 0;
00324   virtual float GetSuspensionERP3 () = 0;
00325   virtual float GetSuspensionCFM3 () = 0;
00326 
00327   // This is a very ugly hack quite specific to NmS
00328   virtual void SetHinge2Axis1 (const csVector3& axis) = 0;
00329   virtual void SetHinge2Axis2 (const csVector3& axis) = 0;
00330   virtual void SetHinge2Anchor (const csVector3& point) = 0;
00331 };
00332 
00333 #endif // __CS_IVARIA_ODE_H__

Generated for Crystal Space by doxygen 1.3.9.1