#VRML V2.0 utf8
PROTO Avatar [
exposedField SFTime gesture1 0
exposedField SFTime gesture2 0
exposedField SFTime gesture3 0
exposedField SFTime gesture4 0
exposedField SFTime gesture5 0
exposedField SFTime gesture6 0
exposedField SFTime gesture7 0
exposedField SFTime gesture8 0
exposedField SFBool isAvatar TRUE 
exposedField SFRotation rotation 0 1 0 0
exposedField SFInt32 whichChoice 0
exposedField SFBool isOver FALSE
exposedField SFTime touchTime 0
eventIn SFVec3f set_position
] {
Switch { 
whichChoice IS whichChoice
choice [
DEF WalkingAvatar Transform {
rotation IS rotation
children [
DEF topheadcc Transform {
children [
WorldInfo {
title "gull"
info [
"This VRML World was created with Spazz3D, a VRML 2 authoring tool"
"www.spazz3d.com"
]
}
DEF dad_GROUND Transform {
rotation 0 0 1 0
children [
DEF GROUND Group {
children [
DEF dad_Import_Base Transform {
children [
DEF Import_Base Group {
children [
DEF dad_Poop Transform {
scale 0.0001 0.0001 0.0001
children [
DEF Poop Group {
children [
DEF dad_Sphere1 Transform {
translation 0.0 0.08 -0.22
children [
DEF Sphere1 Shape {
appearance Appearance {
material DEF material10 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 1.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry Sphere {
radius 0.019
}
}
]
}
DEF dad_Cone1 Transform {
translation 0.0 0.1 -0.22
children [
DEF Cone1 Shape {
appearance Appearance {
material DEF material11 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 1.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry Cone {
height 0.040
bottomRadius 0.020
}
}
]
}
]
}
]
}
DEF dad_Wizard_Group Transform {
rotation 0.0 -1.0 0.0 1.57
scale 0.15 0.15 0.15
children [
DEF Wizard_Group Group {
children [
DEF dad_Gull Transform {
children [
DEF Gull Group {
children [
DEF dad_Body Transform {
children [
DEF Body Shape {
appearance Appearance {
material DEF material0 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 1.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry IndexedFaceSet {
solid TRUE
ccw TRUE
convex FALSE
creaseAngle 1.500
coord Coordinate {
point [
 1.12900 -0.11700 0.00000 
 1.12900 -0.03800 -0.19000 
 1.39500 0.11300 -0.07400 
 1.39500 0.08200 0.00000 
 0.74900 -0.11400 0.00000 
 0.74900 -0.03700 -0.18400 
 0.44000 -0.34700 0.00000 
 0.44000 -0.19600 -0.34100 
 -0.82700 -0.28900 0.00000 
 -0.82700 -0.13900 -0.31100 
 -1.61300 0.15900 0.00000 
 -1.61300 0.18900 -0.17500 
 1.12900 0.15200 -0.26900 
 1.39500 0.18600 -0.10400 
 0.74900 0.14700 -0.26100 
 0.44000 0.06200 -0.48200 
 -0.82700 0.09000 -0.43900 
 -1.61300 0.23100 -0.24800 
 1.12900 0.24700 -0.22900 
 1.26200 0.30100 -0.13200 
 1.39500 0.26000 -0.07400 
 0.74900 0.33200 -0.18400 
 1.03400 0.33900 -0.18900 
 0.44000 0.32900 -0.34100 
 -0.82700 0.33000 -0.31100 
 -1.61300 0.28200 -0.17500 
 0.74900 0.40800 0.00000 
 1.12900 0.42000 0.00000 
 1.12900 0.38100 -0.09500 
 0.44000 0.48000 0.00000 
 -0.82700 0.46000 0.00000 
 -1.61300 0.30000 0.00000 
 1.12900 0.38100 0.09500 
 1.26200 0.30100 0.13200 
 1.39500 0.26000 0.07400 
 1.39500 0.29100 0.00000 
 0.74900 0.33200 0.18400 
 1.03400 0.33900 0.18900 
 0.44000 0.32900 0.34100 
 -0.82700 0.33000 0.31000 
 -1.61300 0.28200 0.17500 
 0.74900 0.14700 0.26100 
 1.12900 0.15200 0.26900 
 1.12900 0.24700 0.22900 
 0.44000 0.06200 0.48200 
 -0.82700 0.09000 0.43900 
 -1.61300 0.23100 0.24800 
 1.12900 -0.03800 0.19000 
 1.39500 0.11300 0.07400 
 1.39500 0.18600 0.10400 
 0.74900 -0.03700 0.18400 
 0.44000 -0.19600 0.34100 
 -0.82700 -0.13900 0.31100 
 -1.61300 0.18900 0.17500 
]
}
coordIndex [
 0 1 2 -1 
 0 2 3 -1 
 4 5 1 -1 
 4 1 0 -1 
 6 7 5 -1 
 6 5 4 -1 
 8 9 7 -1 
 8 7 6 -1 
 10 11 9 -1 
 10 9 8 -1 
 1 12 13 -1 
 1 13 2 -1 
 5 14 12 -1 
 5 12 1 -1 
 7 15 14 -1 
 7 14 5 -1 
 9 16 15 -1 
 9 15 7 -1 
 11 17 16 -1 
 11 16 9 -1 
 12 18 19 -1 
 12 19 20 -1 
 12 20 13 -1 
 14 21 22 -1 
 14 22 18 -1 
 14 18 12 -1 
 15 23 21 -1 
 15 21 14 -1 
 16 24 23 -1 
 16 23 15 -1 
 17 25 24 -1 
 17 24 16 -1 
 21 26 27 -1 
 21 27 28 -1 
 21 28 22 -1 
 23 29 26 -1 
 23 26 21 -1 
 24 30 29 -1 
 24 29 23 -1 
 25 31 30 -1 
 25 30 24 -1 
 27 32 33 34 
 -1 27 34 35 
 -1 26 36 37 
 -1 26 37 32 
 -1 26 32 27 
 -1 29 38 36 
 -1 29 36 26 
 -1 30 39 38 
 -1 30 38 29 
 -1 31 40 39 
 -1 31 39 30 
 -1 36 41 42 
 -1 36 42 43 
 -1 36 43 37 
 -1 38 44 41 
 -1 38 41 36 
 -1 39 45 44 
 -1 39 44 38 
 -1 40 46 45 
 -1 40 45 39 
 -1 42 47 48 
 -1 42 48 49 
 -1 41 50 47 
 -1 41 47 42 
 -1 44 51 50 
 -1 44 50 41 
 -1 45 52 51 
 -1 45 51 44 
 -1 46 53 52 
 -1 46 52 45 
 -1 47 0 3 
 -1 47 3 48 
 -1 50 4 0 
 -1 50 0 47 
 -1 51 6 4 
 -1 51 4 50 
 -1 52 8 6 
 -1 52 6 51 
 -1 53 10 8 
 -1 53 8 52 
 -1 11 10 53 
 46 40 31 25 
 17 -1 43 42 
 49 -1 43 49 
 34 -1 43 34 
 33 -1 28 27 
 35 -1 28 35 
 20 -1 28 20 
 19 -1 33 32 
 37 -1 33 37 
 43 -1 18 22 
 28 -1 18 28 
 19 -1 
]
}
}
]
}
DEF dad_Beak Transform {
children [
DEF Beak Shape {
appearance Appearance {
material DEF material1 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 0.918 0.78 0.369
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry IndexedFaceSet {
solid TRUE
ccw TRUE
convex FALSE
creaseAngle 0.500
coord Coordinate {
point [
 1.94600 0.25800 0.00000 
 1.39500 0.29100 0.00000 
 1.39500 0.26000 0.07400 
 1.66400 0.17400 0.10500 
 1.39500 0.18600 0.10400 
 1.97700 0.17400 0.07100 
 2.10000 0.16700 0.00000 
 1.39500 0.26000 -0.07400 
 1.39500 0.18600 -0.10400 
 1.66400 0.17400 -0.10500 
 1.97700 0.17400 -0.07100 
 1.39500 0.11300 0.07400 
 1.70800 0.09000 0.00000 
 1.39500 0.08200 0.00000 
 1.91800 0.17400 0.00000 
 1.39500 0.11300 -0.07400 
]
}
coordIndex [
 0 1 2 -1 
 3 2 4 -1 
 3 0 2 -1 
 5 0 3 -1 
 5 6 0 -1 
 7 1 0 -1 
 8 7 9 -1 
 7 0 9 -1 
 9 0 10 -1 
 0 6 10 -1 
 4 11 3 -1 
 12 11 13 -1 
 12 14 3 -1 
 12 3 11 -1 
 9 15 8 -1 
 13 15 12 -1 
 9 14 12 -1 
 15 9 12 -1 
 5 3 14 -1 
 5 14 6 -1 
 10 6 14 -1 
 10 14 9 -1 
]
}
}
]
}
DEF dad_L_Eye Transform {
children [
DEF L_Eye Group {
children [
DEF dad_Sphere2 Transform {
translation 1.129 0.341 0.132
scale 0.1 1.0 0.6
children [
DEF Sphere2 Shape {
appearance Appearance {
material DEF material2 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 1.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry Sphere {
radius 0.200
}
}
]
}
DEF dad_Sphere3 Transform {
translation 1.14 0.35 0.132
scale 0.1 0.5 0.3
children [
DEF Sphere3 Shape {
appearance Appearance {
material DEF material3 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 0.0 0.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry Sphere {
radius 0.150
}
}
]
}
]
}
]
}
DEF dad_R_Eye Transform {
translation 0.0 0.0 -0.3
children [
USE L_Eye
]
}
DEF dad_R_Wing Transform {
children [
DEF R_Wing Group {
children [
DEF dad_R_Inner_Wing Transform {
translation 0.0 0.27405 0.35425
children [
DEF R_Inner_Wing Shape {
appearance Appearance {
material DEF material4 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 1.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry IndexedFaceSet {
solid TRUE
ccw TRUE
convex FALSE
creaseAngle 1.500
coord Coordinate {
point [
 0.40000 -0.02800 0.02200 
 0.73800 0.27900 1.90300 
 0.15900 0.28400 1.93300 
 -0.55300 -0.03100 0.00400 
 0.32900 0.35200 1.90400 
 -0.17400 0.03700 -0.03000 
 0.66100 0.34700 1.87200 
 0.26500 0.03900 -0.01900 
]
}
coordIndex [
 0 1 2 -1 
 0 2 3 -1 
 2 4 5 -1 
 2 5 3 -1 
 4 6 7 -1 
 4 7 5 -1 
 6 1 0 -1 
 6 0 7 -1 
]
}
}
]
}
DEF dad_Group1 Transform {
translation 0.0 0.27405 0.35425
children [
DEF Group1 Group {
children [
DEF dad_Group2 Transform {
center 0.0 0.345 1.88
children [
DEF Group2 Group {
children [
DEF dad_R_Wing_Tip Transform {
translation 0.0 0.34481 1.87307
rotation 1 0 0 .2
children [
DEF R_Wing_Tip Shape {
appearance Appearance {
material DEF material5 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 1.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry IndexedFaceSet {
solid TRUE
ccw TRUE
convex FALSE
creaseAngle 1.500
coord Coordinate {
point [
 0.75300 -0.05900 0.01300 
 0.33000 -0.09500 1.39900 
 0.04600 -0.09900 1.54800 
 0.17200 -0.05800 -0.00700 
 0.20100 -0.03600 1.18800 
 0.32900 0.01400 0.02200 
 0.29300 -0.03600 1.17700 
 0.65000 0.01400 0.00100 
]
}
coordIndex [
 0 1 2 -1 
 0 2 3 -1 
 2 4 5 -1 
 2 5 3 -1 
 4 6 7 -1 
 4 7 5 -1 
 6 1 0 -1 
 6 0 7 -1 
 2 1 6 -1 
 2 6 4 -1 
]
}
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
DEF dad_L_Wing Transform {
children [
DEF L_Wing Group {
children [
DEF dad_L_Inner_Wing Transform {
translation 0.0 0.27405 -0.35425
children [
DEF L_Inner_Wing Shape {
appearance Appearance {
material DEF material6 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 1.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry IndexedFaceSet {
solid TRUE
ccw TRUE
convex FALSE
creaseAngle 1.500
coord Coordinate {
point [
 -0.55300 -0.04000 -0.00900 
 0.15900 0.27400 -1.93800 
 0.73800 0.26900 -1.90800 
 0.40000 -0.03700 -0.02700 
 -0.17400 0.02800 0.02500 
 0.32900 0.34200 -1.90800 
 0.26500 0.02900 0.01500 
 0.66100 0.33700 -1.87600 
]
}
coordIndex [
 0 1 2 -1 
 0 2 3 -1 
 0 4 5 -1 
 0 5 1 -1 
 4 6 7 -1 
 4 7 5 -1 
 6 3 2 -1 
 6 2 7 -1 
]
}
}
]
}
DEF dad_Group3 Transform {
translation 0.0 0.27405 -0.35425
children [
DEF Group3 Group {
children [
DEF dad_Group4 Transform {
center 0.0 0.33595 -1.91265
children [
DEF Group4 Group {
children [
DEF dad_L_Wing_Tip Transform {
translation 0.0 0.33595 -1.89
rotation 1 0 0 -.2
children [
DEF L_Wing_Tip Shape {
appearance Appearance {
material DEF material7 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 1.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry IndexedFaceSet {
solid TRUE
ccw TRUE
convex FALSE
creaseAngle 1.500
coord Coordinate {
point [
 0.17200 -0.05800 0.01700 
 0.04600 -0.09900 -1.53900 
 0.33000 -0.09500 -1.38900 
 0.75300 -0.05900 -0.00400 
 0.32900 0.01400 -0.01300 
 0.20100 -0.03600 -1.17800 
 0.65000 0.01400 0.00900 
 0.29300 -0.03600 -1.16800 
]
}
coordIndex [
 0 1 2 -1 
 0 2 3 -1 
 0 4 5 -1 
 0 5 1 -1 
 4 6 7 -1 
 4 7 5 -1 
 6 3 2 -1 
 6 2 7 -1 
 5 7 2 -1 
 5 2 1 -1 
]
}
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
DEF dad_Tail Transform {
center -1.62217 0.23626 0.0
children [
DEF Tail Group {
children [
DEF dad_Faces_Set1 Transform {
translation -1.62217 0.23626 0.0
children [
DEF Faces_Set1 Shape {
appearance Appearance {
material DEF material8 Material {
ambientIntensity 0.200
shininess 0.200
diffuseColor 1.0 1.0 1.0
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry IndexedFaceSet {
solid TRUE
ccw TRUE
convex FALSE
creaseAngle 1.500
coord Coordinate {
point [
 -0.00200 -0.02800 0.21000 
 -1.11200 0.06500 0.31300 
 -1.61500 0.10600 0.00000 
 -1.11200 0.06500 -0.31300 
 -0.00200 -0.02800 -0.21000 
 -1.19600 0.14300 0.00000 
 0.00000 0.04300 0.00000 
]
}
coordIndex [
 0 1 2 -1 
 0 2 3 -1 
 0 3 4 -1 
 2 1 5 -1 
 0 6 5 -1 
 0 5 1 -1 
 3 2 5 -1 
 3 5 6 -1 
 3 6 4 -1 
]
}
}
]
}
]
}
]
}
DEF dad_InvisibleFoot Transform {
children [
DEF InvisibleFoot Shape {
appearance Appearance {
material DEF material9 Material {
ambientIntensity 0.200
shininess 0.200
transparency 1.000
diffuseColor 0.8 0.8 0.8
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
}
}
geometry IndexedFaceSet {
solid TRUE
ccw TRUE
convex FALSE
creaseAngle 0.524
coord Coordinate {
point [
 0.00000 -1.70000 0.00000 
 -1.00000 -1.70000 1.00000 
 1.00000 -1.70000 1.00000 
]
}
coordIndex [
 0 1 2 -1 
]
}
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
]
}
DEF Wizard TimeSensor {
cycleInterval 4.000
loop FALSE
startTime IS gesture2
}
DEF Wizard_rot0 OrientationInterpolator {
key [ 0.0 0.25 0.5 0.75 1.0]
keyValue [
1.0 0.0 0.0 0.0
1.0 0.0 0.0 1.571
1.0 0.0 0.0 3.142
1.0 0.0 0.0 4.712
1.0 0.0 0.0 6.283
]
}

DEF TSblxncc1 TimeSensor {
	startTime IS gesture1
	cycleInterval 6
},
DEF OIblxncc1 OrientationInterpolator	{
key [ 0, 0.025, 0.05, 0.075, 0.1, 0.125, 0.15, 0.175, 0.2, 0.225, 0.25,
0.275, 0.3, 0.325, 0.35, 0.375, 0.4, 0.425, 0.45, 0.475, 0.5, 0.525, 0.55,
0.575, 0.6, 0.625, 0.65, 0.675, 0.7, 0.725, 0.75, 0.775,
0.8, 0.825, 0.85, 0.875, 0.9, 0.925, 0.95, 0.975, 1 ]
keyValue [
0 1 0 -0.2,
0 1 0 -0.4,
0 1 0 -0.6,
0 1 0 -0.8,
0.202414 -0.975553 0.0855794 0.817908,
0.380781 -0.910542 0.160992 0.869415,
0.523096 -0.823079 0.221161 0.949052,
0.629904 -0.729585 0.266319 1.05042,
0.523096 -0.823079 0.221161 0.949052,
0.380781 -0.910542 0.160992 0.869415,
0.202414 -0.975553 0.0855794 0.817908,
0 -1 0 0.8,
0 1 0 -0.6,
0 1 0 -0.4,
0 1 0 -0.2,
0 1 0 0,
1 0 0 0.175,
1 0 0 0.35,
1 0 0 0.525,
1 0 0 0.7,
1 0 0 0.525,
1 0 0 0.35,
1 0 0 0.175,
0 1 0 0,
0 1 0 0.2,
0 1 0 0.4,
0 1 0 0.6,
0 1 0 0.8,
0.202414 0.975554 -0.0855794 0.817908,
0.380781 0.910542 -0.160992 0.869415,
0.523096 0.823079 -0.221161 0.949052,
0.629905 0.729585 -0.266319 1.05042,
0.523096 0.823079 -0.221161 0.949052,
0.380781 0.910542 -0.160992 0.869415,
0.202414 0.975554 -0.0855794 0.817908,
0 1 0 0.8,
0 1 0 0.6,
0 1 0 0.4,
0 1 0 0.2,
0 1 0 0,
0 1 0 0
]
}
DEF TSblxncc3 TimeSensor {
	startTime IS gesture3
	cycleInterval 3.5
},
DEF OIblxncc3 OrientationInterpolator	{
key [ 0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625,
0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1 ]
keyValue [
1 0 0 0.175,
1 0 0 0.35,
1 0 0 0.525,
1 0 0 0.7,
1 0 0 0.525,
1 0 0 0.35,
1 0 0 0.175,
0 1 0 0,
1 0 0 0.175,
1 0 0 0.35,
1 0 0 0.525,
1 0 0 0.7,
1 0 0 0.525,
1 0 0 0.35,
1 0 0 0.175,
0 1 0 0,
0 1 0 0
]
}
DEF TSblxncc4 TimeSensor {
	startTime IS gesture4
	cycleInterval 3.5
},
DEF PIblxncc4 PositionInterpolator	{
key [ 0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1 ]
keyValue [
0 0 0.25,
0 0 0.5,
0 0 0.75,
0 0 1,
0 0 1,
0 0 1,
0 0 1,
0 0 1,
0 0 1,
0 0 1,
0 0 1,
0 0 1,
0 0 0.75,
0 0 0.5,
0 0 0.25,
0 0 0,
0 0 0
]
},
DEF OIblxncc4 OrientationInterpolator	{
key [ 0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1 ]
keyValue [
0 1 0 0,
0 1 0 0,
0 1 0 0,
0 1 0 0,
0 1 0 0.1,
0 1 0 0.2,
0 1 0 0.2,
0 1 0 0.2,
0 1 0 0.2,
0 1 0 0.2,
0 1 0 0.1,
0 1 0 0,
0 1 0 0,
0 1 0 0,
0 1 0 0,
0 1 0 0,
0 1 0 0,
]
}
DEF TSblxncc5 TimeSensor {
	startTime IS gesture5
	cycleInterval 6
},
DEF PIblxncc5 PositionInterpolator	{
key [ 0, 0.0417, 0.0834, 0.125, 0.1667, 0.2083, 0.25, 0.2917, 0.3333, 0.375, 0.4167, 0.4583, 0.5
0.5417, 0.5834, 0.625, 0.6667, 0.7083, 0.75, 0.7917, 0.8333, 0.875, 0.9167, 0.9583, 1 ]
keyValue [
0 0 0,
0 0 0,
0 0 0,
0 0 0,
0 0 0,
0 0 0,
0 0 -1,
0 0 -2,
0 0 -3,
0 0 -4,
0 0 -5,
0 0 -6,
0 0 -6,
0 0 -6,
0 0 -6,
0 0 -6,
0 0 -6,
0 0 -6,
0 0 -6,
0 0 -6,
0 0 -4.5,
0 0 -3,
0 0 -1.5,
0 0 0,
0 0 0
]
},
DEF OIblxncc5 OrientationInterpolator	{
key [ 0, 0.0417, 0.0834, 0.125, 0.1667, 0.2083, 0.25, 0.2917, 0.3333, 0.375, 0.4167, 0.4583, 0.5
0.5417, 0.5834, 0.625, 0.6667, 0.7083, 0.75, 0.7917, 0.8333, 0.875, 0.9167, 0.9583, 1 ]
keyValue [
0 1 0 -0.5236,
0 1 0 -1.0472,
0 1 0 -1.5708,
0 1 0 -2.0944,
0 1 0 -2.618,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -2.3562,
0 1 0 -1.5708,
0 1 0 -0.7854,
0 1 0 -0.7854,
0 1 0 -0.7854,
0 1 0 -0.7854,
0 1 0 -0.7854,
0 1 0 0,
0 1 0 0,
0 1 0 0,
0 1 0 0,
0 1 0 0,
0 1 0 0,
0 1 0 0,
]
}
DEF TSblxncc6 TimeSensor {
	startTime IS gesture6
	cycleInterval 5
},
DEF OIblxncc6 OrientationInterpolator	{
key [ 0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1 ]
keyValue [
0 1 0 -0.2,
0 1 0 -0.4,
0 1 0 -0.2,
0 1 0 0,
0 1 0 0.2,
0 1 0 0.4,
0 1 0 0.2,
0 1 0 0,
0 1 0 -0.2,
0 1 0 -0.4,
0 1 0 -0.2,
0 1 0 0,
0 1 0 0.2,
0 1 0 0.4,
0 1 0 0.2,
0 1 0 0,
0 1 0 0
]
}
# Gesture 7
DEF TSblxncc7 TimeSensor {
	startTime IS gesture7
	cycleInterval 8
},
DEF OIblxncc7 OrientationInterpolator	{
key [ 0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1 ]
keyValue [
0 1 0 0,
0 1 0 -0.5236,
0 1 0 -1.0472,
0 1 0 -1.5708,
0 1 0 -2.0944,
0 1 0 -2.618,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -3.1416,
0 1 0 -1.5708,
0 1 0 0,
0 1 0 0,
0 1 0 0,
]
}
DEF TailOI OrientationInterpolator {
key [ 0 0.0625 0.125 0.1875 0.25 0.3125 0.375 0.4375 0.5 0.5625 0.625 0.6875 0.75 0.8125 0.875 0.9375 1 ]
keyValue [
0 0 1 0
0 0 1 0
0 0 1 0
0 0 1 0
0 0 1 0
0 0 1 0
0 0 1 -0.5236
0 0 1 -1.0472
0 0 1 -1.5708
0 0 1 -1.5708
0 0 1 -1.5708
0 0 1 -1.0472
0 0 1 -0.5236
0 0 1 0
0 0 1 0
0 0 1 0
0 0 1 0
]
}
DEF PoopSI PositionInterpolator {
key [ 0 0.0625 0.125 0.1875 0.25 0.3125 0.375 0.4375 0.5 0.5625 0.625 0.6875 0.75 0.8125 0.875 0.9375 1 ]
keyValue [
0.0001 0.0001 0.0001
0.0001 0.0001 0.0001
0.0001 0.0001 0.0001
0.0001 0.0001 0.0001
0.0001 0.0001 0.0001
0.0001 0.0001 0.0001
0.5 0.5 0.5
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
0.0001 0.0001 0.0001
0.0001 0.0001 0.0001
0.0001 0.0001 0.0001
0.0001 0.0001 0.0001
0.0001 0.0001 0.0001
]
}
DEF PoopPI PositionInterpolator {
key [ 0 0.0625 0.125 0.1875 0.25 0.3125 0.375 0.4375 0.5 0.5625 0.625 0.6875 0.75 0.8125 0.875 0.9375 1 ]
keyValue [
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 -.3 0
0 -.6 0
0 -.9 0
0 -1.2 0
0 -1.5 0
0 -1.7 0
0 0 0
0 0 0
0 0 0
0 0 0
]
}
# Gesture 8
DEF TSblxncc8 TimeSensor {
	startTime IS gesture8
	cycleInterval 3.5
},
DEF OIblxncc8 OrientationInterpolator	{
key [ 0, 0.083, 0.166, 0.25, 0.333, 0.416, 0.5, 0.583, 0.666, 0.75, 0.833, 0.916, 1 ]
keyValue [ 0 1 0 0, 0 0 1 0.175, 0 0 1 0.35, 0 0 1 0.175, 0 1 0 0, 0 0 -1 0.175, 
   0 0 -1 0.35, 0 0 -1 0.175, 0 1 0 0, 0 0 1 0.175, 0 0 1 0.35, 0 0 1 0.175, 0 1 0 0 ]
}

# Walking (flapping) and banking
DEF WalkingAvatarMove Script {
 eventIn SFVec3f set_position IS set_position
 eventIn SFRotation set_rotation
 eventOut SFBool flap
 eventOut SFVec3f translation_changed
 eventOut SFRotation rotation_changed
 field SFFloat currentYaw 0.0
 field SFTime currentTime 0.0
 field SFVec3f currentPosition 0 0 0
 url ["javascript:
  // Flap when moving
  function set_position(value) {
    deltaX = currentPosition.x - value.x;
    deltaY = currentPosition.y - value.y;
    deltaZ = currentPosition.z - value.z;
    deltaP = (deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ);
    if (deltaP > 0.001) {
      currentPosition = value;
      flap = true;
    } else {
      flap = false;
    }
    translation_changed = value;
  }

  // roll angle = f(yaw_rate)
  function set_rotation(value,timestamp) {
    deltaTime = timestamp - currentTime;
    currentTime = timestamp;
    yawAngle = value.y * value.angle;
    deltaYaw = currentYaw - yawAngle;
    currentYaw = yawAngle;
    yawRate = deltaYaw/deltaTime;
    rotation_changed = new SFRotation(0,0,1,yawRate);
  }
"]
}
DEF GTS TimeSensor {
cycleInterval 2
loop FALSE
}
DEF GLWOI1 OrientationInterpolator {
key [ 0 .25 .5 .75 1 ]
keyValue [ 1 0 0 0 1 0 0 .3 1 0 0 0 1 0 0 -.3 1 0 0 0 ]
}
DEF GLWOI2 OrientationInterpolator {
key [ 0 .15 .25 .35 .45 1 ]
keyValue [ 1 0 0 -.2 1 0 0 -.3 1 0 0 -.6 1 0 0 -.3 1 0 0 .2 1 0 0 -.2 ]
}
DEF GRWOI1 OrientationInterpolator {
key [ 0 .25 .5 .75 1 ]
keyValue [ 1 0 0 0 1 0 0 -.3 1 0 0 0 1 0 0 .3 1 0 0 0 ]
}
DEF GRWOI2 OrientationInterpolator {
key [ 0 .15 .25 .35 .45 1 ]
keyValue [ 1 0 0 .2 1 0 0 .3 1 0 0 .6 1 0 0 .3 1 0 0 -.2 1 0 0 .2 ]
}
DEF GTOI OrientationInterpolator {
key [ 0 .25 .5 .75 1 ]
keyValue [ 0 0 1 .1 0 0 1 0 0 0 1 -.1 0 0 1 0 0 0 1 .1 ]
}
]}]}]}
# Gesture 1: Hello
ROUTE TSblxncc1.fraction_changed TO OIblxncc1.set_fraction
ROUTE OIblxncc1.value_changed TO topheadcc.set_rotation
# Gesture 2: Hey
ROUTE Wizard.fraction_changed TO Wizard_rot0.set_fraction
ROUTE Wizard_rot0.value_changed TO dad_Gull.set_rotation
# Gesture 3: Yes
ROUTE TSblxncc3.fraction_changed TO OIblxncc3.set_fraction
ROUTE OIblxncc3.value_changed TO topheadcc.set_rotation
# Gesture 4: Like
ROUTE TSblxncc4.fraction_changed TO PIblxncc4.set_fraction
ROUTE TSblxncc4.fraction_changed TO OIblxncc4.set_fraction
ROUTE PIblxncc4.value_changed TO topheadcc.set_translation
ROUTE OIblxncc4.value_changed TO topheadcc.set_rotation
# Gesture 5: Dislike
ROUTE TSblxncc5.fraction_changed TO PIblxncc5.set_fraction
ROUTE TSblxncc5.fraction_changed TO OIblxncc5.set_fraction
ROUTE PIblxncc5.value_changed TO topheadcc.set_translation
ROUTE OIblxncc5.value_changed TO topheadcc.set_rotation
# Gesture 6: No
ROUTE TSblxncc6.fraction_changed TO OIblxncc6.set_fraction
ROUTE OIblxncc6.value_changed TO topheadcc.set_rotation
# Gesture 7: Poop
ROUTE TSblxncc7.fraction_changed TO OIblxncc7.set_fraction
ROUTE TSblxncc7.fraction_changed TO TailOI.set_fraction
ROUTE TSblxncc7.fraction_changed TO PoopSI.set_fraction
ROUTE TSblxncc7.fraction_changed TO PoopPI.set_fraction
ROUTE OIblxncc7.value_changed TO topheadcc.set_rotation
ROUTE TailOI.value_changed TO dad_Tail.set_rotation
ROUTE PoopSI.value_changed TO dad_Poop.set_scale
ROUTE PoopPI.value_changed TO dad_Poop.set_translation
# Gesture 8: Bye
ROUTE TSblxncc8.fraction_changed TO OIblxncc8.set_fraction
ROUTE OIblxncc8.value_changed TO topheadcc.set_rotation
# Walking (flapping) and banking
ROUTE WalkingAvatar.rotation_changed TO WalkingAvatarMove.set_rotation
ROUTE WalkingAvatarMove.flap TO GTS.set_loop
ROUTE WalkingAvatarMove.translation_changed TO WalkingAvatar.set_translation
ROUTE WalkingAvatarMove.rotation_changed TO dad_GROUND.set_rotation
ROUTE GTS.fraction_changed TO GLWOI1.set_fraction
ROUTE GTS.fraction_changed TO GLWOI2.set_fraction
ROUTE GTS.fraction_changed TO GRWOI1.set_fraction
ROUTE GTS.fraction_changed TO GRWOI2.set_fraction
ROUTE GLWOI1.value_changed TO dad_L_Wing.set_rotation
ROUTE GLWOI2.value_changed TO dad_L_Wing_Tip.set_rotation
ROUTE GRWOI1.value_changed TO dad_R_Wing.set_rotation
ROUTE GRWOI2.value_changed TO dad_R_Wing_Tip.set_rotation
}
Avatar { }