#VRML V2.0 utf8 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 ] } WorldInfo { title "Santa Rita Experimental Range" info ["Copyright (c) 2000 University of Arizona", "Aaryn Olsson"] } NavigationInfo { avatarSize [ 0.25 1.6 0.75 ] headlight TRUE speed 1000 type [ "FLY", "WALK", "EXAMINE", "ANY" ] visibilityLimit 40000 } # Until I can get Line and Polygon data in VRML form, the MenuItem # PROTO will be used only for Point data. Another PROTO will temporarily # be used to display the polygon data in raster form. PROTO MenuItem [ field MFString objectURL "" field SFVec3f menu_translation 0 0 0 exposedField SFRotation menu_rotation 0 0 1 0 field SFBool shows FALSE field MFString onTexture "" field MFString offTexture "" eventIn SFVec3f set_translation eventIn SFVec3f set_menu_translation eventIn SFRotation set_rotation ] { Transform { children [ DEF WorldItemSwitch Switch { whichChoice 0 choice [ Transform { scale 1 0.81 1 children Inline { url IS objectURL } } ] } DEF MenuItemTransform Transform { translation 0 0 0 children [ DEF MENU_Transform Transform { rotation IS menu_rotation scale 0.03 0.01 0.03 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_menu_translation IS set_menu_translation eventIn SFVec3f set_translation IS set_translation field SFVec3f menu_translation IS menu_translation field SFVec3f the_menu_translation 0 0 0 field MFString offButtonURL IS offTexture field MFString onButtonURL IS onTexture field SFBool shows IS shows eventOut SFInt32 whichChoice eventOut MFString buttonURL eventOut SFRotation the_rotation eventOut SFVec3f the_translation eventOut SFVec3f Menu_translation url "javascript: function initialize() { buttonURL=offButtonURL; whichChoice=-1; if (shows) touchTime(); set_menu_translation(new SFVec3f()); } // initialize() function set_menu_translation(val){ Menu_translation=menu_translation.add(val); } 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; // print('translation is '+val.x+', '+val.y+', '+val.z); } function set_rotation(val){ the_rotation=val; // print ('rotation is '+val.x+', '+val.y+', '+val.z+', '+val.angle); } " } # DEF MenuScript Script ROUTE MenuScript.Menu_translation TO MENU_Transform.set_translation 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 { translation 0 0 0 children Collision { ### We can't collide with the menu, it is inside the avatar children [ DEF HUD_children Transform { translation 0 0 0 children [ DEF MENU_MOVER1 Transform { children [ DEF SensorSlider PlaneSensor { enabled TRUE } DEF MENU_MOVER2 Transform { scale 0.03 0.01 0.03 children [ Shape { appearance Appearance { texture ImageTexture { url "movemenuon.gif" } material Material { diffuseColor 0.2 0.2 0.2 } } geometry IndexedFaceSet{ coord Coordinate { point [ 0 0 0, 1 1 0, 0 1 0, 1 0 0 ] } # coordinate coordIndex [ 0 3 1 2 ] } } ] } ] } DEF MENU_MOVER_SCRIPT Script { eventIn SFVec3f set_translation field SFVec3f offset_translation -0.15 0.02 -0.2 eventOut SFVec3f make_translation url "javascript: function initialize(){ // offset_translation=new SFVec3f(-0.15, 0.02, -0.2); make_translation=offset_translation; } function set_translation(val){ make_translation=offset_translation.add(val); } " } ########### POLYGONS Transform { children DEF PASTURES_MENU MenuItem { objectURL "pastures.wrl" menu_translation -0.15 0.05 -0.2 menu_rotation 0 0 1 0 onTexture "pastures_red.gif" offTexture "pastures_grey.gif" shows FALSE } } Transform { children DEF SOILS_MENU MenuItem { objectURL "soils.wrl" menu_translation -0.15 0.04 -0.2 menu_rotation 0 0 1 0 onTexture "soils_red.gif" offTexture "soils_grey.gif" shows FALSE } } # Transform { # children DEF RANGESITES_MENU MenuItem { # objectURL "rangesites.wrl" # menu_translation -0.15 0.03 -0.2 # menu_rotation 0 0 1 0 # onTexture "rangesites_red.gif" # offTexture "rangesites_grey.gif" # shows FALSE # } # } ########### LINES Transform { children DEF ROADS_MENU MenuItem { objectURL "roads.wrl" menu_translation -0.15 0.02 -0.2 menu_rotation 0 0 1 0 onTexture "roads_red.gif" offTexture "roads_grey.gif" shows FALSE } } Transform { children DEF CONTOURS_MENU MenuItem { objectURL "contours.wrl" menu_translation -0.15 0.01 -0.2 menu_rotation 0 0 1 0 onTexture "contours_red.gif" offTexture "contours_grey.gif" shows FALSE } } ######## POINTS Transform { children DEF PHOTOPTS_MENU MenuItem { objectURL "photopoints.wrl" menu_translation -0.15 -0.01 -0.2 menu_rotation 0 0 1 0 onTexture "photopts_red.gif" offTexture "photopts_grey.gif" shows FALSE } } Transform { children DEF TRANSECT_MENU MenuItem { objectURL "transects.wrl" menu_translation -0.15 -0.02 -0.2 menu_rotation 0 0 1 0 onTexture "transects_red.gif" offTexture "transects_grey.gif" shows FALSE } } Transform { children DEF RAINGAUGE_MENU MenuItem { objectURL "raingauges.wrl" menu_translation -0.15 -0.03 -0.2 menu_rotation 0 0 1 0 onTexture "raingauges_red.gif" offTexture "raingauges_grey.jpg" shows FALSE } } Transform { children DEF CORRAL_MENU MenuItem { objectURL "corrals.wrl" menu_translation -0.15 -0.04 -0.2 menu_rotation 0 0 1 0 onTexture "corrals_red.gif" offTexture "corrals_grey.gif" shows FALSE } } ] } ] collide FALSE } } Transform { children Inline { url "jan19.wrl" } } DEF POSITIONSENSOR ProximitySensor { enabled TRUE size 400000 400000 400000 } DEF HUDVIEW Viewpoint { isBound TRUE description "HUD" position 0 1500 0 orientation 0.03 0.99 0.134 3.7 } #ROUTE SensorSlider.translation_changed TO RAINGAUGE_MENU.set_menu_translation #ROUTE SensorSlider.translation_changed TO TRANSECT_MENU.set_menu_translation #ROUTE SensorSlider.translation_changed TO CORRAL_MENU.set_menu_translation #ROUTE SensorSlider.translation_changed TO MENU_MOVER_SCRIPT.set_translation #ROUTE MENU_MOVER_SCRIPT.make_translation TO MENU_MOVER2.set_translation #ROUTE SPHERE.rotation_changed TO HUD_children.set_rotation #ROUTE POSITIONSENSOR.position_changed TO MENU_MOVER.set_translation #ROUTE POSITIONSENSOR.orientation_changed TO MENU_MOVER.set_rotation #ROUTE POSITIONSENSOR.position_changed TO MENU_MOVER1.set_translation 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 SOILS_MENU.set_translation ROUTE POSITIONSENSOR.position_changed TO PASTURES_MENU.set_translation ROUTE POSITIONSENSOR.position_changed TO ROADS_MENU.set_translation ROUTE POSITIONSENSOR.position_changed TO CONTOURS_MENU.set_translation ROUTE POSITIONSENSOR.position_changed TO PHOTOPTS_MENU.set_translation #ROUTE POSITIONSENSOR.orientation_changed TO MENU_MOVER1.set_rotation 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 SOILS_MENU.set_rotation ROUTE POSITIONSENSOR.orientation_changed TO PASTURES_MENU.set_rotation ROUTE POSITIONSENSOR.orientation_changed TO ROADS_MENU.set_rotation ROUTE POSITIONSENSOR.orientation_changed TO CONTOURS_MENU.set_rotation ROUTE POSITIONSENSOR.orientation_changed TO PHOTOPTS_MENU.set_rotation