#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
}