| ## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# iODEDynamicSystemState Struct Reference

This class exposes parameters specific to odedynam as an implementation of iDynamics. More...

`#include <ivaria/ode.h>`

Inheritance diagram for iODEDynamicSystemState:

[legend]
List of all members.

## Public Member Functions
virtual csPtr< iODEAMotorJoint > | CreateAMotorJoint ()=0
| Create a AMotor joint and add it to he simulation.
virtual csPtr< iODEBallJoint > | CreateBallJoint ()=0
| Create a ball joint and add it to he simulation.
virtual csPtr< iODEHinge2Joint > | CreateHinge2Joint ()=0
| Create a hinge2 joint and add it to he simulation.
virtual csPtr< iODEHingeJoint > | CreateHingeJoint ()=0
| Create a hinge joint and add it to he simulation.
virtual csPtr< iODESliderJoint > | CreateSliderJoint ()=0
| Create a Slider joint and add it to he simulation.
virtual csPtr< iODEUniversalJoint > | CreateUniversalJoint ()=0
| Create a Universal joint and add it to he simulation.
virtual void | EnableAutoDisable (bool enable)=0
| Turn on/off AutoDisable functionality.
virtual void | EnableFastObjects (bool enable)=0
| The following enables special robustness checks for fast moving objects to determine if they will tunneling and adjusts the physics frame resolution (rate) to a double for that step (possible doing this recursively down to a potentially infinite resolution for a given step, depending on the speed of the objects being tested) Only enable this if you are experiencing tunneling problems and can't afford to increase the standard FrameRate in the settings above Setting this in iODEDynamicState will set it for each System Use this only if you want a specific system to behave differently.
virtual void | EnableFrameRate (bool enable)=0
| NOTE: This should not be done here if its been done in iODEDynamicState The following code enables a constant framerate on processing this means if you set the frame rate to (default) 50 The stepsize passed into Step is treated as the elapsed time in seconds received from the virtual clock GetElapsedTicks.
virtual void | EnableStepFast (bool enable)=0
| Enables the experimental StepFast code in ode Setting this in ODEDynamicState sets it here Only modify it if you want a specific system to behave differently.
virtual float | GetContactMaxCorrectingVel ()=0
| Get the maximum correcting velocity that contacts are allowed to generate.
virtual float | GetContactSurfaceLayer ()=0
| Get the depth of the surface layer around all geometry objects.
virtual void | RemoveJoint (iODEHinge2Joint *joint)=0
| Remove a Slider joint from the simulation.
virtual void | RemoveJoint (iODESliderJoint *joint)=0
| Remove a Slider joint from the simulation.
virtual void | RemoveJoint (iODEUniversalJoint *joint)=0
| Remove a Universal joint from the simulation.
virtual void | RemoveJoint (iODEAMotorJoint *joint)=0
| Remove a AMotor joint from the simulation.
virtual void | RemoveJoint (iODEHingeJoint *joint)=0
| Remove a hinge joint from the simulation.
virtual void | RemoveJoint (iODEBallJoint *joint)=0
| Remove a ball joint from the simulation.
virtual void | SetAutoDisableParams (float linear, float angular, int steps, float time)=0
| Set the parameters for AutoDisable.
virtual void | SetCFM (float cfm)=0
| Sets ODE's Constraint Force Mixing (see ode docs for details) Setting this in iODEDynamicState will set it for each System Use this only if you want a specific system to behave differently.
virtual void | SetContactMaxCorrectingVel (float v)=0
| Set the maximum correcting velocity that contacts are allowed to generate.
virtual void | SetContactSurfaceLayer (float depth)=0
| Set the depth of the surface layer around all geometry objects.
virtual void | SetERP (float erp)=0
| Sets ODE's Error Resolution Parameter (see ode docs for details) Setting this in iODEDynamicState will set it for each System Use this only if you want a specific system to behave differently.

## Detailed Description

This class exposes parameters specific to odedynam as an implementation of iDynamics.

In most cases SystemState should not be modified directly unless you want the behavior of a specific system different from others.

Definition at line 132 of file ode.h.

## Member Function Documentation

virtual csPtr<iODEAMotorJoint> iODEDynamicSystemState::CreateAMotorJoint | ( |  | ) | `[pure virtual]`

Create a AMotor joint and add it to he simulation.

virtual csPtr<iODEBallJoint> iODEDynamicSystemState::CreateBallJoint | ( |  | ) | `[pure virtual]`

Create a ball joint and add it to he simulation.

virtual csPtr<iODEHinge2Joint> iODEDynamicSystemState::CreateHinge2Joint | ( |  | ) | `[pure virtual]`

Create a hinge2 joint and add it to he simulation.

virtual csPtr<iODEHingeJoint> iODEDynamicSystemState::CreateHingeJoint | ( |  | ) | `[pure virtual]`

Create a hinge joint and add it to he simulation.

virtual csPtr<iODESliderJoint> iODEDynamicSystemState::CreateSliderJoint | ( |  | ) | `[pure virtual]`

Create a Slider joint and add it to he simulation.

virtual csPtr<iODEUniversalJoint> iODEDynamicSystemState::CreateUniversalJoint | ( |  | ) | `[pure virtual]`

Create a Universal joint and add it to he simulation.

virtual void iODEDynamicSystemState::EnableAutoDisable | ( | bool | enable | ) | `[pure virtual]`

