# VRML V2.0 utf8
# Projeto ARCA
# Grupo Percepção em Ambientes de Realidade Virtual
# protótipo da batata que apodrece quando tocada
PROTO Batata [
exposedField SFBool enabled FALSE
exposedField SFVec3f scale 1 1 1
exposedField SFVec3f translation 0 0 0
]
{
Transform {
scale IS scale
translation IS translation
children [
Shape {
appearance Appearance {
material DEF materialBatata Material {
specularColor 1 1 1
diffuseColor 1 1 0
ambientIntensity 0
transparency 0
shininess 0.2
}
}
geometry Sphere { radius 2 }
}
DEF corBatata ColorInterpolator {
key [ 0 ,0.5 ,1 , ]
keyValue [ 1 1 0 ,0.6 0.6 0 ,0.2 0.2 0 , ]
}
DEF relogioBatata TimeSensor {
cycleInterval 60
enabled TRUE
loop FALSE
startTime 0
stopTime 0
}
# essa não precisa ser a única maneira de iniciar o apodrecimento da batata;
# basta gerar um evento ...
DEF toqueBatata TouchSensor {
enabled TRUE
}
DEF procToqueBatata Script {
eventIn SFBool batataTocada
eventOut SFBool iniciaApodrecimento
field SFBool bLigado FALSE
url [ "javascript: function sensor_tocado(value) {
if (!bLigado) {
bLigado = TRUE;
iniciaApodrecimento = TRUE;
}
}", ]
}
]
}
ROUTE toqueBatata.isActive TO procToqueBatata.batataTocada
ROUTE procToqueBatata.iniciaApodrecimento TO relogioBatata.set_enabled
ROUTE toqueBatata.touchTime TO relogioBatata.set_startTime
ROUTE relogioBatata.fraction_changed TO corBatata.set_fraction
ROUTE corBatata.value_changed TO materialBatata.set_diffuseColor
# falta a parte de ligar o relógio
# ROUTE procToqueBatata.iniciaApodrecimento TO relogio.set_enabled
}
Para visualizar o jardim, você precisa de: