<spot version="3.4">
<!-- Author name: Mike Jost -->
<!-- Author e-mail:  ShapeWater@mikejost.com -->
<!-- Last Modifed: 7/18/2003 -->

<head>
   <title name="Shape Water Demo" />

   <!-- Flatland Blocksets -->
   <blockset href="http://blocksets.flatland.com/flatsets/basic.bset"/>
   <blockset href="http://blocksets.flatland.com/flatsets/basic2.bset"/>

   <!-- BLOCKSETS -->
   <!--
   <blockset href="file:///d|/Flatland/Blocksets_Mike/ShapeWater/ShapeWater.bset"/>
   <blockset href="file:///d|/Flatland/3DML_Projects/ShapeWater/ShapeDemoBlockset/ShapeDemoBlockset.bset"/>
   -->
   <blockset href="http://www.mikejost.com/3dml/Blocksets/ShapeWater/ShapeWater.bset"/>
   <blockset href="http://www.mikejost.com/3dml/Blocksets/ShapeWater/help/ShapeDemoBlockset/ShapeDemoBlockset.bset"/>

   <!-- ENVIRONMENT -->
   <debug/>
   <map style="double" dimensions="(10,10,3)" /> 
   <sky brightness="90%"/>
   <ambient_light brightness="90%"/>
   <ground/>
</head>

<body>

<!-- ==================== -->
<!--   Import Functions   -->
<!-- ==================== -->
<import href="http://www.mikejost.com/3dml/Blocksets/ShapeWater/ShapeWater.3dml"/>
<!-- <import href="../ShapeWater.3dml"/> -->

<!-- Entrances -->
<entrance name="default" location="(5,8,3)" angle="0.0" /> 