Turn on/off AutoDisable functionality.

AutoDisable will stop moving objects if they are stable in order to save processing time.

virtual void iODEDynamicSystemState::EnableFastObjects | ( | bool | enable | ) | `[pure virtual]`

The following enables special robustness checks for fast moving objects to determine if they will tunneling and adjusts the physics frame resolution (rate) to a double for that step (possible doing this recursively down to a potentially infinite resolution for a given step, depending on the speed of the objects being tested) Only enable this if you are experiencing tunneling problems and can't afford to increase the standard FrameRate in the settings above Setting this in iODEDynamicState will set it for each System Use this only if you want a specific system to behave differently.

virtual void iODEDynamicSystemState::EnableFrameRate | ( | bool | enable | ) | `[pure virtual]`

NOTE: This should not be done here if its been done in iODEDynamicState The following code enables a constant framerate on processing this means if you set the frame rate to (default) 50 The stepsize passed into Step is treated as the elapsed time in seconds received from the virtual clock GetElapsedTicks.

The physics will iterate a number of steps at 1/50th of a second until enough time has passed to account for the time Beware the default setting for frame limit is 10, which means if the stepsize passed to Step is longer than 1/10 a second the physics will stop iterating and slow down. Never set this parameter to 0 or else you could incur cycle of death where the number of physics steps increases the amount of elapsed time between frames which increases the number of physics steps toward infinity

virtual void iODEDynamicSystemState::EnableStepFast | ( | bool | enable | ) | `[pure virtual]`

Enables the experimental StepFast code in ode Setting this in ODEDynamicState sets it here Only modify it if you want a specific system to behave differently.

virtual float iODEDynamicSystemState::GetContactMaxCorrectingVel | ( |  | ) | `[pure virtual]`

Get the maximum correcting velocity that contacts are allowed to generate.

The default value is infinity (i.e. no limit). Reducing this value can help prevent "popping" of deeply embedded objects.

virtual float iODEDynamicSystemState::GetContactSurfaceLayer | ( |  | ) | `[pure virtual]`

Get the depth of the surface layer around all geometry objects.

Contacts are allowed to sink into the surface layer up to the given depth before coming to rest. The default value is zero. Increasing this to some small value (e.g. 0.001) can help prevent jittering problems due to contacts being repeatedly made and broken.

Returns:
  the distance two bodies are allowed to interpenetrate

virtual void iODEDynamicSystemState::RemoveJoint | ( | iODEHinge2Joint * | joint | ) | `[pure virtual]`

Remove a Slider joint from the simulation.

virtual void iODEDynamicSystemState::RemoveJoint | ( | iODESliderJoint * | joint | ) | `[pure virtual]`

Remove a Slider joint from the simulation.

virtual void iODEDynamicSystemState::RemoveJoint | ( | iODEUniversalJoint * | joint | ) | `[pure virtual]`

Remove a Universal joint from the simulation.

virtual void iODEDynamicSystemState::RemoveJoint | ( | iODEAMotorJoint * | joint | ) | `[pure virtual]`

Remove a AMotor joint from the simulation.

virtual void iODEDynamicSystemState::RemoveJoint | ( | iODEHingeJoint * | joint | ) | `[pure virtual]`

Remove a hinge joint from the simulation.

virtual void iODEDynamicSystemState::RemoveJoint | ( | iODEBallJoint * | joint | ) | `[pure virtual]`

Remove a ball joint from the simulation.

virtual void iODEDynamicSystemState::SetAutoDisableParams | ( | float | linear,
|  | float | angular,
|  | int | steps,
|  | float | time |
| ) |  |  | `[pure virtual]`

Set the parameters for AutoDisable.

/param linear Maximum linear movement to disable a body /param angular Maximum angular movement to disable a body /param steps Minimum number of steps the body meets linear and angular requirements before it is disabled. /param time Minimum time the body needs to meet linear and angular movement requirements before it is disabled.

virtual void iODEDynamicSystemState::SetCFM | ( | float | cfm | ) | `[pure virtual]`

Sets ODE's Constraint Force Mixing (see ode docs for details) Setting this in iODEDynamicState will set it for each System Use this only if you want a specific system to behave differently.

virtual void iODEDynamicSystemState::SetContactMaxCorrectingVel | ( | float | v | ) | `[pure virtual]`

Set the maximum correcting velocity that contacts are allowed to generate.

The default value is infinity (i.e. no limit). Reducing this value can help prevent "popping" of deeply embedded objects.

Parameters:

  | v | velocity

virtual void iODEDynamicSystemState::SetContactSurfaceLayer | ( | float | depth | ) | `[pure virtual]`

Set the depth of the surface layer around all geometry objects.

Contacts are allowed to sink into the surface layer up to the given depth before coming to rest. The default value is zero. Increasing this to some small value (e.g. 0.001) can help prevent jittering problems due to contacts being repeatedly made and broken.

Parameters:

  | depth | the distance two bodies are allowed to interpenetrate

virtual void iODEDynamicSystemState::SetERP | ( | float | erp | ) | `[pure virtual]`

Sets ODE's Error Resolution Parameter (see ode docs for details) Setting this in iODEDynamicState will set it for each System Use this only if you want a specific system to behave differently.

The documentation for this struct was generated from the following file:

- ivaria/ode.h