dissection prototype
PROTO Bulb [
exposedField SFVec3f translation 0 0 0
exposedField SFVec3f scale 1 1 1
]{
Transform {
translation IS translation
scale IS scale
children [
Shape {
geometry Sphere { radius 2 }
appearance Appearance {
material DEF MATERIAL Material { #
diffuseColor 1 0 0
}
}
} #
DEF TOUCH TouchSensor { }
DEF TIME TimeSensor { enabled FALSE loop TRUE } #
DEF SCRIPT Script {
eventIn SFFloat set_fraction
eventOut SFColor value_changed
eventIn SFTime touched
eventOut SFBool enabled
field SFBool on FALSE
url "javascript:
function touched(time) {
if (!on) {
on = 'TRUE';
enabled = 'TRUE';
} else {
on = 'FALSE';
enabled = 'FALSE';
}
}
function set_fraction(value) {
if (value < 0.5) value_changed = '1 0 0';
else value_changed = '0 1 1';
}
"
}#
ROUTE TOUCH.touchTime TO SCRIPT.touched
ROUTE SCRIPT.enabled TO TIME.enabled
ROUTE TIME.fraction_changed TO SCRIPT.set_fraction
ROUTE SCRIPT.value_changed TO MATERIAL.diffuseColor
] }
}
Bulb { translation -8 0 0 scale 0.5 0.5 0.5 }
Bulb { translation -5 0 0 }
Bulb { scale 1.5 1.5 1.5 }
Bulb { translation 5 0 0 }
Bulb { translation 8 0 0 scale 0.5 0.5 0.5 }
