Mouth

#VRML V2.0 utf8

PROTO Mouth [
	     field SFVec3f position 0 0 0
	     field SFVec3f size 1 1 1
	     field SFColor color 1 1 1
	     field SFFloat mood 0
	     eventIn SFFloat set_mood
	    ]
{
   Group {
      children [
	 Transform {
	    translation IS position
	    scale IS size
	    children Shape {
	       appearance Appearance {
		  material Material {
		     diffuseColor IS color
		  }
	       }
	       geometry IndexedFaceSet {
		  convex FALSE
		  coord DEF COORD Coordinate {
		     point [ 4 0 0, 2 1 0, -2 1 0, -4 0 0, -2 -1 0, 2 -1 0 ]
		  }
		  coordIndex [ 0 1 2 3 4 5 ]
	       }
	    }
	 }

	 DEF SCRIPT Script {
	    eventIn SFFloat set_mood IS set_mood
	    eventOut MFVec3f coords_changed
	    field SFFloat mood IS mood
	    field MFVec3f pts [ 4 0 0, 2 1 0, -2 1 0, -4 0 0, -2 -1 0, 2 -1 0 ]
	    url	"vrmlscript:

function set_mood(val) {
   mood = 1 - val;
   cornerHeight = mood*4-2;
   pts[0] = new SFVec3f(4, cornerHeight, 0);
   pts[3] = new SFVec3f(-4, cornerHeight, 0);
   coords_changed = pts;   
}

"
	 }
	]
   }
   ROUTE SCRIPT.coords_changed TO COORD.point
}


mrl