#VRML V2.0 utf8 PROTO Avatar-sport [ exposedField MFFloat avatarSize[ 0.25 1.7500] exposedField SFBool isAvatar TRUE exposedField SFTime gesture1 0 # exposedField SFTime gesture2 0 #Likes jim exposedField SFTime gesture3 0 #Agrees jim exposedField SFTime gesture4 0 #Smiles jim exposedField SFTime gesture5 0 #Frowns jim exposedField SFTime gesture6 0 #Disagrees jim exposedField SFTime gesture7 0 #No likes jim exposedField SFTime gesture8 0 #Good by lil eventIn SFTime set_gesture9 #Superzen lil eventIn SFTime set_gesture10 #Rire jim exposedField MFString gestureNames ["","Likes jim","Agrees jim","Smiles jim","Frowns jim","Disagrees jim","No likes jim","Good by lil","Superzen lil","Rire jim"] eventIn SFVec3f set_position exposedField SFRotation rotation 0 1 0 0 exposedField SFInt32 whichChoice 0 exposedField SFBool isOver FALSE exposedField SFTime touchTime 0 exposedField SFVec3f position 0 0 0 exposedField SFBool isPilot FALSE exposedField SFFloat avatarHeight 1.80 #exposedField SFString nickname "fussballer1" ]{ # Switch { whichChoice IS whichChoice choice DEF WalkingAvatar Transform { rotation IS rotation children [ DEF AvatarInterpolator PositionInterpolator { key [0,1] keyValue [0 0 0,0 0 0] }, DEF AvatarScript Script { directOutput TRUE eventIn SFVec3f set_position IS set_position eventIn SFBool isActive exposedField SFBool isPilot IS isPilot field SFBool moveActive FALSE field SFBool newMove FALSE field SFVec3f curPosition 0 0 0 field MFVec3f keyValues[] field SFNode AvatarTransform USE WalkingAvatar eventOut SFTime startMove eventOut SFTime startWalk eventOut SFTime stopWalk eventOut MFVec3f values_changed url "vrmlscript: function move(timestamp){ if(!isPilot) { keyValues[0] = AvatarTransform.translation_changed; keyValues[1] = curPosition; values_changed = keyValues; startMove = timestamp; startWalk = timestamp; } } function isActive (value, timestamp){ moveActive = value; if ( moveActive == FALSE ){ if ( newMove ){ newMove = FALSE; move(timestamp); } else { stopWalk = timestamp; } } } function set_position (value, timestamp){ if(( curPosition[0]==value[0] )&&( curPosition[1]==value[1] )&&( curPosition[2]==value[2] )) {return;} curPosition = value; if(isPilot){ AvatarTransform.set_translation = value; startWalk = timestamp; stopWalk = timestamp + 1; return; } else if (moveActive) newMove = TRUE; else move(timestamp); } "}#script DEF TimeMove TimeSensor {cycleInterval 1 } DEF TimeStop TimeSensor {cycleInterval 0.1 } DEF TimeWalk TimeSensor {cycleInterval 1 } ROUTE AvatarScript.values_changed TO AvatarInterpolator.set_keyValue ROUTE TimeMove.fraction_changed TO AvatarInterpolator.set_fraction ROUTE AvatarInterpolator.value_changed TO WalkingAvatar.set_translation ROUTE TimeMove.isActive TO AvatarScript.isActive ROUTE AvatarScript.startMove TO TimeMove.set_startTime ROUTE AvatarScript.startWalk TO TimeWalk.set_startTime ROUTE AvatarScript.stopWalk TO TimeWalk.set_stopTime ROUTE AvatarScript.stopWalk TO TimeStop.set_startTime # DEF TOUCH TouchSensor{ touchTime IS touchTime, isOver IS isOver } DEF TOUCH TouchSensor{} WorldInfo { info ["Avatarstudio Copyright (C) 1999 CANAL+. Designed by blaxxun interactive. All Rights Reserved."]} DEF vis VisibilitySensor { size 1 2 1 center 0 1 0 } Shape { appearance DEF MainApp Appearance{ material Material{diffuseColor 0.56 0.22 0.15} ##texture ImageTexture{url "../avatar/sportmanblue2.jpg" }