<!-- Geometry -->
<element name="geometry" required="1">
  <description>The shape of the visual or collision object.</description>

  <element name="box" required="0">
    <description>Box shape</description>
    <element name="size" type="vector3" default="1 1 1" required="1">
      <description>The three side lengths of the box. The origin of the box is in its geometric center (inside the center of the box).</description>
    </element>
  </element> <!-- End Box -->

  <element name="sphere" required="0">
    <description>Sphere shape</description>
    <element name="radius" type="double" default="1" required="1">
      <description>radius of the sphere</description>
    </element>
  </element> <!-- End Sphere -->

  <element name="cylinder" required="0">
    <description>Cylinder shape</description>
    <element name="radius" type="double" default="1" required="1">
      <description>Radius of the cylinder</description>
    </element>
    <element name="length" type="double" default="1" required="1">
      <description>Length of the cylinder</description>
    </element>
  </element> <!-- End Cylinder -->

  <element name="mesh" required="0">
    <description>Mesh shape</description>
    <element name="filename" type="string" default="__default__" required="0">
      <description>Mesh filename. DEPRECATED</description>
    </element>
    <element name="uri" type="string" default="__default__" required="1">
      <description>Mesh uri</description>
    </element>
    <element name="scale" type="vector3" default="1 1 1" required="0">
      <description>Scaling factor applied to the mesh</description>
    </element>
  </element> <!-- End Mesh -->

  <element name="plane" required="0">
    <description>Plane shape</description>
    <element name="normal" type="vector3" default="0 0 1" required="1">
      <description>Normal direction for the plane</description>
    </element>
    <element name="size" type="vector2d" default="1 1" min="0 0" required="1">
      <description>Length of each side of the plane</description> 
    </element>
  </element> <!-- End Plane -->

  <element name="image" required="0">
    <description>Extrude a set of boxes from a grayscale image.</description>
    <element name="uri" type="string" default="__default__" required="1">
      <description>URI of the grayscale image file</description>
    </element>
    <element name="scale" type="double" default="1" required="1">
      <description>Scaling factor applied to the image</description>
    </element>
    <element name="threshold" type="int" default="200" required="1">
      <description>Grayscale threshold</description>
    </element>
    <element name="height" type="double" default="1" required="1">
      <description>Height of the extruded boxes</description>
    </element>
    <element name="granularity" type="int" default="1" required="1">
      <description>The amount of error in the model</description>
    </element>
  </element> <!-- End Image -->

  <element name="heightmap" required="0">
    <description>A heightmap based on a 2d grayscale image.</description>
    <element name="uri" type="string" default="__default__" required="1">
      <description>URI to a grayscale image file</description>
    </element>
    <element name="size" type="vector3" default="1 1 1" required="1">
      <description>The size of the heightmap in world units</description>
    </element>
    <element name="pos" type="vector3" default="0 0 0" required="0">
      <description>A position offset.</description>
    </element>

    <element name="texture" required="*">
      <description>The heightmap can contain multiple textures. The order of the texture matters. The first texture will appear at the lowest height, and the last texture at the highest height. Use blend to control the height thresholds and fade between textures.</description>
      <element name="size" type="double" default="10" required="1">
        <description>Size of the applied texture in meters.</description>
      </element>
      <element name="diffuse" type="string" default="__default__" required="1">
        <description>Diffuse texture image filename</description>
      </element>
      <element name="normal" type="string" default="__default__" required="1">
        <description>Normalmap texture image filename</description>
      </element>
    </element>
    <element name="blend" required="*">
      <description>The blend tag controls how two adjacent textures are mixed. The number of blend elements should equal one less than the number of textures.</description>
      <element name="min_height" type="double" default="0" required="1">
        <description>Min height of a blend layer</description>
      </element>
      <element name="fade_dist" type="double" default="0" required="1">
        <description>Distance over which the blend occurs</description>
      </element>
    </element>
  </element> <!-- End Heightmap -->
</element><!-- End Geometry -->
