WORLD (
  START (
    POSITION (20,0,20)
  )

  MATERIALS (
    MATERIAL 'floor1' ('/lib/std/stone4.gif')
    MATERIAL 'floor2' ('/lib/std/mystone2.gif')
    MATERIAL 'player' ('/lib/std/snow.jpg')
    MATERIAL 'snow' ('/lib/std/snow.jpg')
    MATERIAL 'halo' ('/lib/stdtex/flare_purp.jpg')
    MATERIAL 'spark' ('/lib/std/spark.png')
    MATERIAL 'raindrop' ('/lib/std/raindrop.png')
    MATERIAL 'flare_picir' ('/lib/stdtex/flare_picir.jpg')
    MATERIAL 'flare_center' ('/lib/stdtex/flare_center.jpg')
    MATERIAL 'andrew_marble4' ('/lib/std/andrew_marble4.gif')
    MATERIAL 'sky' ('/lib/stdtex/sky.jpg')
    MATERIAL 'fpart' ('/lib/stdtex/fpart.png')
    MATERIAL 'fp2' ('/lib/stdtex/fp2.png')
    MATERIAL 'hazecirc' ('/lib/stdtex/hazecirc.jpg')
    MATERIAL 'hazebasic' ('/lib/stdtex/hazebasic.png')
    MATERIAL 'oldmetal' ('/lib/stdtex/oldmetal.jpg')
    MATERIAL 'parket' ('/lib/stdtex/parket.jpg')
    MATERIAL 'asphalt' ('/lib/stdtex/asphalt.jpg')
    MATERIAL 'mosaic' ('/lib/stdtex/mosaic.jpg')
    MATERIAL 'explosion' ('/lib/std/explo.jpg')
  )

  ; ISO engine cant implement thing objects
  PLUGINS (
    PLUGIN 'fireFact' ('crystalspace.mesh.loader.factory.fire')
    PLUGIN 'fire' ('crystalspace.mesh.loader.fire')
    PLUGIN 'rainFact' ('crystalspace.mesh.loader.factory.rain')
    PLUGIN 'rain' ('crystalspace.mesh.loader.rain')
    PLUGIN 'snowFact' ('crystalspace.mesh.loader.factory.snow')
    PLUGIN 'snow' ('crystalspace.mesh.loader.snow')
    PLUGIN 'fountainFact' ('crystalspace.mesh.loader.factory.fountain')
    PLUGIN 'fountain' ('crystalspace.mesh.loader.fountain')
    PLUGIN 'emitFact' ('crystalspace.mesh.loader.factory.emit')
    PLUGIN 'emit' ('crystalspace.mesh.loader.emit')
    PLUGIN 'hazeFact' ('crystalspace.mesh.loader.factory.haze')
    PLUGIN 'haze' ('crystalspace.mesh.loader.haze')
    PLUGIN 'spiralFact' ('crystalspace.mesh.loader.factory.spiral')
    PLUGIN 'spiral' ('crystalspace.mesh.loader.spiral')
    PLUGIN 'meshFact' ('crystalspace.mesh.loader.factory.genmesh')
    PLUGIN 'mesh' ('crystalspace.mesh.loader.genmesh')
  )

  MESHFACT 'fountainFact' (
    PLUGIN ('crystalspace.mesh.loader.factory.fountain')
    PARAMS ()
  )
  MESHFACT 'snowFact' (
    PLUGIN ('crystalspace.mesh.loader.factory.snow')
    PARAMS ()
  )
  MESHFACT 'fireFact' (
    PLUGIN ('fireFact')
    PARAMS ()
  )
  MESHFACT 'rainFact' (
    PLUGIN ('rainFact')
    PARAMS ()
  )
  MESHFACT 'spiralFact' (
    PLUGIN ('spiralFact')
    PARAMS ()
  )
  MESHFACT 'hazeFact' (
    PLUGIN ('hazeFact')
    PARAMS ()
  )

  MESHFACT 'emitFact' (
    PLUGIN ('emitFact')
    PARAMS ()
  )

  MESHFACT 'explosionFact' (
    PLUGIN ('crystalspace.mesh.loader.factory.explosion')
    PARAMS ()
  )

  MESHFACT 'ballFact' (
    PLUGIN ('crystalspace.mesh.loader.factory.ball')
    PARAMS ()
  )

  MESHFACT 'genMeshFact' (
    PLUGIN ('meshFact')
    PARAMS (
      ; 8 vertices and 12 triangles.
      NUM (8,12)
      VERTICES (
        V (-1,1,1:0,0)
        V (-1,1,-1:1,0)
        V (1,1,-1:0,1)
        V (1,1,1:1,1)
        V (-1,-1,1:1,0)
        V (-1,-1,-1:0,1)
        V (1,-1,-1:1,1)
        V (1,-1,1:0,0)
      )
      TRIANGLES (
        T (0,3,1)
        T (3,2,1)
        T (4,5,7)
        T (5,6,7)
        T (0,4,3)
        T (4,7,3)
        T (1,6,5)
        T (1,2,6)
        T (0,1,5)
        T (0,5,4)
        T (2,3,7)
        T (2,7,6)
      )
      AUTONORMALS()
    )
  )

  GRIDS (
    GRID (
      SIZE (8,8)
      SPACE (0,0,-1,10)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (4,2,4)
        COLOR (1.0,1.0,1.0)
        RADIUS (3.0)
      )
      TILE2D (
        START (0,0,0)
        END (8,0,8)
        MATERIAL ('floor2')
      )
 
      MESHOBJ 'fountain1' (
        PRIORITY (alpha)
        PLUGIN ('fountain')
        PARAMS (
          FACTORY ('fountainFact')
          NUMBER (150)
          MATERIAL ('spark')
          ORIGIN (0,0,0)
          DROPSIZE (.15,.15)
          COLOR (0.7,0.9,1.0)
          ACCEL (0,-0.3,0)
          FALLTIME (9)
          SPEED (1.8)
          ELEVATION (1.0)
          AZIMUTH (1.75)
          OPENING (.2)
          MIXMODE (ADD ())
        )
        ZTEST ()
        MOVE (V (4,0,4))
      )
    )
    GRID (
      SIZE (8,8)
      SPACE (0,8,-1,10)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (4,2,12)
        COLOR (1.0,1.0,1.0)
        RADIUS (3.0)
      )
      TILE2D (
        START (0,0,8)
        END (8,0,16)
        MATERIAL ('floor1')
      )

      MESHOBJ 'rainfall' (
        PRIORITY (alpha)
        PLUGIN ('rain')
        PARAMS (
  	    FACTORY ('rainFact')
          BOX (-3,-.3,-3, 3,10,3);
	    MIXMODE (ADD ())
	    NUMBER (150)
	    MATERIAL ('raindrop')
	    DROPSIZE(0.02, 0.37)
	    LIGHTING (off)
	    COLOR (0.2, 0.35, 0.5)
	    FALLSPEED(0, -2.84, 0);
        )
        ZTEST ()
        MOVE (V (4,0,12))
      )
    )
    GRID (
      SIZE (8,8)
      SPACE (8,0,-1,10)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (12,2,4)
        COLOR (1.0,1.0,1.0)
        RADIUS (3.0)
      )
      TILE2D (
        START (8,0,0)
        END (16,0,8)
        MATERIAL ('snow')
      )

      MESHOBJ 'snow1' (
        PRIORITY ('alpha')
        PLUGIN ('snow')
        PARAMS (
          FACTORY ('snowFact')
          BOX (-3,-.3,-3,3,10,3)
          NUMBER (1000)
          MATERIAL ('snow')
          MIXMODE (ADD ())
          DROPSIZE (0.07,0.07)
          LIGHTING (off)
          FALLSPEED (0,-.3,0)
          SWIRL (0.2)
          COLOR (.25,.25,.25)
        )
        MOVE (V (12,0,4))
        ZTEST ()
      )
    )

    GRID (
      SIZE (8,8)
      SPACE (16,4,-1,10)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (20,2,8)
        COLOR (1.0,1.0,1.0)
        RADIUS (5.0)
      )
      TILE2D (
        START (16,0,4)
        END (24,0,12)
        MATERIAL ('floor1')
      )
      MESHOBJ 'spiral' (
        PRIORITY (alpha)
        PLUGIN ('spiral')
        PARAMS (
	    FACTORY ('spiralFact')
	    MIXMODE (ADD ())
          NUMBER (1500)
	    MATERIAL ('raindrop')
	    COLOR (0.0, 0.9, 0.2)
	    SOURCE (0,0,0)
        )
        ZTEST ()
        MOVE (V (20,0,8))
      )
    )

    GRID (
      SIZE (8,8)
      SPACE (24,8,-1,10)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (28,2,12)
        COLOR (1.0,1.0,1.0)
        RADIUS (5.0)
      )
      TILE2D (
        START (24,0,8)
        END (32,0,16)
        MATERIAL ('asphalt')
      )
      MESHOBJ 'flame' (
        PRIORITY (alpha)
        PLUGIN ('fire')
        PARAMS (
	    FACTORY ('fireFact')
	    MIXMODE (ADD ())
	    NUMBER (500)
	    MATERIAL ('raindrop')
	    ORIGIN (0,0,0)
	    DROPSIZE (0.05,0.04)
	    LIGHTING (off)
	    SWIRL (1.3)
	    COLORSCALE (0.2)
        )
        ZTEST ()
        MOVE (V (28,0,12))
      )
    )
    GRID (
      SIZE (8,8)
      SPACE (16,12,-1,11)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (20,3,16)
        COLOR (1.0,1.0,1.0)
        RADIUS (5.0)
      )
      TILE2D (
        START (16,1,12)
        END (24,1,20)
        MATERIAL ('andrew_marble4')
      )
      MESHOBJ 'emit1' (
        PRIORITY (alpha)
        PLUGIN ('emit')
        PARAMS (
	    FACTORY ('emitFact')
	    MIXMODE (ADD ())
	    NUMBER (250)
	    MATERIAL ('spark')
          RECTPARTICLES(0.12, 0.12)
	    LIGHTING (off)
	    TOTALTIME (5000)
	    STARTPOS (EMITFIXED (0,0,0))
	    STARTSPEED (EMITFIXED (0,0.75,0))
	    STARTACCEL (EMITFIXED (0,0,0))
  	    ;ATTRACTOR ()
	    ;ATTRACTORFORCE (1.0)
	    ; age: time, rgb,  alpha, swirl, rotspeed, scale
          AGING (0, 1.0,1.0,1.0, 0.3, 1.0, 0.0, 0.1)
          AGING (1000, 0.0,1.0,1.0, 0.3, 0.0, 1.0, 0.4)
          AGING (2000, 0.6,0.0,1.0, 0.3, 0.0, 20.0, 1.5)
          AGING (3000, 0.3,0.0,0.5, 0.3, 0.0, 1.0, 1.0)
          AGING (5000, 0.3,0.0,0.5, 1.0, 0.0, 0.0, 1.0)
        )
        ZTEST ()
        MOVE (V (20,1,16))
      )
    )

    GRID (
      SIZE (8,8)
      SPACE (8,16,-1,12)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (12,4,20)
        COLOR (1.0,1.0,1.0)
        RADIUS (5.0)
      )
      TILE2D (
        START (8,2,16)
        END (16,2,24)
        MATERIAL ('mosaic')
      )
      MESHOBJ 'haze3' (
        PRIORITY (alpha)
        PLUGIN ('haze')
        PARAMS (
          FACTORY ('hazeFact')
	    MIXMODE (COPY ())
	    MATERIAL ('fpart')
	    ORIGIN ( 0,-1,0 )
	    DIRECTIONAL ( 0,1,0 )
	    LAYER( SCALE(0.5) HAZECONE(16, 0,-1,0, 0,5,0 , 1, 4.0) )
        )
        ZTEST ()
        MOVE (V (12,2,20))
      )
    )

    GRID (
      SIZE (8,8)
      SPACE (0,20,-1,12)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (4,4,24)
        COLOR (1.0,1.0,1.0)
        RADIUS (5.0)
      )
      TILE2D (
        START (0,0,20)
        END (8,0,28)
        MATERIAL ('parket')
      )
      MESHOBJ 'haze4' (
        PRIORITY (alpha)
        PLUGIN ('haze')
        ZTEST ()
        MOVE (V (4,0,24))
        PARAMS (
	    FACTORY ('hazeFact')
	    MIXMODE (ADD ())
	    MATERIAL ('flare_picir')
	    ORIGIN ( 0,1,0 )
	    DIRECTIONAL ( 0,1,0 )
          LAYER( SCALE(0.5) HAZEBOX( -1,-1,-.3, 1,3,.3 ) )
        )
      )
    )

    GRID (
      SIZE (8,8)
      SPACE (-8,20,-1,12)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (-4,4,24)
        COLOR (1.0,1.0,1.0)
        RADIUS (5.0)
      )
      TILE2D (
        START (-8,0,20)
        END (0,0,28)
        MATERIAL ('oldmetal')
      )
      MESHOBJ 'metalBall' (
        PLUGIN ('crystalspace.mesh.loader.ball')
	  PARAMS (
	    FACTORY ('ballFact')
	    MATERIAL ('oldmetal')
	    NUMRIM (16)
	    RADIUS (1, 1, 1)
	    SHIFT (0, 0, 0)
	    MIXMODE (MULTIPLY ())
	  )
        ZTEST ()
        PRIORITY ('alpha')
        MOVE (V (-4, 2, 24))
        KEY ("entity_Rotate","0,30,10,true")
      )
    )

    GRID (
      SIZE (8,8)
      SPACE (-16,20,-1,10)
      MULT (1,1)
      LIGHT (
        ATTENUATION (2)
        POSITION (-12,4,24)
        COLOR (1.0,1.0,1.0)
        RADIUS (5.0)
      )
      TILE2D (
        START (-16,0,20)
        END (-8,0,28)
        MATERIAL ('parket')
      )
      MESHOBJ 'genMesh' (
        PLUGIN ('mesh')
        PARAMS (
          FACTORY ('genMeshFact')
	    MATERIAL ('floor2')
        )
        MOVE (V (-12,0,24))
      )
    )
  )
)