#VRML V2.0 utf8
# Scene 5
# Satellit, Erdkugel, Hintergrund
# Lichtquelle, Ton, Animation
# Erde kann mit der Maus gedreht werden
# Satellit beschleunigt bei Anklicken
#
Group {
  children [
    # Meta-Infos     
    Viewpoint {
      position    0 0 300
      orientation 0 0 1 0
      description "Fernansicht"
    },      
    Viewpoint {
      position    275 0 100
      orientation 0 1 0 1
      description "Nahansicht"
    },       
    Viewpoint {
      position    0 400 500
      orientation 1 0 0 -.75
      description "Ansicht von Oben"
    },      
    NavigationInfo {
      headlight   FALSE
      avatarSize [1.0, 1.6, 0.75]
    },
    # Beleuchtung
    DirectionalLight {
      direction 1.0 -0.2 -0.3
      color 1.0 1.0 1.0
    },
    # Timer
    DEF RotationTimer TimeSensor {
      cycleInterval 30.0
      loop TRUE
      startTime 1.0
      stopTime  0.0
    },
    # script to generate path
    DEF SatPath Script {
      url  "javascript:
           function set_fraction(fraction, eventTime) {
             value_changed[0] = r0 * Math.cos(6.28 * nTurns * fraction);
             value_changed[1] = 0.0;
             value_changed[2] = r0 * Math.sin(6.28 * nTurns * fraction);
           }
           function set_accelerate(hit, eventTime) {
             if (hit) {
               nTurns += 1.0;
             }
           }"
      field    SFFloat  nTurns         1.0
      field    SFFloat  r0             200
      eventIn  SFFloat  set_fraction
      eventIn  SFBool   set_accelerate
      eventOut SFVec3f  value_changed 
    },
    # Satellit mit Ton
    DEF Satellite Transform {               
      translation 200 0 0
      children [
        Inline {
          url "ers-1f.wrl"
        },
        Sound {
          source AudioClip {
            url "ding.wav"
            description "Background music"
            loop TRUE
            startTime 1
            stopTime  0
          },
          location 0 0 0
          minFront 30
          minBack  30
          maxFront 300
          maxBack  300
          spatialize TRUE
        },
        DEF SatHit TouchSensor {
        }
      ]
    },
    # Erde mit Link
    DEF Earth Transform {
      children [
        Inline {                    
          url "erde.wrl"
        },
        DEF EarthHandle SphereSensor {
        }
      ]
    },
    # Hintergrund
    Background {
      backUrl    "stars.jpg"
      frontUrl   "stars.jpg"
      leftUrl    "stars.jpg"
      rightUrl   "stars.jpg"
      topUrl     "stars.jpg"
      bottomUrl  "stars.jpg"
    }
  ]
}

# satellite circles the earth        
ROUTE RotationTimer.fraction_changed	TO SatPath.set_fraction
ROUTE SatPath.value_changed		TO Satellite.set_translation

# earth can be rotated manually
ROUTE EarthHandle.rotation_changed	TO Earth.set_rotation

# when the satellite is hit the rotation accelerates
ROUTE SatHit.isActive			TO SatPath.set_accelerate