Mountains

#VRML V2.0 utf8

NavigationInfo { type [ "EXAMINE" "ANY" ] }
Viewpoint { position 0 20 30 orientation 1 0 0 -.8 }

Transform {
   translation -10 0 0
   children [
      DEF TOUCH TouchSensor {}
      
      Shape {
	 appearance Appearance { material Material {} }
	 geometry DEF GRID ElevationGrid {
	    solid FALSE
	    xDimension 20
	    zDimension 20
	    height [
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
		   ]
	 }
      }
     ]
}

DEF SCRIPT Script {
   eventIn SFVec3f touchPoint
   eventIn SFBool isActive
   eventIn SFBool utouch
   eventIn SFBool dtouch
   eventOut SFColor ucolor
   eventOut SFColor dcolor
   eventOut MFFloat newHeight
   field SFBool touching FALSE
   field SFBool up TRUE
   field MFFloat height [
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
			]
   url "vrmlscript:

function touchPoint(val) {
   if(touching) {
      i = Math.round(val.x);
      j = Math.round(val.z);
      change = (up)? .1 : -.1;
      height[j*20+i] += change;
      newHeight = height;
   }
}

function isActive(val) {
   touching = val;
}

function utouch(val) { 
   up = TRUE; 
   ucolor = new SFColor(1, 1, 0);
   dcolor = new SFColor(.2, .2, .2);
}
function dtouch(val) { 
   up = FALSE; 
   ucolor = new SFColor(.2, .2, .2);
   dcolor = new SFColor(1, 1, 0);
}

"
}

ROUTE TOUCH.hitPoint_changed TO SCRIPT.touchPoint
ROUTE TOUCH.isActive TO SCRIPT.isActive
ROUTE SCRIPT.newHeight TO GRID.set_height

# choose up or down in hud

DEF NEAR ProximitySensor { size 1000 1000 1000 }

DEF TT Transform {
   translation 0 20 30
   rotation 1 0 0 -.8 
   children Transform {
      translation -.1 .1 -.3
      scale .02 .02 .02
      children [
	 Group {
	    children [
	       DEF UTOUCH TouchSensor {}
	       Shape {
		  appearance Appearance { 
		     material DEF UMAT Material {
			diffuseColor 1 1 0
		     }
		  }
		  geometry Text { 
		     string "UP" 
		     fontStyle DEF FS FontStyle { family "SANS"  style "BOLD" }
		  }
	       }
	      ]
	 }
	 Group {
	    children [
	       DEF DTOUCH TouchSensor {}
	       Shape {
		  appearance Appearance { 
		     material DEF DMAT Material {
			diffuseColor .2 .2 .2
		     }
		  }
		  geometry Text { 
		     string [ "" "DOWN" ] 
		     fontStyle USE FS
		  }
	       }
	      ]
	 }
	]
   }
}

ROUTE NEAR.position_changed TO TT.translation
ROUTE NEAR.orientation_changed TO TT.rotation
ROUTE UTOUCH.isActive TO SCRIPT.utouch
ROUTE DTOUCH.isActive TO SCRIPT.dtouch
ROUTE SCRIPT.ucolor TO UMAT.diffuseColor
ROUTE SCRIPT.dcolor TO DMAT.diffuseColor


mrl