#VRML V2.0 utf8 WorldInfo { title "Santa Rita Experimental Range" info [ "(C) Copyright 2000 University of Arizona", "aaryn@ag.arizona.edu" ] } NavigationInfo { headlight FALSE type [ "FLY", "WALK", "EXAMINE", "ANY" ] visibilityLimit 10000000 avatarSize [ 0.25, 1.6, 0.75 ] speed 50 } Background { groundAngle 1.57079 groundColor [ 1 1 0.6, 0.5 0.7 0.5 ] skyAngle [ 0.2, 1.57079 ] skyColor [ 0.8 1 0.4, 0.8 1 1, 0.2 0.5 1 ] } PROTO MenuItem [ field MFString objectURL "" exposedField SFVec3f menu_translation 0 0 0 exposedField SFRotation menu_rotation 0 0 1 0 field MFString onTexture "" field MFString offTexture "" eventIn SFVec3f set_translation eventIn SFRotation set_rotation ] { Transform { children [ DEF WorldItemSwitch Switch { whichChoice 0 choice [ Inline { url IS objectURL } ] } DEF MenuItemTransform Transform { translation 0 0 10 children [ Transform { translation IS menu_translation rotation IS menu_rotation # scale 10.015 10.005 10.015 scale 0.015 0.005 0.015 children [ DEF MenuSensor TouchSensor { enabled TRUE } # MenuSensor TouchSensor Shape { appearance Appearance { texture DEF ButtonTexture ImageTexture { url "" } # texture ImageTexture } # Appearance geometry DEF MenuButton IndexedFaceSet { coord Coordinate { point [ 0 0 0, 1 1 0, 0 1 0, 1 0 0 ] } # coordinate coordIndex [ 0 3 1 2 ] } # geometry IndexedFaceSet } # children Shape ] } ]} ] } DEF MenuScript Script{ eventIn SFTime touchTime eventIn SFRotation set_rotation IS set_rotation eventIn SFVec3f set_translation IS set_translation field MFString onButtonURL IS onTexture field MFString offButtonURL IS offTexture eventOut SFInt32 whichChoice eventOut MFString buttonURL eventOut SFRotation the_rotation eventOut SFVec3f the_translation url "javascript: function initialize() { buttonURL=offButtonURL; whichChoice=-1; } // initialize() function touchTime(val){ if (whichChoice==-1){ // Then turn it On (to 0) whichChoice=0; buttonURL=onButtonURL; } else if (whichChoice==0) { // Then turn it Off (to -1) whichChoice=-1; buttonURL=offButtonURL; } else { buttonURL=new MFString(''); } // else } // touchTime() function set_translation(val){ the_translation=val; } function set_rotation(val){ the_rotation=val; } " } # DEF MenuScript Script ROUTE MenuScript.buttonURL TO ButtonTexture.set_url ROUTE MenuScript.whichChoice TO WorldItemSwitch.whichChoice ROUTE MenuSensor.touchTime TO MenuScript.touchTime ROUTE MenuScript.the_translation TO MenuItemTransform.set_translation ROUTE MenuScript.the_rotation TO MenuItemTransform.set_rotation } ######## BEGIN MENU CONSTRUCTION NOW ######## DEF HUD Transform { children Collision { children [ Transform { children [ Transform { children DEF TRANSECT_MENU MenuItem { objectURL "transects.wrl" menu_translation -0.08 0 0 menu_rotation 0 0 1 0 onTexture "transectson.gif" offTexture "transectsoff.gif" } } Transform { children DEF RAINGAUGE_MENU MenuItem { objectURL "raingauges.wrl" menu_translation -0.08 0.02 0 menu_rotation 0 0 1 0 onTexture "raingaugeson.gif" offTexture "raingaugesoff.gif" } } Transform { children DEF CORRAL_MENU MenuItem { objectURL "corrals.wrl" menu_translation -0.08 0.01 0 menu_rotation 0 0 1 0 onTexture "corralson.gif" offTexture "corralsoff.gif" } } Transform { children DEF SRER_MENU MenuItem { objectURL "jan19.wrl" menu_translation -0.08 -0.01 0 menu_rotation 0 0 1 0 onTexture "3dterrainon.gif" offTexture "3dterrainoff.gif" } } ] } ] collide FALSE } } DEF POSITIONSENSOR ProximitySensor { enabled FALSE size 40000 40000 40000 center 0 0 10 } DEF HUDVIEW Viewpoint { isBound TRUE description "HUD" position 0 0 10.1188 # orientation 0 0 -1 0 } ROUTE POSITIONSENSOR.position_changed TO TRANSECT_MENU.set_translation ROUTE POSITIONSENSOR.position_changed TO RAINGAUGE_MENU.set_translation ROUTE POSITIONSENSOR.position_changed TO CORRAL_MENU.set_translation ROUTE POSITIONSENSOR.position_changed TO SRER_MENU.set_translation ROUTE POSITIONSENSOR.orientation_changed TO RAINGAUGE_MENU.set_rotation ROUTE POSITIONSENSOR.orientation_changed TO CORRAL_MENU.set_rotation ROUTE POSITIONSENSOR.orientation_changed TO TRANSECT_MENU.set_rotation ROUTE POSITIONSENSOR.orientation_changed TO SRER_MENU.set_rotation #ROUTE POSITIONSENSOR.position_changed TO POSITIONSENSOR.set_center