toggle
Web3D/VR
#@extern @vr-extern-proto-object-box.wrl
PROTO Toggle [
exposedField SFVec3f scale 1 1 1
field SFVec2f position 0 0
field SFVec2f size 1 1
field MFString texture_on [ "toggle_on.gif" ]
field MFString texture_off [ "toggle_off.gif" ]
exposedField SFBool enabled FALSE
eventOut SFInt32 switch
] {
DEF TRANS Transform {
scale IS scale
children [
DEF TOUCHSENSOR TouchSensor {
enabled TRUE
}
Shape {
appearance Appearance {
texture DEF TEXTURE ImageTexture { }
}
geometry DEF WINDOWBOX box { }
}
]
}
DEF SCRIPT Script {
directOutput TRUE
eventIn SFTime touchTime
field SFNode transformNode USE TRANS
field SFVec2f position IS position
field SFVec2f size IS size
eventOut SFVec3f set_size
eventIn SFBool set_enabled IS enabled
field SFBool enabled IS enabled
eventOut SFBool enabled_changed IS enabled
eventOut SFInt32 switch_changed IS switch
field SFNode texture USE TEXTURE
field MFString texture_on IS texture_on
field MFString texture_off IS texture_off
url "vrmlscript:
function initialize() {
transformNode.translation =
new SFVec3f(position.x,position.y,0);
set_size = new SFVec3f(size.x,size.y,0.02);
if(enabled) {
texture.url = texture_on;
} else {
texture.url = texture_off;
}
}
function touchTime(value,time) {
if(enabled) {
enabled = FALSE;
enabled_changed = FALSE;
switch_changed = -1;
texture.url = texture_off;
} else {
enabled = TRUE;
enabled_changed = TRUE;
switch_changed = 0;
texture.url = texture_on;
}
}
"
}
ROUTE SCRIPT.set_size TO WINDOWBOX.size
ROUTE TOUCHSENSOR.touchTime TO SCRIPT.touchTime
}