<define>

   <!-- torch fire Vertical array -->
   <!-- defines each of the Tubes which simulate the fire -->
   <torchfireVert>
      <element>
         <symbol>f0</symbol>
         <xcen>2.5</xcen>  <!-- for call to TubeWater -->
         <ycen>2.5</ycen>  <!-- for call to TubeWater -->
         <zstart>0.0</zstart> <!-- for call to TubeWater -->
         <zend>30.0</zend>
         <rinner>7.0</rinner>
         <router>1.0</router>
      </element>
      <element>
         <symbol>f1</symbol>
         <xcen>-2.5</xcen>  <!-- for call to TubeWater -->
         <ycen>2.5</ycen>  <!-- for call to TubeWater -->
         <zstart>0.0</zstart> <!-- for call to TubeWater -->
         <zend>30.0</zend>
         <rinner>7.0</rinner>
         <router>1.0</router>
      </element>
      <element>
         <symbol>f2</symbol>
         <xcen>0.0</xcen>  <!-- for call to TubeWater -->
         <ycen>-2.5</ycen>  <!-- for call to TubeWater -->
         <zstart>0.0</zstart> <!-- for call to TubeWater -->
         <zend>30.0</zend>
         <rinner>7.0</rinner>
         <router>1.0</router>
      </element>
      <element>
         <symbol>f3</symbol>
         <xcen>0.0</xcen>  <!-- for call to TubeWater -->
         <ycen>0.0</ycen>  <!-- for call to TubeWater -->
         <zstart>0.0</zstart> <!-- for call to TubeWater -->
         <zend>10.0</zend>
         <rinner>11.0</rinner>
         <router>7.0</router>
      </element>
   </torchfireVert>

   <!--  Start Function -->
   <function name="start">

      // Place fountain blocks
      block = map.get_block("X4");
      block.location:x = 4.0*256.0;
      block.location:y = 2.0*256.0 + 10.0;
      block.location:z = 5.0*256.0;

      block = map.get_block("X1");
      block.location:x = 5.0*256.0;
      block.location:y = 2.0*256.0 + 10.0;
      block.location:z = 5.0*256.0;

      block = map.get_block("X3");
      block.location:x = 4.0*256.0;
      block.location:y = 2.0*256.0 + 10.0;
      block.location:z = 4.0*256.0;

      block = map.get_block("X2");
      block.location:x = 5.0*256.0;
      block.location:y = 2.0*256.0 + 10.0;
      block.location:z = 4.0*256.0;

      //CircleWater(block, Nvertices, Xcenter, Ycenter, Zcenter, Rinner, Router )
      // define large pool wave
      circle = map.get_block("c0");
      CircleWater(circle, 31, 0.0, 0.0, 0.0, 8.0, 300.0);
      TranslateBlockAbsolute(circle, 5.0*256.0, 2.0*256.0+60.0, 5.0*256.0 );

      //***************************
      //      Water Arm 1
      //***************************
      // ElbowWater(block, Nvertices, Xoffset, Ystart, Yend, Zstart, Zend, Rinit, Rfinal) 
      elbow = map.get_block("e0");
      ElbowWater(elbow, 15, 0.0, 187.5, 48.0, 14.0, 145.0, 4.5, 9.0 );
      elbow.rotate_y(45);
      // Translate(block, Xcenter, Ycenter, Zcenter)
      TranslateBlockAbsolute(elbow, 5.0*256.0, 2.0*256.0+10.0, 5.0*256.0);

      // define inner splash circle
      circle = map.get_block("s0");
      CircleWater(circle, 15, 0, 0, 0, 2.0, 17.0);
      TranslateBlockAbsolute(circle, 5.0*256.0+102.0, 2.0*256.0+65.0, 5.0*256.0+102.0);

      // define outer splash circle
      circle = map.get_block("s1");
      CircleWater(circle, 15, 0, 0, 0, 2.0, 30.0);
      TranslateBlockAbsolute(circle, 5.0*256.0+102.0, 2.0*256.0+60.0, 5.0*256.0+102.0);

      //***************************
      //      Water Arm 2
      //***************************
      // ElbowWater(block, Nvertices, Xoffset, Ystart, Yend, Zstart, Zend, Rinit, Rfinal) 
      elbow = map.get_block("e2");
      ElbowWater(elbow, 15, 0.0, 187.5, 48.0, 14.0, 145.0, 4.5, 9.0 );
      elbow.rotate_y(135);
      // Translate(block, Xcenter, Ycenter, Zcenter)
      TranslateBlockAbsolute(elbow, 5.0*256.0, 2.0*256.0+10.0, 5.0*256.0);

      // define inner splash circle
      circle = map.get_block("s2");
      CircleWater(circle, 15, 0, 0, 0, 2.0, 17.0);
      TranslateBlockAbsolute(circle, 5.0*256.0+102.0, 2.0*256.0+65.0, 5.0*256.0-102.0);

      // define outer splash circle
      circle = map.get_block("s3");
      CircleWater(circle, 15, 0, 0, 0, 2.0, 30.0);
      TranslateBlockAbsolute(circle, 5.0*256.0+102.0, 2.0*256.0+60.0, 5.0*256.0-102.0);

      //***************************
      //      Water Arm 3
      //***************************
      // ElbowWater(block, Nvertices, Xoffset, Ystart, Yend, Zstart, Zend, Rinit, Rfinal) 
      elbow = map.get_block("e4");
      ElbowWater(elbow, 15, 0.0, 187.5, 48.0, 14.0, 145.0, 4.5, 9.0 );
      elbow.rotate_y(225);
      // Translate(block, Xcenter, Ycenter, Zcenter)
      TranslateBlockAbsolute(elbow, 5.0*256.0, 2.0*256.0+10.0, 5.0*256.0);

      // define inner splash circle
      circle = map.get_block("s4");
      CircleWater(circle, 15, 0, 0, 0, 2.0, 17.0);
      TranslateBlockAbsolute(circle, 5.0*256.0-102.0, 2.0*256.0+65.0, 5.0*256.0-102.0);

      // define outer splash circle
      circle = map.get_block("s5");
      CircleWater(circle, 15, 0, 0, 0, 2.0, 30.0);
      TranslateBlockAbsolute(circle, 5.0*256.0-102.0, 2.0*256.0+60.0, 5.0*256.0-102.0);

      //***************************
      //      Water Arm 4
      //***************************
      // ElbowWater(block, Nvertices, Xoffset, Ystart, Yend, Zstart, Zend, Rinit, Rfinal) 
      elbow = map.get_block("e6");
      ElbowWater(elbow, 15, 0.0, 187.5, 48.0, 14.0, 145.0, 4.5, 9.0 );
      elbow.rotate_y(315);
      // Translate(block, Xcenter, Ycenter, Zcenter)
      TranslateBlockAbsolute(elbow, 5.0*256.0, 2.0*256.0+10.0, 5.0*256.0);

      // define inner splash circle
      circle = map.get_block("s6");
      CircleWater(circle, 15, 0, 0, 0, 2.0, 17.0);
      TranslateBlockAbsolute(circle, 5.0*256.0-102.0, 2.0*256.0+65.0, 5.0*256.0+102.0);

      // define outer splash circle
      circle = map.get_block("s7");
      CircleWater(circle, 15, 0, 0, 0, 2.0, 30.0);
      TranslateBlockAbsolute(circle, 5.0*256.0-102.0, 2.0*256.0+60.0, 5.0*256.0+102.0);

      //***************************
      //  Define the Torch Fire
      //***************************
      // define the pedestal base
      firebase = map.get_block("tg");
      TranslateBlockAbsolute(firebase, 5.0*256.0, 2.85*256.0, 5.0*256.0);

      // define Torch Fire
      for n=0 to 4  {
         map.set_block(1,7,1,torchfireVert[n].symbol);
         fire = map.get_block(torchfireVert[n].symbol);
         // TubeWater(block, Nvertices, Xoffset, Yoffset, Zstart, Zend, Rinit, Rfinal )
         TubeWater(fire, 15, torchfireVert[n].xcen, torchfireVert[n].ycen, torchfireVert[n].zstart, torchfireVert[n].zend, torchfireVert[n].rinner, torchfireVert[n].router);
         fire.rotate_x(90);
         fire.rotate_z(180);
         fire.rotate_y(180); // handles moving the seam away from the viewer (where sides of flat water meet when wrapped around a tube)
         TranslateBlockAbsolute(fire, 5.0*256.0, 2.897*256.0, 5.0*256.0);
      }

   </function>

