#VRML V2.0 utf8 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 0 children [ Transform { translation IS menu_translation rotation IS menu_rotation scale 3 1 3 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 -8 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 -8 2 0 menu_rotation 0 0 1 0 onTexture "raingaugeson.gif" offTexture "raingaugesoff.gif" } } Transform { children DEF CORRAL_MENU MenuItem { objectURL "corrals.wrl" menu_translation -8 1 0 menu_rotation 0 0 1 0 onTexture "corralson.gif" offTexture "corralsoff.gif" } } Transform { children DEF SRER_MENU MenuItem { objectURL "jan19.wrl" menu_translation -8 -1 0 menu_rotation 0 0 1 0 onTexture "3dterrainon.gif" offTexture "3dterrainoff.gif" } } ] } ] collide FALSE } } DEF POSITIONSENSOR ProximitySensor { # enabled FALSE enabled TRUE size 40000 40000 40000 center 0 0 100 } DEF HUDVIEW Viewpoint { isBound TRUE description "HUD" position 0 0 100 # 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