<!-- Physics -->
<element name="physics" required="1">
  <description>The physics tag specifies the type and properties of the dynamics engine.</description>

  <attribute name="type" type="string" default="ode" required="1">
    <description>The type of the dynamics engine. Currently must be set to ode</description>
  </attribute>

  <element name="update_rate" type="double" default="1000" required="1">
    <description>Rate at which to update the physics engine</description>
  </element>

  <element name="max_contacts" type="int" default="20" required="0">
    <description>Maximum number of contacts allowed between two entities. This value can be over ridden by a max_contacts element in a collision element.</description>
  </element>

  <element name="gravity" type="vector3" default="0 0 -9.8" required="1">
    <description>The gravity vector</description>
  </element> <!-- End Gravity -->

  <element name="bullet" required="0">
    <description>Bullet specific physics properties</description>
    <element name="dt" type="double" default="0.001" required="1">
      <description>Time step</description>
    </element>
  </element>

  <element name="ode" required="0">
    <description>ODE specific physics properties</description>
    <element name="solver" required="1">
      <description></description>
      <element name="type" type="string" default="quick" required="1">
        <description>One of the following types: world, quick</description>
      </element>
      <element name="dt" type="double" default="0.001" required="1">
        <description>The time duration which advances with each iteration of the dynamics engine.</description>
      </element>
      <element name="iters" type="int" default="50" required="1">
        <description>Number of iterations for each step. A higher number produces greater accuracy at a performance cost.</description>
      </element>
      <element name="precon_iters" type="int" default="0" required="0">
        <description></description>
      </element>
      <element name="sor" type="double" default="1.3" required="1">
        <description>Set the successive over-relaxation parameter.</description>
      </element>
    </element> <!-- End Solver -->

    <element name="constraints" required="1">
      <description></description>
      <element name="cfm" type="double" default="0" required="1">
        <description>Constraint force mixing parameter. See the ODE page for more information.</description>
      </element>
      <element name="erp" type="double" default="0.2" required="1">
        <description>Error reduction parameter. See the ODE page for more information.</description>
      </element>
      <element name="contact_max_correcting_vel" type="double" default="100.0" required="1">
        <description>The maximum correcting velocities allowed when resolving contacts.</description>
      </element>
      <element name="contact_surface_layer" type="double" default="0.001" required="1">
        <description>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.</description>
      </element>
    </element> <!-- End Constraints -->
  </element> <!-- ODE -->
</element> <!-- Physics -->