</define>


<!-- original Fountain blocks from
   Author  = Lemming
   Website = http://www.digitaldream.de
-->
<create symbol="X1" block="fountainquarter">
   <part name="base" texture="@ShapeDemoBlockset:stone.gif" style="tiled"/>
   <part name="rim,center" texture="@ShapeDemoBlockset:brick_white.jpg" style="tiled"/>
   <part name="waterbase,watertop" texture="@ShapeWater:water.jpg" faces="0"/>
   <part name="waterspout" faces="0"/>
   <param movable="yes" orient="0"/>
</create>
<create symbol="X2" block="fountainquarter">
   <part name="base" texture="@ShapeDemoBlockset:stone.gif" style="tiled"/>
   <part name="rim,center" texture="@ShapeDemoBlockset:brick_white.jpg" style="tiled"/>
   <part name="waterbase,watertop" texture="@ShapeWater:water.jpg" faces="0"/>
   <part name="waterspout" faces="0"/>
   <param movable="yes" orient="90"/>
</create>
<create symbol="X3" block="fountainquarter">
   <part name="base" texture="@ShapeDemoBlockset:stone.gif" style="tiled"/>
   <part name="rim,center" texture="@ShapeDemoBlockset:brick_white.jpg" style="tiled"/>
   <part name="waterbase,watertop" texture="@ShapeWater:water.jpg" faces="0"/>
   <part name="waterspout" faces="0"/>
   <param movable="yes" orient="180"/>
</create>
<create symbol="X4" block="fountainquarter">
   <part name="base" texture="@ShapeDemoBlockset:stone.gif" style="tiled"/>
   <part name="rim,center" texture="@ShapeDemoBlockset:brick_white.jpg" style="tiled"/>
   <part name="waterbase,watertop" texture="@ShapeWater:water.jpg" faces="0"/>
   <part name="waterspout" faces="0"/>
   <param movable="yes" orient="270"/>
