#VRML V2.0 utf8
PROTO RotationUniforme[
exposedField MFNode children [ ]
field
SFTime cycleInterval 10
field
SFVec3f AxeRotation 0 1 0
eventIn SFTime MarcheArret
eventIn SFTime RAZ
]
{
DEF
PieceTourne Transform {
children IS children
}
DEF
PieceTourne_Temps TimeSensor {cycleInterval IS
cycleInterval loop
FALSE }
DEF
PieceTourne_tourne OrientationInterpolator {
key
[ 0.0 , 0.3333, 0.6666, 1 ]
keyValue
[ 0 0 1 0,0 0 1 -2.09,0 0 1 -4.18,0 0 1 0 ]
}
Script
{
field
SFNode NoeudPieceTourne USE PieceTourne
field SFNode
NoeudPieceTourne_Temps USE PieceTourne_Temps
field SFNode NoeudPieceTourne_tourne USE
PieceTourne_tourne
field
SFTime cycleInterval IS cycleInterval
field
SFVec3f AxeRotation IS AxeRotation
eventIn SFTime MarcheArret IS
MarcheArret
eventIn SFTime RAZ IS RAZ
url"javascript:
function initialize(){
for(i=0;i<4;i++){
NoeudPieceTourne_tourne.keyValue[i][0]=AxeRotation[0]
NoeudPieceTourne_tourne.keyValue[i][1]=AxeRotation[1]
NoeudPieceTourne_tourne.keyValue[i][2]=AxeRotation[2]
}
}
function RAZ(value) {
NoeudPieceTourne_Temps.loop=FALSE
NoeudPieceTourne_Temps.stopTime=value
NoeudPieceTourne.rotation[3]=0
NoeudPieceTourne_Temps.fraction_changed=0
}
function MarcheArret(value) {
if
(NoeudPieceTourne_Temps.loop==FALSE){AnimationDepart(value)}
else {AnimationPause(value)}
}
function
AnimationDepart(value) {
NoeudPieceTourne_Temps.enabled=TRUE
NoeudPieceTourne_Temps.set_loop=TRUE
NoeudPieceTourne_Temps.set_startTime=value
}
function
AnimationPause(value) {
if(NoeudPieceTourne_Temps.enabled==FALSE){
NoeudPieceTourne_Temps.startTime=NoeudPieceTourne_Temps.startTime+value-TimeDebutPause
NoeudPieceTourne_Temps.enabled=TRUE
}
else {
NoeudPieceTourne_Temps.enabled=FALSE
TimeDebutPause=value
}
}
"
}
ROUTE
PieceTourne_Temps.fraction_changed TO PieceTourne_tourne.set_fraction
ROUTE
PieceTourne_tourne.value_changed TO PieceTourne.set_rotation
}