#VRML V2.0 utf8 # # Proximity pillars # prox2.wrl # by David R. Nadeau # # This example illustrates the use of proximity sensors to sense # when the user gets close, and trigger animations or sounds. # WorldInfo { title "Proximity pillars" info [ "Copyright (c) 1997, David R. Nadeau" ] } Viewpoint { position 7.5 1.7 7.5 orientation 0.0 1.0 0.0 0.785 description "Entry view" } NavigationInfo { speed 3.0 headlight FALSE } Background { skyColor [ 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 ] skyAngle [ 1.57, 1.87, ] } Fog { color 0.1 0.1 0.1 visibilityRange 18.0 fogType "LINEAR" } DirectionalLight { direction -1.0 -0.5 -0.5 } # # Grid plane # Shape { appearance Appearance { # no material - emissive texture ImageTexture { url "grill.png" } textureTransform TextureTransform { scale 16.0 16.0 } } geometry IndexedFaceSet { coord Coordinate { point [ -16.0 0.0 16.0, 16.0 0.0 16.0, 16.0 0.0 -16.0, -16.0 0.0 -16.0, ] } coordIndex [ 0, 1, 2, 3 ] texCoord TextureCoordinate { point [ 0.0 0.0, 1.0 0.0, 1.0 1.0, 0.0 1.0, ] } texCoordIndex [ 0, 1, 2, 3 ] } } # # Collision sound # Sound { source DEF Bonk AudioClip { url "dropbrk.wav" startTime 0.0 stopTime 1.0 loop FALSE } minFront 100.0 maxFront 100.0 minBack 100.0 maxBack 100.0 } # # Emerging bars # DEF HitBar1 Collision { children [ Transform { translation -2.0 0.0 2.0 children [ DEF NearBar1 ProximitySensor { size 14.0 14.0 14.0 } Shape { appearance Appearance { material DEF MaterialBar1 Material { diffuseColor 0.0 0.3 1.0 transparency 1.0 } } geometry IndexedFaceSet { coord Coordinate { point [ -0.5 0.0 0.5, 0.5 0.0 0.5, 0.5 0.0 -0.5, -0.5 0.0 -0.5, -0.5 4.0 0.5, 0.5 4.0 0.5, 0.5 4.0 -0.5, -0.5 4.0 -0.5, ] } coordIndex [ 0, 1, 5, 4, -1, 1, 2, 6, 5, -1, 2, 3, 7, 6, -1, 3, 0, 4, 7, -1, 4, 5, 6, 7, -1, ] } } ] } ] } DEF ClockOnBar1 TimeSensor { cycleInterval 1.0 startTime 0.0 stopTime 1.0 loop FALSE } DEF ClockOffBar1 TimeSensor { cycleInterval 1.0 startTime 0.0 stopTime 1.0 loop FALSE } DEF OnBar1 ScalarInterpolator { key [ 0.0, 1.0 ] keyValue [ 1.0, 0.0 ] } DEF OffBar1 ScalarInterpolator { key [ 0.0, 1.0 ] keyValue [ 0.0, 1.0 ] } ROUTE NearBar1.enterTime TO ClockOnBar1.set_startTime ROUTE NearBar1.exitTime TO ClockOffBar1.set_startTime ROUTE ClockOnBar1.fraction_changed TO OnBar1.set_fraction ROUTE ClockOffBar1.fraction_changed TO OffBar1.set_fraction ROUTE OnBar1.value_changed TO MaterialBar1.set_transparency ROUTE OffBar1.value_changed TO MaterialBar1.set_transparency ROUTE HitBar1.collideTime TO Bonk.set_startTime DEF HitBar2 Collision { children [ Transform { translation 4.0 0.0 0.0 children [ DEF NearBar2 ProximitySensor { size 14.0 14.0 14.0 } Shape { appearance Appearance { material DEF MaterialBar2 Material { diffuseColor 0.0 1.0 0.0 transparency 1.0 } } geometry IndexedFaceSet { coord Coordinate { point [ -0.5 0.0 0.5, 0.5 0.0 0.5, 0.5 0.0 -0.5, -0.5 0.0 -0.5, -0.5 2.0 0.5, 0.5 2.0 0.5, 0.5 2.0 -0.5, -0.5 2.0 -0.5, ] } coordIndex [ 0, 1, 5, 4, -1, 1, 2, 6, 5, -1, 2, 3, 7, 6, -1, 3, 0, 4, 7, -1, 4, 5, 6, 7, -1, ] } } ] } ] } DEF ClockOnBar2 TimeSensor { cycleInterval 1.0 startTime 0.0 stopTime 1.0 loop FALSE } DEF ClockOffBar2 TimeSensor { cycleInterval 1.0 startTime 0.0 stopTime 1.0 loop FALSE } DEF OnBar2 ScalarInterpolator { key [ 0.0, 1.0 ] keyValue [ 1.0, 0.0 ] } DEF OffBar2 ScalarInterpolator { key [ 0.0, 1.0 ] keyValue [ 0.0, 1.0 ] } ROUTE NearBar2.enterTime TO ClockOnBar2.set_startTime ROUTE NearBar2.exitTime TO ClockOffBar2.set_startTime ROUTE ClockOnBar2.fraction_changed TO OnBar2.set_fraction ROUTE ClockOffBar2.fraction_changed TO OffBar2.set_fraction ROUTE OnBar2.value_changed TO MaterialBar2.set_transparency ROUTE OffBar2.value_changed TO MaterialBar2.set_transparency ROUTE HitBar2.collideTime TO Bonk.set_startTime DEF HitBar3 Collision { children [ Transform { translation -4.0 0.0 -4.0 children [ DEF NearBar3 ProximitySensor { size 14.0 14.0 14.0 } Shape { appearance Appearance { material DEF MaterialBar3 Material { diffuseColor 1.0 1.0 0.0 transparency 1.0 } } geometry IndexedFaceSet { coord Coordinate { point [ -0.5 0.0 0.5, 0.5 0.0 0.5, 0.5 0.0 -0.5, -0.5 0.0 -0.5, -0.5 4.0 0.5, 0.5 4.0 0.5, 0.5 4.0 -0.5, -0.5 4.0 -0.5, ] } coordIndex [ 0, 1, 5, 4, -1, 1, 2, 6, 5, -1, 2, 3, 7, 6, -1, 3, 0, 4, 7, -1, 4, 5, 6, 7, -1, ] } } ] } ] } DEF ClockOnBar3 TimeSensor { cycleInterval 1.0 startTime 0.0 stopTime 1.0 loop FALSE } DEF ClockOffBar3 TimeSensor { cycleInterval 1.0 startTime 0.0 stopTime 1.0 loop FALSE } DEF OnBar3 ScalarInterpolator { key [ 0.0, 1.0 ] keyValue [ 1.0, 0.0 ] } DEF OffBar3 ScalarInterpolator { key [ 0.0, 1.0 ] keyValue [ 0.0, 1.0 ] } ROUTE NearBar3.enterTime TO ClockOnBar3.set_startTime ROUTE NearBar3.exitTime TO ClockOffBar3.set_startTime ROUTE ClockOnBar3.fraction_changed TO OnBar3.set_fraction ROUTE ClockOffBar3.fraction_changed TO OffBar3.set_fraction ROUTE OnBar3.value_changed TO MaterialBar3.set_transparency ROUTE OffBar3.value_changed TO MaterialBar3.set_transparency ROUTE HitBar3.collideTime TO Bonk.set_startTime DEF HitBar4 Collision { children [ Transform { translation 2.0 0.0 -2.0 children [ DEF NearBar4 ProximitySensor { size 14.0 14.0 14.0 } Shape { appearance Appearance { material DEF MaterialBar4 Material { diffuseColor 1.0 0.0 0.0 transparency 1.0 } } geometry IndexedFaceSet { coord Coordinate { point [ -0.5 0.0 0.5, 0.5 0.0 0.5, 0.5 0.0 -0.5, -0.5 0.0 -0.5, -0.5 3.0 0.5, 0.5 3.0 0.5, 0.5 3.0 -0.5, -0.5 3.0 -0.5, ] } coordIndex [ 0, 1, 5, 4, -1, 1, 2, 6, 5, -1, 2, 3, 7, 6, -1, 3, 0, 4, 7, -1, 4, 5, 6, 7, -1, ] } } ] } ] } DEF ClockOnBar4 TimeSensor { cycleInterval 1.0 startTime 0.0 stopTime 1.0 loop FALSE } DEF ClockOffBar4 TimeSensor { cycleInterval 1.0 startTime 0.0 stopTime 1.0 loop FALSE } DEF OnBar4 ScalarInterpolator { key [ 0.0, 1.0 ] keyValue [ 1.0, 0.0 ] } DEF OffBar4 ScalarInterpolator { key [ 0.0, 1.0 ] keyValue [ 0.0, 1.0 ] } ROUTE NearBar4.enterTime TO ClockOnBar4.set_startTime ROUTE NearBar4.exitTime TO ClockOffBar4.set_startTime ROUTE ClockOnBar4.fraction_changed TO OnBar4.set_fraction ROUTE ClockOffBar4.fraction_changed TO OffBar4.set_fraction ROUTE OnBar4.value_changed TO MaterialBar4.set_transparency ROUTE OffBar4.value_changed TO MaterialBar4.set_transparency ROUTE HitBar4.collideTime TO Bonk.set_startTime