</create>

<!-- Fountain Trim(grass) Blocks -->
<create symbol="t1" block="fountaintrim">
   <sound file="@ShapeDemoBlockset:gusher2.wav" volume="90%" playback="looped" radius="8" flood="no" rolloff="0.4"/>
   <part name="top" texture="@ShapeDemoBlockset:grass.gif" faces="2"/>
   <part name="rim,sides,bottom" faces="2"/>
   <param orient="0"/>
</create>
<create symbol="t2" block="fountaintrim">
   <sound file="@ShapeDemoBlockset:fountain.wav" volume="90%" playback="looped" radius="8" flood="no" rolloff="0.4"/>
   <part name="top" texture="@ShapeDemoBlockset:grass.gif" faces="2"/>
   <part name="rim,sides,bottom" faces="2"/>
   <param orient="90"/>
</create>
<create symbol="t3" block="fountaintrim">
   <sound file="@ShapeDemoBlockset:gusher2.wav" volume="90%" playback="looped" radius="8" flood="no" rolloff="0.4"/>
   <part name="top" texture="@ShapeDemoBlockset:grass.gif" faces="2"/>
   <part name="rim,sides,bottom" faces="2"/>
   <param orient="180"/>
</create>
<create symbol="t4" block="fountaintrim">
   <sound file="@ShapeDemoBlockset:fountain.wav" volume="90%" playback="looped" radius="8" flood="no" rolloff="0.4"/>
   <part name="top" texture="@ShapeDemoBlockset:grass.gif" faces="2"/>
   <part name="rim,sides,bottom" faces="2"/>
   <param orient="270"/>
</create>

<!-- Grass Block -->
<create symbol="fg" block="fullgrass">
   <part name="*" texture="@ShapeDemoBlockset:grass.gif" style="tiled"/>
   <param orient="0"/>
</create>

<!-- Pool Block -->
<create symbol="c0" block="Circle31x31">
<param movable="yes"/>
<part name="*" texture="@ShapeWater:bluewater.jpg" style="tiled" translucency="50%" faces="1"/>
<action trigger="start">
   <ripple style="waves" force="10.0" droprate="50%" damp="93%"/>
</action>
</create>

<!--
*************************
     Water Arm 1
**************************
-->
<!-- Elbow water Block -->
<create symbol="e0" block="Elbow15x15">
<param movable="yes" origin="(0,0,0)"/>
<part name="water" texture="@ShapeWater:bluewater.jpg" style="scaled" translucency="70%" faces="2"/>
<part name="interior" texture="@ShapeWater:bluewater.jpg" style="tiled" faces="1" translucency="90%"/>
<action trigger="start">
   <ripple style="raindrops" force="8.0" droprate="50%" damp="99%"/>
</action>
</create>

<!-- Splash circle Blocks -->
<create symbol="s0" block="Circle15x15">
<param movable="yes"/>
<part name="*" texture="@ShapeWater:bluewaterspray2.jpg" style="scaled" translucency="60%" faces="2"/>
<action trigger="start">
   <ripple style="raindrops" force="30.0" droprate="60%" damp="97%"/>
</action>
</create>

<create symbol="s1" block="Circle15x15">
<param movable="yes"/>
<part name="*" texture="@ShapeWater:bluewater.jpg" style="scaled" translucency="60%" faces="2"/>
<action trigger="start">
   <ripple style="waves" force="10.0" droprate="50%" damp="94%"/>
</action>
</create>

<!--
*************************
     Water Arm 2
**************************
-->
<!-- Elbow water Block -->
<create symbol="e2" block="Elbow15x15">
<param movable="yes" origin="(0,0,0)"/>
<part name="water" texture="@ShapeWater:bluewater.jpg" style="scaled" translucency="70%" faces="2"/>
<part name="interior" texture="@ShapeWater:bluewater.jpg" style="tiled" faces="1" translucency="90%"/>
<!--<part name="interior" faces="2" translucency="80%"/>-->
<action trigger="start">
   <ripple style="raindrops" force="8.0" droprate="50%" damp="99%"/>
</action>
</create>

<!-- Splash circle Blocks -->
<create symbol="s2" block="Circle15x15">
<param movable="yes"/>
<part name="*" texture="@ShapeWater:bluewaterspray2.jpg" style="scaled" translucency="60%" faces="2"/>
<action trigger="start">
   <ripple style="raindrops" force="30.0" droprate="60%" damp="97%"/>
</action>
</create>

<create symbol="s3" block="Circle15x15">
<param movable="yes"/>
<part name="*" texture="@ShapeWater:bluewater.jpg" style="scaled" translucency="60%" faces="2"/>
<action trigger="start">
   <ripple style="waves" force="10.0" droprate="50%" damp="94%"/>
</action>
</create>

<!--
*************************
     Water Arm 3
**************************
-->
<!-- Elbow water Block -->
<create symbol="e4" block="Elbow15x15">
<param movable="yes" origin="(0,0,0)"/>
<part name="water" texture="@ShapeWater:bluewater.jpg" style="scaled" translucency="70%" faces="2"/>
<part name="interior" texture="@ShapeWater:bluewater.jpg" style="tiled" faces="1" translucency="90%"/>
<!--<part name="interior" faces="2" translucency="80%"/>-->
<action trigger="start">
   <ripple style="raindrops" force="8.0" droprate="50%" damp="99%"/>
</action>
</create>

<!-- Splash circle Blocks -->
<create symbol="s4" block="Circle15x15">
<param movable="yes"/>
<part name="*" texture="@ShapeWater:bluewaterspray2.jpg" style="scaled" translucency="60%" faces="2"/>
<action trigger="start">
   <ripple style="raindrops" force="30.0" droprate="60%" damp="97%"/>
</action>
</create>

<create symbol="s5" block="Circle15x15">
<param movable="yes"/>
<part name="*" texture="@ShapeWater:bluewater.jpg" style="scaled" translucency="60%" faces="2"/>
<action trigger="start">
   <ripple style="waves" force="10.0" droprate="50%" damp="94%"/>
</action>
</create>

<!--
*************************
     Water Arm 4
**************************
-->
<!-- Elbow water Block -->
<create symbol="e6" block="Elbow15x15">
<param movable="yes" origin="(0,0,0)"/>
<part name="water" texture="@ShapeWater:bluewater.jpg" style="scaled" translucency="70%" faces="2"/>
<part name="interior" texture="@ShapeWater:bluewater.jpg" style="tiled" faces="1" translucency="90%"/>
<!--<part name="interior" faces="2" translucency="80%"/>-->
<action trigger="start">
   <ripple style="raindrops" force="8.0" droprate="50%" damp="99%"/>
</action>
</create>

<!-- Splash circle Blocks -->
<create symbol="s6" block="Circle15x15">
<param movable="yes"/>
<part name="*" texture="@ShapeWater:bluewaterspray2.jpg" style="scaled" translucency="60%" faces="2"/>
<action trigger="start">
   <ripple style="raindrops" force="30.0" droprate="60%" damp="97%"/>
</action>
</create>

<create symbol="s7" block="Circle15x15">
<param movable="yes"/>
<part name="*" texture="@ShapeWater:bluewater.jpg" style="scaled" translucency="60%" faces="2"/>
<action trigger="start">
   <ripple style="waves" force="10.0" droprate="50%" damp="94%"/>
</action>
</create>


<!-- Torch Vertical-->
<create symbol="tg" block="torchpedestal">
<param orient="up,0" scale="(0.25,0.25,0.25)" movable="yes" origin="(0.0,0.0,0.0)"/>
<part name="pedestal" texture="@ShapeDemoBlockset:torchglass.jpg" translucency="25%" faces="1"/>
</create>

<!--
*************************
   Torch Fire 
**************************
-->
<create symbol="f0" block="Elbow15x15">
<param movable="yes" origin="(0.0,0.0,0.0)"/>
<part name="*" texture="@ShapeWater:torchfireyellowred.jpg" style="scaled" angle="90" translucency="50%" faces="2"/>
<action trigger="start">
   <ripple style="waves" force="6.0" droprate="60%" damp="97%"/>
</action>
</create>
<create symbol="f1" block="Elbow15x15">
<param movable="yes" origin="(0.0,0.0,0.0)"/>
<part name="*" texture="@ShapeWater:torchfireyellowred.jpg" style="scaled" translucency="50%" faces="2"/>
<action trigger="start">
   <ripple style="waves" force="6.0" droprate="60%" damp="97%"/>
</action>
</create>
<create symbol="f2" block="Elbow15x15">
<param movable="yes" origin="(0.0,0.0,0.0)"/>
<part name="*" texture="@ShapeWater:torchfireyellowred.jpg" style="scaled" translucency="50%" faces="2"/>
<action trigger="start">
   <ripple style="waves" force="6.0" droprate="60%" damp="97%"/>
</action>
</create>
<create symbol="f3" block="Elbow15x15">
<param movable="yes" origin="(0.0,0.0,0.0)"/>
<part name="*" texture="@ShapeWater:torchfireredbrown.jpg" style="scaled" translucency="50%" faces="2"/>
<action trigger="start">
   <ripple style="waves" force="5.0" droprate="60%" damp="97%"/>
</action>
</create>


<!--
 1  2  3  4  5  6  7  8  9 10  -->
<level number="1">
X4 X1 .. .. c0 .. e0 s0 s1 ..  <!--  1 -->
X3 X2 .. .. .. .. e2 s2 s3 ..  <!--  2 -->
.. .. .. .. .. .. e4 s4 s5 ..  <!--  3 -->
.. .. .. .. .. .. e6 s6 s7 ..  <!--  4 -->
.. .. .. .. .. .. .. .. .. ..  <!--  5 -->
.. .. .. .. .. .. .. .. .. ..  <!--  6 -->
.. .. .. .. .. .. .. tg .. ..  <!--  7 --> <!-- 7th line used to hold torch fire blocks -->
.. .. .. .. .. .. .. .. .. ..  <!--  8 -->
.. .. .. .. .. .. .. .. .. ..  <!--  9 -->
.. .. .. .. .. .. .. .. .. ..  <!-- 10 -->
</level>


<!--
 1  2  3  4  5  6  7  8  9 10  -->
<level number="2">
fg fg fg fg fg fg fg fg fg fg  <!--  1 -->
fg fg fg fg fg fg fg fg fg fg  <!--  2 -->
fg fg fg fg fg fg fg fg fg fg  <!--  3 -->
fg fg fg fg fg fg fg fg fg fg  <!--  4 -->
fg fg fg fg t1 t2 fg fg fg fg  <!--  5 -->
fg fg fg fg t4 t3 fg fg fg fg  <!--  6 -->
fg fg fg fg fg fg fg fg fg fg  <!--  7 -->
fg fg fg fg fg fg fg fg fg fg  <!--  8 -->
fg fg fg fg fg fg fg fg fg fg  <!--  9 -->
fg fg fg fg fg fg fg fg fg fg  <!-- 10 -->
</level>

<!--
 1  2  3  4  5  6  7  8  9 10  -->
<level number="3">
.. .. .. .. .. .. .. .. .. ..  <!--  1 -->
.. .. .. .. .. .. .. .. .. ..  <!--  2 -->
.. .. .. .. .. .. .. .. .. ..  <!--  3 -->
.. .. .. .. .. .. .. .. .. ..  <!--  4 -->
.. .. .. .. .. .. tg .. .. ..  <!--  5 -->
.. .. .. .. .. .. .. .. .. ..  <!--  6 -->
.. .. .. .. .. .. .. .. .. ..  <!--  7 -->
.. .. .. .. .. .. .. .. .. ..  <!--  8 -->
.. .. .. .. .. .. .. .. .. ..  <!--  9 -->
.. .. .. .. .. .. .. .. .. ..  <!-- 10 -->
</level>



</body>
</spot>
