@prefix :        <https://www.web3d.org/x3d/content/examples/Basic/Followers/CoasterClassical.ttl#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema:  <http://schema.org/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix x3d:     <https://www.web3d.org/specifications/x3d-4.1.xsd#> .
@prefix x3do:    <https://www.web3d.org/specifications/X3dOntology4.1#> .

:X3D a owl:NamedIndividual, x3do:X3D ;
  x3do:hasHead :head ;
  x3do:hasScene :Scene ;
  x3do:profile 'Immersive' ;
  x3do:version '3.2' ;
  x3do:noNamespaceSchemaLocation 'https://www.web3d.org/specifications/x3d-3.2.xsd' .
:head a owl:NamedIndividual, x3do:head ;
  x3do:hasParent :X3D ;
  x3do:hasMeta :meta_1_1, :meta_1_2, :meta_1_3, :meta_1_4, :meta_1_5, :meta_1_6, :meta_1_7, :meta_1_8, :meta_1_9, :meta_1_10, :meta_1_11, :meta_1_12, :meta_1_13, :meta_1_14, :meta_1_15, :meta_1_16, :meta_1_17, :meta_1_18 .
:meta_1_1 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'CoasterClassical.x3d' ;
  x3do:name 'title' .
:meta_1_2 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'X3D example showing a flying model using classical animation techniques' ;
  x3do:name 'description' .
:meta_1_3 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Herbert Stocker' ;
  x3do:name 'creator' .
:meta_1_4 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Don Brutzman' ;
  x3do:name 'translator' .
:meta_1_5 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '18 April 2006' ;
  x3do:name 'created' .
:meta_1_6 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '2 December 2011' ;
  x3do:name 'translated' .
:meta_1_7 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '28 November 2019' ;
  x3do:name 'modified' .
:meta_1_8 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'originals/coaster-classical.wrl' ;
  x3do:name 'reference' .
:meta_1_9 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Stocker_06_Followers.pdf' ;
  x3do:name 'reference' .
:meta_1_10 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'http://www.hersto.com/Publications/Followers' ;
  x3do:name 'reference' .
:meta_1_11 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'X3D version 3.2 or greater' ;
  x3do:name 'requires' .
:meta_1_12 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'X3D Follower Chaser Damper' ;
  x3do:name 'subject' .
:meta_1_13 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/specifications/ISO-IEC-19775-1.2-X3D-AbstractSpecification/Part01/components/followers.html' ;
  x3do:name 'reference' .
:meta_1_14 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html' ;
  x3do:name 'reference' .
:meta_1_15 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/Basic/Followers/CoasterClassical.x3d' ;
  x3do:name 'identifier' .
:meta_1_16 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html' ;
  x3do:name 'generator' .
:meta_1_17 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit' ;
  x3do:name 'generator' .
:meta_1_18 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '../../license.html' ;
  x3do:name 'license' .
:meta dcterms:title "CoasterClassical.x3d" .
:meta dcterms:description "X3D example showing a flying model using classical animation techniques" .
:meta dcterms:creator "Herbert Stocker" .
:meta dcterms:translator "Don Brutzman" .
:meta dcterms:created "18 April 2006" .
:meta dcterms:translated "2 December 2011" .
:meta dcterms:modified "28 November 2019" .
:meta dcterms:reference "originals/coaster-classical.wrl" .
:meta dcterms:reference "Stocker_06_Followers.pdf" .
:meta dcterms:reference "http://www.hersto.com/Publications/Followers" .
:meta dcterms:requires "X3D version 3.2 or greater" .
:meta dcterms:subject "X3D Follower Chaser Damper" .
:meta dcterms:reference "https://www.web3d.org/x3d/specifications/ISO-IEC-19775-1.2-X3D-AbstractSpecification/Part01/components/followers.html" .
:meta dcterms:reference "https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" .
:meta dcterms:identifier "https://www.web3d.org/x3d/content/examples/Basic/Followers/CoasterClassical.x3d" .
:meta dcterms:generator "Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html" .
:meta dcterms:generator "X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit" .
:meta dcterms:license "../../license.html" .
:Scene a owl:NamedIndividual, x3do:Scene ;
  x3do:hasParent :X3D ;
  x3do:hasChildren :WorldInfo_2_1, :Background_2_2, :Inline_2_3, :DirectionalLight_2_4, :GroundEdges, :GroundPlane, :GroundPlaneFromBelow, :Texturizer, :TargetVehicle, :enterWorldTimeSensor, :enterWorldScript, :NavInfo1, :Viewpoint_2_13, :offsetCoordinates, :Shed, :MotionTrailLeft, :MotionTrailRight, :wingtipCoordinates ;
  x3do:hasROUTE :ROUTE_2_19, :ROUTE_2_20, :ROUTE_2_21, :ROUTE_2_22, :ROUTE_2_23, :ROUTE_2_24, :ROUTE_2_25, :ROUTE_2_26, :ROUTE_2_27, :ROUTE_2_28, :ROUTE_2_29, :ROUTE_2_30, :ROUTE_2_31, :ROUTE_2_32, :ROUTE_2_33, :ROUTE_2_34, :ROUTE_2_35, :ROUTE_2_36 .
:WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ;
  x3do:hasParent :Scene ;
  x3do:info '"Roller Coaster with Twin Motion Trails" "Developed by Tom Kaye (tomk@sgi.com)" "Silicon Graphics Inc, 1997" "Created in CosmoWorlds" "Packaged by CosmoPackage" "PositionDamper and OrientationDamper nodes added by Herbert Stocker, www.hersto.com"' ;
  x3do:title 'CoasterClassical.x3d' .
:Background_2_2 a owl:NamedIndividual, x3do:Background ;
  x3do:hasParent :Scene ;
  x3do:skyColor ( 0.113 0.529 0.847 ) .
:Inline_2_3 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Scene ;
  x3do:url '"Sky.x3d" "https://www.web3d.org/x3d/content/examples/Basic/Followers/Sky.x3d" "Sky.wrl" "https://www.web3d.org/x3d/content/examples/Basic/Followers/Sky.wrl"' .
:DirectionalLight_2_4 a owl:NamedIndividual, x3do:DirectionalLight ;
  x3do:hasParent :Scene ;
  x3do:direction ( 0.0 -1.0 0.0 ) .
:GroundEdges a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_5_1 ;
  x3do:DEF 'GroundEdges' ;
  x3do:scale ( 10.0 0.05 5.0 ) ;
  x3do:translation ( -2.97994 -0.0499999 -1.0 ) .
:Shape_2_5_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :GroundEdges ;
  x3do:hasAppearance :Appearance_2_5_1_1 ;
  x3do:hasGeometry :IndexedFaceSet_2_5_1_2 .
:Appearance_2_5_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_5_1 ;
  x3do:hasMaterial :Material_2_5_1_1_1 .
:Material_2_5_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_5_1_1 ;
  x3do:diffuseColor ( 0.0 0.0 0.0 ) ;
  x3do:emissiveColor ( 0.274 0.427 0.098 ) .
:IndexedFaceSet_2_5_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_5_1 ;
  x3do:hasCoord :CubePoints ;
  x3do:coordIndex ( 0 1 3 2 -1 4 5 7 6 -1 6 7 1 0 -1 2 3 5 4 -1 ) ;
  x3do:creaseAngle 0.5 ;
  x3do:solid false .
:CubePoints a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_5_1_2 ;
  x3do:DEF 'CubePoints' ;
  x3do:point ( -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 ) .
:GroundPlane a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_6_1 ;
  x3do:DEF 'GroundPlane' ;
  x3do:scale ( 10.0 0.05 5.0 ) ;
  x3do:translation ( -3.0 -0.05 -1.0 ) .
:Shape_2_6_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :GroundPlane ;
  x3do:hasAppearance :Appearance_2_6_1_1 ;
  x3do:hasGeometry :IndexedFaceSet_2_6_1_2 .
:Appearance_2_6_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_1 ;
  x3do:hasTextureTransform :TexTransGrass ;
  x3do:hasTexture :TexGrass .
:TexTransGrass a owl:NamedIndividual, x3do:TextureTransform ;
  x3do:hasParent :Appearance_2_6_1_1 ;
  x3do:DEF 'TexTransGrass' ;
  x3do:scale ( 4.0 4.0 ) .
:TexGrass a owl:NamedIndividual, x3do:ImageTexture ;
  x3do:hasParent :Appearance_2_6_1_1 ;
  x3do:DEF 'TexGrass' ;
  x3do:url '"grass4.jpg" "https://www.web3d.org/x3d/content/examples/Basic/Followers/grass4.jpg"' .
:IndexedFaceSet_2_6_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_6_1 ;
  x3do:hasCoord :Coordinate_2_6_1_2_1 ;
  x3do:coordIndex ( 0 1 2 3 -1 ) ;
  x3do:creaseAngle 0.5 .
:Coordinate_2_6_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_6_1_2 ;
  x3do:point ( -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0 ) .
:GroundPlaneFromBelow a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_7_1 ;
  x3do:DEF 'GroundPlaneFromBelow' ;
  x3do:scale ( 10.0 0.05 5.0 ) ;
  x3do:translation ( -3.0 -0.05 -1.0 ) .
:Shape_2_7_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :GroundPlaneFromBelow ;
  x3do:hasAppearance :AppFromBelow ;
  x3do:hasGeometry :IndexedFaceSet_2_7_1_2 .
:AppFromBelow a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1 ;
  x3do:hasMaterial :MatFromBelow ;
  x3do:DEF 'AppFromBelow' .
:MatFromBelow a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :AppFromBelow ;
  x3do:DEF 'MatFromBelow' ;
  x3do:diffuseColor ( 0.0 0.0 0.0 ) ;
  x3do:emissiveColor ( 0.274 0.427 0.098 ) ;
  x3do:shininess 0.0 ;
  x3do:transparency 0.51 .
:IndexedFaceSet_2_7_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_7_1 ;
  x3do:hasCoord :Coordinate_2_7_1_2_1 ;
  x3do:ccw false ;
  x3do:coordIndex ( 0 1 2 3 -1 ) ;
  x3do:creaseAngle 0.5 .
:Coordinate_2_7_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_7_1_2 ;
  x3do:point ( -1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -1.0 ) .
:Texturizer a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Scene ;
  x3do:hasField :field_2_8_1, :field_2_8_2, :field_2_8_3, :field_2_8_4 ;
  x3do:DEF 'Texturizer' ;
  x3do:directOutput true ;
  x3do:sourceCode """
ecmascript:

function initialize()
{
    if(   Browser.getName() == 'blaxxunCC3D'  // This also covers BS Contact VRML.
       || Browser.getName() == 'bsContactMP4' 
      )
    {
        AppFromBelow.texture= TexGrass;
        AppFromBelow.textureTransform= TexTransGrass;
        MatFromBelow.transparency= .6;
        MatFromBelow.emissiveColor= new SFColor(1, 1, 1);
    }
}
""" .
:field_2_8_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Texturizer ;
  x3do:hasTextureTransform :TexTransGrass-USE-1 ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'TexTransGrass' ;
  x3do:type 'SFNode' .
:TexTransGrass-USE-1 a owl:NamedIndividual, x3do:TextureTransform ;
  x3do:hasParent :field_2_8_1 ;
  owl:sameAs :TexTransGrass . # DEF matching this USE
:field_2_8_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Texturizer ;
  x3do:hasTexture :TexGrass-USE-1 ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'TexGrass' ;
  x3do:type 'SFNode' .
:TexGrass-USE-1 a owl:NamedIndividual, x3do:ImageTexture ;
  x3do:hasParent :field_2_8_2 ;
  owl:sameAs :TexGrass . # DEF matching this USE
:field_2_8_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Texturizer ;
  x3do:hasAppearance :AppFromBelow-USE-1 ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'AppFromBelow' ;
  x3do:type 'SFNode' .
:AppFromBelow-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :field_2_8_3 ;
  owl:sameAs :AppFromBelow . # DEF matching this USE
:field_2_8_4 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Texturizer ;
  x3do:hasMaterial :MatFromBelow-USE-1 ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'MatFromBelow' ;
  x3do:type 'SFNode' .
:MatFromBelow-USE-1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :field_2_8_4 ;
  owl:sameAs :MatFromBelow . # DEF matching this USE
:TargetVehicle a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Group_2_9_1, :Transform_2_9_2, :Viewpoint_2_9_3, :Viewpoint_2_9_4, :Viewpoint_2_9_5, :Viewpoint_2_9_6, :Viewpoint_2_9_7, :Viewpoint_2_9_8, :Viewpoint_2_9_9 ;
  x3do:DEF 'TargetVehicle' ;
  x3do:center ( 1.04904E-5 0.717017 -8.82894E-4 ) ;
  x3do:rotation ( -0.57735 0.57735 0.577351 2.09439 ) ;
  x3do:scale ( 0.499976 0.499948 0.499971 ) ;
  x3do:scaleOrientation ( 0.356491 -0.901205 0.246461 0.410829 ) ;
  x3do:translation ( 1.5 -0.712227 -3.99929 ) .
:Group_2_9_1 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :TargetVehicle ;
  x3do:hasChildren :CoasterAnim, :TargetVehicleTranslationInterp, :TargetVehicleRotationInterp .
:CoasterAnim a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Group_2_9_1 ;
  x3do:hasChildren :Time ;
  x3do:DEF 'CoasterAnim' .
:Time a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :CoasterAnim ;
  x3do:DEF 'Time' ;
  x3do:cycleInterval '26.0' ;
  x3do:loop true .
:TargetVehicleTranslationInterp a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Group_2_9_1 ;
  x3do:DEF 'TargetVehicleTranslationInterp' ;
  x3do:key ( 0.0 0.0307592 0.0307692 0.0576923 0.0615385 0.0653846 0.0692308 0.0730769 0.0769231 0.0807693 0.0846154 0.0884616 0.0923077 0.0961539 0.1 0.103846 0.107692 0.111539 0.115385 0.119231 0.123077 0.126923 0.130769 0.134615 0.138462 0.142308 0.146154 0.15 0.153846 0.157692 0.161539 0.165385 0.169231 0.173077 0.17735 0.181624 0.185897 0.190171 0.194444 0.198718 0.202991 0.207265 0.211538 0.215384 0.21923 0.223077 0.226923 0.230769 0.234615 0.238461 0.242308 0.246154 0.25 0.253846 0.257692 0.261539 0.265385 0.269231 0.273077 0.276923 0.28077 0.284616 0.288462 0.294231 0.3 0.303846 0.307692 0.311539 0.315385 0.319231 0.323077 0.326923 0.33077 0.334616 0.338462 0.343269 0.348077 0.352885 0.357692 0.361538 0.365384 0.369231 0.373077 0.376923 0.419231 0.423718 0.428205 0.432692 0.43718 0.441667 0.446154 0.45055 0.454945 0.459341 0.463736 0.468132 0.472527 0.476923 0.481319 0.485714 0.49011 0.494505 0.498901 0.503296 0.507692 0.512179 0.516666 0.521153 0.525641 0.530128 0.534615 0.539102 0.543589 0.548076 0.552564 0.557051 0.561538 0.565384 0.56923 0.573077 0.576923 0.580769 0.584615 0.588462 0.592308 0.596154 0.6 0.603846 0.607692 0.611539 0.615385 0.619231 0.623077 0.626923 0.630769 0.634616 0.638462 0.642735 0.647009 0.651282 0.655556 0.659829 0.664102 0.668376 0.672649 0.676923 0.681319 0.685714 0.69011 0.694505 0.698901 0.703297 0.707692 0.712088 0.716483 0.720879 0.725274 0.72967 0.734065 0.738461 0.742307 0.746153 0.75 0.753846 0.757692 0.761538 0.765385 0.769231 0.8 0.804487 0.808974 0.813461 0.817949 0.822436 0.826923 0.830769 0.892308 0.896154 0.9 0.903847 0.907693 0.911539 0.915385 0.976923 0.980769 0.984615 0.988461 0.992308 0.996154 1.0 ) ;
  x3do:keyValue ( 1.5 -0.712227 -3.99929 1.5 -0.712227 -3.99929 1.5 -0.712227 -3.99929 -2.98023E-8 -0.712227 -3.99929 -0.135118 -0.684878 -3.99929 -0.249569 -0.659854 -3.99929 -0.348176 -0.634392 -3.99929 -0.435765 -0.605731 -3.99929 -0.517157 -0.571108 -3.99929 -0.597176 -0.52776 -3.99929 -0.680647 -0.472924 -3.99929 -0.772392 -0.40384 -3.99929 -0.877235 -0.317743 -3.99929 -1.0 -0.211873 -3.99929 -1.13575 -0.0903623 -3.99929 -1.276 0.0401461 -3.99929 -1.42025 0.178653 -3.99929 -1.568 0.324157 -3.99929 -1.71875 0.47566 -3.99929 -1.872 0.632161 -3.99929 -2.02725 0.792661 -3.99929 -2.184 0.95616 -3.99929 -2.34175 1.12166 -3.99929 -2.5 1.28816 -3.99929 -2.65825 1.45465 -3.99929 -2.816 1.62015 -3.99929 -2.97275 1.78365 -3.99929 -3.128 1.94414 -3.99929 -3.28125 2.10064 -3.99929 -3.432 2.25213 -3.99929 -3.57975 2.39763 -3.99929 -3.724 2.53613 -3.99929 -3.86425 2.66663 -3.99929 -4.0 2.78813 -3.99929 -4.14037 2.9077 -3.99929 -4.26703 3.00806 -3.99929 -4.38271 3.0906 -3.99929 -4.49017 3.15667 -3.99929 -4.59214 3.20765 -3.99929 -4.69136 3.24492 -3.99929 -4.79058 3.26984 -3.99929 -4.89255 3.28379 -3.99929 -5.0 3.28813 -3.99929 -5.091 3.28988 -3.99929 -5.168 3.29213 -3.99929 -5.237 3.29038 -3.99929 -5.304 3.28013 -3.99929 -5.375 3.25688 -3.99929 -5.456 3.21613 -3.99929 -5.553 3.15338 -3.99929 -5.672 3.06413 -3.99929 -5.819 2.94388 -3.99929 -6.0 2.78813 -3.99929 -6.22034 2.58518 -3.99929 -6.47675 2.33319 -3.99929 -6.76235 2.04246 -3.99929 -7.07024 1.7233 -3.99929 -7.39354 1.38601 -3.99929 -7.72536 1.04089 -3.99929 -8.05881 0.698235 -3.99929 -8.38699 0.368357 -3.99929 -8.70302 0.0615546 -3.99929 -9.0 -0.211873 -3.99929 -9.38046 -0.486211 -3.99929 -9.7071 -0.504772 -3.99929 -9.94767 -0.377057 -3.99929 -10.2127 -0.187134 -3.9993 -10.4575 0.0384212 -3.9993 -10.6372 0.273034 -3.9993 -10.7071 0.490127 -3.99929 -10.6304 0.71709 -3.99926 -10.437 0.97164 -3.99923 -10.182 1.21269 -3.99918 -9.92036 1.39917 -3.99915 -9.70711 1.48998 -3.99912 -9.49317 1.43325 -4.01568 -9.29107 1.24316 -4.0433 -9.12021 0.999743 -4.04882 -9.00002 0.782985 -3.99911 -8.95476 0.641569 -3.90294 -8.9491 0.500148 -3.76718 -8.96606 0.358725 -3.60879 -8.98868 0.217301 -3.44475 -8.99999 0.0758787 -3.29202 -9.0 0.0758831 8.81374E-4 -9.02165 0.156862 0.377715 -9.06926 0.278578 0.786017 -9.11688 0.430141 1.19519 -9.13853 0.600657 1.57462 -9.10823 0.779234 1.89372 -9.00001 0.954982 2.12188 -8.81189 1.13921 2.26291 -8.56375 1.34809 2.3519 -8.27199 1.56759 2.39465 -7.95299 1.78363 2.39691 -7.62314 1.98218 2.36447 -7.29882 2.14918 2.3031 -6.99643 2.27058 2.21857 -6.71286 2.35274 2.08419 -6.43251 2.41028 1.88591 -6.15303 2.44152 1.64852 -5.87204 2.44477 1.39679 -5.58719 2.41835 1.15551 -5.2961 2.36059 0.949439 -4.99643 2.26981 0.803365 -4.67853 2.10492 0.710561 -4.34952 1.85751 0.653148 -4.0131 1.56821 0.632428 -3.67297 1.27761 0.649702 -3.33285 1.02632 0.706271 -2.99643 0.854937 0.803438 -2.65729 0.765917 0.968587 -2.31119 0.72726 1.20616 -1.9651 0.727911 1.48302 -1.62596 0.756815 1.76605 -1.30076 0.802918 2.02214 -0.996445 0.855165 2.21814 -0.74528 0.911436 2.34886 -0.493761 0.987636 2.47346 -0.24516 1.07762 2.58902 -0.00275008 1.17525 2.69261 0.230195 1.27439 2.78127 0.450403 1.36888 2.85209 0.654601 1.45258 2.90213 0.839515 1.51936 2.92844 1.00187 1.56306 2.9281 1.14473 1.58985 2.90446 1.27405 1.60986 2.86363 1.39088 1.62293 2.80686 1.49628 1.62889 2.73535 1.59133 1.62758 2.65033 1.67707 1.61882 2.55304 1.75456 1.60246 2.44469 1.82487 1.57832 2.32651 1.88906 1.54624 2.19973 1.94818 1.50605 2.06557 2.00331 1.45759 1.92524 2.0598 1.38509 1.74941 2.10934 1.28868 1.54462 2.15031 1.17446 1.31831 2.18108 1.04854 1.07793 2.20001 0.917032 0.830914 2.20549 0.786048 0.584711 2.19587 0.661696 0.34676 2.16953 0.550085 0.124505 2.12483 0.457321 -0.0746234 2.04566 0.382953 -0.26982 1.92723 0.324577 -0.466918 1.78027 0.278421 -0.654261 1.61552 0.240713 -0.820186 1.44371 0.207684 -0.953036 1.27556 0.17556 -1.04115 1.12182 0.140572 -1.07287 0.961417 0.104905 -1.03454 0.777803 0.0726409 -0.93196 0.588454 0.0428501 -0.782685 0.410843 0.0146023 -0.604261 0.262447 -0.0130321 -0.414235 0.16074 -0.0409833 -0.230153 0.123196 -0.0701823 -0.0695581 0.152848 -0.0965528 0.0554954 0.233341 -0.122932 0.180429 0.352943 -0.149317 0.305271 0.499921 -0.175707 0.430048 0.662542 -0.202099 0.554788 0.829075 -0.228492 0.679519 0.987787 -0.254884 0.804269 1.12695 -0.281274 0.92907 3.25257 -0.281718 0.928657 3.49502 -0.302707 0.820501 3.71072 -0.33278 0.666566 3.90667 -0.368681 0.482109 4.08991 -0.407152 0.282388 4.26745 -0.444937 0.0826635 4.44633 -0.478779 -0.10181 4.49975 -0.492812 -0.249108 4.49974 -0.617812 -3.50169 4.4583 -0.629977 -3.64537 4.38642 -0.64534 -3.74526 4.29424 -0.662836 -3.81596 4.19192 -0.681397 -3.87206 4.08959 -0.699958 -3.92816 3.99741 -0.717453 -3.99886 1.95311 -0.708216 -3.99918 1.8512 -0.708255 -3.9992 1.76829 -0.708748 -3.99922 1.69805 -0.709542 -3.99924 1.63415 -0.710487 -3.99925 1.57024 -0.711433 -3.99927 1.5 -0.712227 -3.99929 ) .
:TargetVehicleRotationInterp a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :Group_2_9_1 ;
  x3do:DEF 'TargetVehicleRotationInterp' ;
  x3do:key ( 0.0 0.0307592 0.0307692 0.0576923 0.0615385 0.0653846 0.0692308 0.0730769 0.0769231 0.0807693 0.0846154 0.0884616 0.0923077 0.0961539 0.1 0.103846 0.107692 0.111539 0.115385 0.119231 0.123077 0.126923 0.130769 0.134615 0.138462 0.142308 0.146154 0.15 0.153846 0.157692 0.161539 0.165385 0.169231 0.173077 0.17735 0.181624 0.185897 0.190171 0.194444 0.198718 0.202991 0.207265 0.211538 0.215384 0.21923 0.223077 0.226923 0.230769 0.234615 0.238461 0.242308 0.246154 0.25 0.253846 0.257692 0.261539 0.265385 0.269231 0.273077 0.276923 0.28077 0.284616 0.288462 0.294231 0.3 0.303846 0.307692 0.311539 0.315385 0.319231 0.323077 0.326923 0.33077 0.334616 0.338462 0.343269 0.348077 0.352885 0.357692 0.361538 0.365385 0.371154 0.376923 0.419231 0.423718 0.428205 0.432692 0.43718 0.441667 0.446154 0.45055 0.454945 0.459341 0.463736 0.468132 0.472527 0.476923 0.481319 0.485714 0.49011 0.494505 0.498901 0.503296 0.507692 0.512179 0.516666 0.521153 0.525641 0.530128 0.534615 0.539102 0.543589 0.548076 0.552564 0.557051 0.561538 0.565384 0.56923 0.573077 0.576923 0.580769 0.584615 0.588462 0.592308 0.596154 0.6 0.603846 0.607692 0.611539 0.615385 0.619231 0.623077 0.626923 0.630769 0.634616 0.638462 0.64327 0.648077 0.652884 0.657692 0.661538 0.665384 0.669231 0.673077 0.676923 0.681319 0.685714 0.69011 0.694505 0.698901 0.703297 0.707692 0.712088 0.716483 0.720879 0.725274 0.72967 0.734065 0.738461 0.742307 0.746153 0.75 0.753846 0.757692 0.761538 0.765385 0.769231 0.8 0.805769 0.811538 0.815385 0.819231 0.826923 0.830769 0.892308 0.898077 0.903846 0.907692 0.911539 0.915385 0.976923 0.980769 0.984615 0.988461 0.992308 0.996154 1.0 ) ;
  x3do:keyValue ( -0.57735 0.57735 0.577351 2.09439 -0.57735 0.57735 0.577351 2.09439 -0.57735 0.57735 0.577351 2.09439 -0.57735 0.57735 0.577351 2.09439 -0.567425 0.596705 0.567426 2.0656 -0.552946 0.623298 0.552947 2.02684 -0.534178 0.655215 0.534179 1.98152 -0.5115 0.690459 0.511501 1.933 -0.485545 0.726974 0.485546 1.88439 -0.457321 0.762702 0.457322 1.83843 -0.428293 0.795694 0.428294 1.79737 -0.400386 0.824246 0.400387 1.76289 -0.375911 0.846983 0.375912 1.73611 -0.357406 0.862856 0.357407 1.71777 -0.350413 0.868574 0.350414 1.71123 -0.344112 0.873598 0.344113 1.70552 -0.338526 0.877952 0.338527 1.70059 -0.333674 0.881659 0.333675 1.69641 -0.329572 0.884739 0.329573 1.69295 -0.326233 0.887211 0.326234 1.69018 -0.323666 0.889089 0.323667 1.68808 -0.321879 0.890386 0.32188 1.68664 -0.320874 0.891111 0.320875 1.68583 -0.320653 0.891271 0.320654 1.68565 -0.321213 0.890867 0.321214 1.6861 -0.32255 0.8899 0.322551 1.68718 -0.324657 0.888367 0.324658 1.68889 -0.327523 0.88626 0.327524 1.69125 -0.331134 0.883572 0.331135 1.69426 -0.335476 0.88029 0.335477 1.69795 -0.340529 0.876401 0.340531 1.70235 -0.346273 0.871888 0.346274 1.70746 -0.352682 0.866735 0.352684 1.71333 -0.359731 0.860922 0.359732 1.71999 -0.379051 0.84418 0.379052 1.73938 -0.403091 0.821605 0.403091 1.76604 -0.430042 0.793805 0.430043 1.79969 -0.458227 0.761614 0.458227 1.83981 -0.486193 0.726108 0.486193 1.88552 -0.512787 0.688549 0.512787 1.93559 -0.537168 0.650309 0.537168 1.98841 -0.55879 0.612787 0.55879 2.04206 0.57735 -0.57735 -0.57735 4.18879 -0.592737 0.545276 0.592737 2.14317 -0.607867 0.510877 0.607867 2.19697 -0.622164 0.475209 0.622164 2.25436 -0.635219 0.439311 0.635219 2.31374 -0.646775 0.404185 0.646774 2.37338 -0.656701 0.370792 0.656701 2.43144 -0.664968 0.340054 0.664967 2.48602 -0.67161 0.312858 0.67161 2.53517 -0.676704 0.290074 0.676704 2.57694 -0.680334 0.272566 0.680334 2.60939 0.682874 -0.25955 -0.682874 3.64949 0.684721 -0.24963 -0.684721 3.63085 0.685956 -0.24275 -0.685957 3.61788 0.686638 -0.238864 -0.686638 3.61053 0.6868 -0.237929 -0.686801 3.60877 0.686455 -0.23991 -0.686456 3.61251 0.685596 -0.244775 -0.685597 3.6217 0.684194 -0.252499 -0.684195 3.63625 0.682202 -0.263059 -0.682203 3.65606 -0.679551 0.276441 0.679552 2.60218 -0.651684 0.388092 0.651685 2.40119 -0.57735 0.577351 0.57735 2.09439 -0.519268 0.678765 0.519268 1.94893 -0.431702 0.792002 0.431701 1.8019 -0.31046 0.898459 0.31046 1.67767 -0.16043 0.973922 0.16043 1.59722 9.74767E-7 1.0 -1.41687E-6 1.5708 0.161223 0.975708 -0.148326 1.59539 0.315447 0.90762 -0.276984 1.66758 0.44283 0.80887 -0.386822 1.78134 0.53168 0.695018 -0.484011 1.92685 0.577351 0.577349 -0.577351 2.0944 0.575666 0.423328 -0.699573 2.34418 0.526724 0.265591 -0.80748 2.6321 0.454336 0.119696 -0.882752 2.91451 -0.382683 5.22933E-7 0.92388 3.14159 0.252411 -0.125411 -0.959459 3.39666 -0.139004 0.246324 0.959168 2.81009 -0.0386425 0.43267 0.900724 2.81224 -2.31525E-8 0.707107 0.707107 3.14159 7.73042E-7 0.707106 0.707107 3.14159 -0.00876494 0.734457 0.678599 3.14885 -0.0285068 0.769004 0.638608 3.16521 -0.0486659 0.808026 0.587133 3.18191 -0.0581319 0.848652 0.525748 3.18975 -0.0456313 0.888339 0.456915 3.1794 2.39447E-6 0.92391 0.38261 3.14159 0.0786355 0.946421 0.313215 3.08231 0.192106 0.953145 0.233687 3.00228 0.323556 0.935491 0.142016 2.91004 0.454104 0.890043 0.0401617 2.81573 0.56562 0.821933 -0.0670859 2.72855 0.643683 0.745038 -0.174902 2.65407 0.678589 0.678584 -0.281141 2.59345 0.668232 0.633955 -0.389317 2.54351 0.62041 0.603828 -0.500483 2.50165 0.542536 0.57856 -0.609035 2.46915 0.44421 0.549133 -0.707906 2.44718 0.338083 0.508887 -0.791665 2.4346 0.238101 0.453246 -0.858997 2.42716 -0.156533 -0.377892 0.912521 3.86435 0.0841793 0.268063 -0.959717 2.40414 0.0256254 0.144472 -0.989177 2.38826 -0.0235779 0.0120284 -0.99965 2.37673 -0.0677081 -0.123358 -0.99005 2.37506 -0.110799 -0.255312 -0.960489 2.38791 0.156584 0.378037 0.912453 3.8643 0.199754 0.495172 0.845519 3.81534 0.234386 0.606756 0.759546 3.75121 0.26331 0.703896 0.659696 3.67508 0.290188 0.780534 0.553677 3.59248 0.319705 0.833754 0.450158 3.51028 0.357418 0.86288 0.357337 3.43548 0.388222 0.870408 0.302778 3.382 0.422536 0.870603 0.252018 3.31762 0.460181 0.863923 0.204623 3.24888 0.500434 0.850766 0.160508 3.18273 0.542297 0.83159 0.119883 3.12627 0.584709 0.806972 0.0831381 3.08674 0.626724 0.77759 0.0507125 3.07135 0.667642 0.744129 0.0229443 3.08727 0.707107 0.707106 -5.66118E-5 3.14148 0.74037 0.672053 -0.0140531 3.22796 0.776084 0.630213 -0.0229366 3.35674 0.813139 0.581409 -0.027708 3.51729 0.850398 0.525328 -0.0292033 3.69882 0.886636 0.461616 -0.0280549 3.89037 0.920425 0.390135 -0.0247437 4.08094 0.950058 0.31145 -0.0197199 4.25974 0.973667 0.227572 -0.0135787 4.41657 0.989727 0.142788 -0.00725208 4.54238 0.997946 0.0640204 -0.00213212 4.62976 1.0 -6.35534E-7 6.57274E-7 4.67307 0.996553 -0.0829147 0.00280905 4.58205 0.997358 -0.0723366 0.00661529 4.31936 0.999519 -0.0302525 0.00676277 4.04802 1.0 1.43159E-5 1.09746E-5 3.92683 0.999789 0.0203775 -0.00242897 3.98667 0.998433 0.0559599 2.76579E-4 4.13447 0.995428 0.0953603 -0.00548976 4.33023 0.991672 0.12336 -0.0369914 4.53263 0.98617 0.117199 -0.117189 4.69846 0.972284 0.0799382 -0.219712 4.77524 0.934194 0.0177418 -0.356323 4.81433 0.861097 -0.0615913 -0.504696 4.81086 0.754371 -0.146391 -0.639917 4.76748 0.626563 -0.226361 -0.745775 4.69736 0.491671 -0.296641 -0.818696 4.62182 -0.35747 0.357464 0.862806 1.71782 0.21821 -0.412778 -0.884307 4.54287 0.0661529 -0.463952 -0.883387 4.53918 -0.0944755 -0.507746 -0.856311 4.53289 -0.25223 -0.540327 -0.802762 4.50509 -0.392158 -0.560344 -0.729538 4.44253 -0.502221 -0.570694 -0.649679 4.33821 0.577348 0.577349 0.577354 2.09439 0.644809 0.569887 0.509361 2.21646 0.690244 0.566606 0.450024 2.36556 0.718052 0.569145 0.400594 2.53842 0.731837 0.578127 0.36081 2.7331 0.734077 0.593619 0.329768 2.94811 0.726083 0.615517 0.3065 3.18152 0.707982 0.643794 0.290327 3.43027 0.678599 0.678602 0.281075 3.68959 0.577346 0.577353 0.577352 4.18878 0.702176 0.593063 0.393985 4.21811 0.802385 0.584275 0.121658 4.14687 0.815464 0.577014 -0.045534 4.15811 0.832054 0.535461 -0.144804 4.24246 0.990554 0.130102 -0.0433214 4.64834 1.0 7.4414E-6 6.62627E-6 4.71239 1.0 7.3873E-6 6.62225E-6 4.71239 0.884975 0.140068 -0.444072 4.8316 -0.593457 -0.140733 0.792466 1.59101 0.460357 0.0639742 -0.885426 4.55475 0.49072 -0.205856 -0.846651 4.43643 0.577355 -0.577348 -0.577348 4.1888 0.577351 -0.577349 -0.57735 4.18879 0.577351 -0.577349 -0.577351 4.18879 0.577351 -0.57735 -0.577351 4.18879 0.57735 -0.57735 -0.577351 4.18879 0.57735 -0.57735 -0.577351 4.18879 0.57735 -0.57735 -0.577351 4.1888 -0.57735 0.57735 0.577351 2.09439 ) .
:Transform_2_9_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :TargetVehicle ;
  x3do:hasChildren :Switch_2_9_2_1 ;
  x3do:center ( 5.06639E-7 0.711873 0.25 ) .
:Switch_2_9_2_1 a owl:NamedIndividual, x3do:Switch ;
  x3do:hasParent :Transform_2_9_2 ;
  x3do:hasChildren :AircraftObject ;
  x3do:whichChoice 0 .
:AircraftObject a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Switch_2_9_2_1 ;
  x3do:hasChildren :LeftSideGreen, :BottomWhite, :TopBlue, :RightSideRed ;
  x3do:DEF 'AircraftObject' ;
  x3do:center ( 0.0 0.711873 0.25 ) .
:LeftSideGreen a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :AircraftObject ;
  x3do:hasChildren :Shape_2_9_2_1_1_1_1 ;
  x3do:DEF 'LeftSideGreen' ;
  x3do:center ( 1.0 0.0 0.5 ) ;
  x3do:scale ( 0.5 1.0 0.5 ) ;
  x3do:translation ( -1.0 0.711873 -0.25 ) .
:Shape_2_9_2_1_1_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :LeftSideGreen ;
  x3do:hasAppearance :Appearance_2_9_2_1_1_1_1_1 ;
  x3do:hasGeometry :IndexedFaceSet_2_9_2_1_1_1_1_2 .
:Appearance_2_9_2_1_1_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_2_1_1_1_1 ;
  x3do:hasMaterial :_4 .
:_4 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_2_1_1_1_1_1 ;
  x3do:DEF '_4' ;
  x3do:ambientIntensity 0.0 ;
  x3do:diffuseColor ( 1.0 0.0 0.0 ) ;
  x3do:shininess 0.0 .
:IndexedFaceSet_2_9_2_1_1_1_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_9_2_1_1_1_1 ;
  x3do:hasCoord :Coordinate_2_9_2_1_1_1_1_2_1 ;
  x3do:hasColor :Color_2_9_2_1_1_1_1_2_2 ;
  x3do:ccw false ;
  x3do:colorIndex ( 1 0 ) ;
  x3do:colorPerVertex false ;
  x3do:coordIndex ( 0 1 3 4 -1 3 2 4 -1 ) ;
  x3do:creaseAngle 0.5 .
:Coordinate_2_9_2_1_1_1_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_9_2_1_1_1_1_2 ;
  x3do:point ( 1.0 -1.0 1.0 1.0 -1.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.5 ) .
:Color_2_9_2_1_1_1_1_2_2 a owl:NamedIndividual, x3do:Color ;
  x3do:hasParent :IndexedFaceSet_2_9_2_1_1_1_1_2 ;
  x3do:color ( 0.0 1.0 0.0 0.0 0.497326 0.0 ) .
:BottomWhite a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :AircraftObject ;
  x3do:hasChildren :Shape_2_9_2_1_1_2_1 ;
  x3do:DEF 'BottomWhite' ;
  x3do:center ( 1.0 0.0 0.0 ) ;
  x3do:scale ( 0.5 1.0 0.5 ) ;
  x3do:scaleOrientation ( 5.58553E-9 -1.0 -9.77967E-9 0.492161 ) ;
  x3do:translation ( -1.0 0.711872 -1.56338E-7 ) .
:Shape_2_9_2_1_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :BottomWhite ;
  x3do:hasAppearance :Appearance_2_9_2_1_1_2_1_1 ;
  x3do:hasGeometry :IndexedFaceSet_2_9_2_1_1_2_1_2 .
:Appearance_2_9_2_1_1_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_2_1_1_2_1 ;
  x3do:hasMaterial :Material_2_9_2_1_1_2_1_1_1 .
:Material_2_9_2_1_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_2_1_1_2_1_1 ;
  x3do:ambientIntensity 0.0 ;
  x3do:diffuseColor ( 1.0 1.0 1.0 ) ;
  x3do:shininess 0.0 .
:IndexedFaceSet_2_9_2_1_1_2_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_9_2_1_1_2_1 ;
  x3do:hasCoord :Coordinate_2_9_2_1_1_2_1_2_1 ;
  x3do:hasColor :Color_2_9_2_1_1_2_1_2_2 ;
  x3do:ccw false ;
  x3do:colorIndex ( 1 0 1 0 ) ;
  x3do:colorPerVertex false ;
  x3do:coordIndex ( 1 3 4 5 -1 4 2 5 -1 0 1 5 6 -1 5 2 6 -1 ) ;
  x3do:creaseAngle 0.5 .
:Coordinate_2_9_2_1_1_2_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_9_2_1_1_2_1_2 ;
  x3do:point ( 0.0 -1.0 0.0 1.0 -1.0 0.0 1.0 1.0 0.0 2.0 -1.0 0.0 1.5 0.0 0.0 1.0 0.0 0.0 0.5 0.0 0.0 ) .
:Color_2_9_2_1_1_2_1_2_2 a owl:NamedIndividual, x3do:Color ;
  x3do:hasParent :IndexedFaceSet_2_9_2_1_1_2_1_2 ;
  x3do:color ( 1.0 1.0 1.0 0.502674 0.502674 0.502674 ) .
:TopBlue a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :AircraftObject ;
  x3do:hasChildren :Shape_2_9_2_1_1_3_1 ;
  x3do:DEF 'TopBlue' ;
  x3do:center ( 1.0 0.0 0.0 ) ;
  x3do:scale ( 0.5 1.0 0.5 ) ;
  x3do:scaleOrientation ( 5.58553E-9 -1.0 -9.77967E-9 0.492161 ) ;
  x3do:translation ( -1.0 0.711872 -1.56338E-7 ) .
:Shape_2_9_2_1_1_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TopBlue ;
  x3do:hasAppearance :Appearance_2_9_2_1_1_3_1_1 ;
  x3do:hasGeometry :IndexedFaceSet_2_9_2_1_1_3_1_2 .
:Appearance_2_9_2_1_1_3_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_2_1_1_3_1 ;
  x3do:hasMaterial :_4-USE-1 .
:_4-USE-1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_2_1_1_3_1_1 ;
  owl:sameAs :_4 . # DEF matching this USE
:IndexedFaceSet_2_9_2_1_1_3_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_9_2_1_1_3_1 ;
  x3do:hasCoord :Coordinate_2_9_2_1_1_3_1_2_1 ;
  x3do:hasColor :Color_2_9_2_1_1_3_1_2_2 ;
  x3do:colorIndex ( 1 0 1 0 ) ;
  x3do:colorPerVertex false ;
  x3do:coordIndex ( 1 3 4 5 -1 4 2 5 -1 0 1 5 6 -1 5 2 6 -1 ) ;
  x3do:creaseAngle 0.5 .
:Coordinate_2_9_2_1_1_3_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_9_2_1_1_3_1_2 ;
  x3do:point ( 0.0 -1.0 0.0 1.0 -1.0 0.0 1.0 1.0 0.0 2.0 -1.0 0.0 1.5 0.0 0.0 1.0 0.0 0.0 0.5 0.0 0.0 ) .
:Color_2_9_2_1_1_3_1_2_2 a owl:NamedIndividual, x3do:Color ;
  x3do:hasParent :IndexedFaceSet_2_9_2_1_1_3_1_2 ;
  x3do:color ( 0.0 0.0 1.0 0.0 0.0 0.502674 ) .
:RightSideRed a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :AircraftObject ;
  x3do:hasChildren :Shape_2_9_2_1_1_4_1 ;
  x3do:DEF 'RightSideRed' ;
  x3do:center ( 1.0 0.0 0.5 ) ;
  x3do:scale ( 0.5 1.0 0.5 ) ;
  x3do:scaleOrientation ( 5.58553E-9 -1.0 -9.77967E-9 0.492161 ) ;
  x3do:translation ( -0.999999 0.711873 -0.25 ) .
:Shape_2_9_2_1_1_4_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :RightSideRed ;
  x3do:hasAppearance :Appearance_2_9_2_1_1_4_1_1 ;
  x3do:hasGeometry :IndexedFaceSet_2_9_2_1_1_4_1_2 .
:Appearance_2_9_2_1_1_4_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_2_1_1_4_1 ;
  x3do:hasMaterial :Material_2_9_2_1_1_4_1_1_1 .
:Material_2_9_2_1_1_4_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_2_1_1_4_1_1 ;
  x3do:ambientIntensity 0.0 ;
  x3do:diffuseColor ( 1.0 0.0 0.0 ) ;
  x3do:shininess 0.0 .
:IndexedFaceSet_2_9_2_1_1_4_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_9_2_1_1_4_1 ;
  x3do:hasCoord :Coordinate_2_9_2_1_1_4_1_2_1 ;
  x3do:hasColor :Color_2_9_2_1_1_4_1_2_2 ;
  x3do:colorIndex ( 1 0 ) ;
  x3do:colorPerVertex false ;
  x3do:coordIndex ( 0 1 3 4 -1 3 2 4 -1 ) ;
  x3do:creaseAngle 0.5 .
:Coordinate_2_9_2_1_1_4_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_9_2_1_1_4_1_2 ;
  x3do:point ( 1.0 -1.0 1.0 1.0 -1.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.5 ) .
:Color_2_9_2_1_1_4_1_2_2 a owl:NamedIndividual, x3do:Color ;
  x3do:hasParent :IndexedFaceSet_2_9_2_1_1_4_1_2 ;
  x3do:color ( 1.0 0.0 0.0 0.502674 0.0 0.0 ) .
:Viewpoint_2_9_3 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :TargetVehicle ;
  x3do:description 'Far Behind' ;
  x3do:orientation ( 1.0 0.0 0.0 1.37 ) ;
  x3do:position ( -0.3 -11.75 2.52 ) .
:Viewpoint_2_9_4 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :TargetVehicle ;
  x3do:description 'Behind' ;
  x3do:orientation ( 1.0 0.0 0.0 1.37 ) ;
  x3do:position ( -0.1 -3.7 0.8 ) .
:Viewpoint_2_9_5 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :TargetVehicle ;
  x3do:description 'From the Side' ;
  x3do:orientation ( 0.294 0.617 0.73 2.673 ) ;
  x3do:position ( 5.7 4.0 1.1 ) .
:Viewpoint_2_9_6 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :TargetVehicle ;
  x3do:description 'Far from the Side' ;
  x3do:fieldOfView 0.785 ;
  x3do:orientation ( 0.199 0.493 0.847 2.274 ) ;
  x3do:position ( 7.689 3.242 7.885 ) .
:Viewpoint_2_9_7 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :TargetVehicle ;
  x3do:description 'Pilot View' ;
  x3do:orientation ( 1.0 0.0 0.0 1.5 ) ;
  x3do:position ( 0.0 0.5 0.3 ) .
:Viewpoint_2_9_8 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :TargetVehicle ;
  x3do:description 'From the Front' ;
  x3do:fieldOfView 0.785 ;
  x3do:orientation ( 0.036 0.735 0.677 3.106 ) ;
  x3do:position ( 0.353 3.737 0.43 ) .
:Viewpoint_2_9_9 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :TargetVehicle ;
  x3do:description 'From the Front 2' ;
  x3do:fieldOfView 0.785 ;
  x3do:orientation ( 0.044 -0.746 -0.664 2.996 ) ;
  x3do:position ( -0.327 3.746 0.357 ) .
:enterWorldTimeSensor a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Scene ;
  x3do:DEF 'enterWorldTimeSensor' ;
  x3do:loop true ;
  x3do:startTime '1.0' .
:enterWorldScript a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Scene ;
  x3do:hasField :field_2_11_1, :field_2_11_2, :field_2_11_3 ;
  x3do:DEF 'enterWorldScript' ;
  x3do:sourceCode """
ecmascript:
function triggerIn(value, time) {

     // fire off a single round                                     
     startTime = value;                                             
     firstTime = false;                                             
}
""" .
:field_2_11_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :enterWorldScript ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'triggerIn' ;
  x3do:type 'SFTime' .
:field_2_11_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :enterWorldScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'startTime' ;
  x3do:type 'SFTime' .
:field_2_11_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :enterWorldScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'firstTime' ;
  x3do:type 'SFBool' .
:NavInfo1 a owl:NamedIndividual, x3do:NavigationInfo ;
  x3do:hasParent :Scene ;
  x3do:DEF 'NavInfo1' ;
  x3do:type '"EXAMINE"' .
:Viewpoint_2_13 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Overview' ;
  x3do:orientation ( -0.0762904 0.961347 0.264559 2.28129 ) ;
  x3do:position ( 11.0 6.0 -9.0 ) .
:offsetCoordinates a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Scene ;
  x3do:hasField :field_2_14_1, :field_2_14_2, :field_2_14_3 ;
  x3do:DEF 'offsetCoordinates' ;
  x3do:sourceCode """
ecmascript:
function rawCoordinateIn(value, time)
{
	offsetCoordinateOut = value.add(offsetFactor);	
}
""" .
:field_2_14_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :offsetCoordinates ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'offsetFactor' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.717 0.0 ) .
:field_2_14_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :offsetCoordinates ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'offsetCoordinateOut' ;
  x3do:type 'SFVec3f' .
:field_2_14_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :offsetCoordinates ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'rawCoordinateIn' ;
  x3do:type 'SFVec3f' .
:Shed a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_15_1 ;
  x3do:DEF 'Shed' ;
  x3do:scale ( 1.40933 0.391759 0.391759 ) ;
  x3do:translation ( 1.80788 0.281642 -3.97569 ) .
:Shape_2_15_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Shed ;
  x3do:hasAppearance :Appearance_2_15_1_1 ;
  x3do:hasGeometry :IndexedFaceSet_2_15_1_2 .
:Appearance_2_15_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_15_1 ;
  x3do:hasMaterial :Material_2_15_1_1_1 .
:Material_2_15_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_15_1_1 ;
  x3do:ambientIntensity 0.25 ;
  x3do:diffuseColor ( 0.374 0.0030 0.176 ) ;
  x3do:emissiveColor ( 0.374 0.0030 0.176 ) ;
  x3do:shininess 0.933333 ;
  x3do:specularColor ( 0.685 0.685 0.685 ) .
:IndexedFaceSet_2_15_1_2 a owl:NamedIndividual, x3do:IndexedFaceSet ;
  x3do:hasParent :Shape_2_15_1 ;
  x3do:hasCoord :Coordinate_2_15_1_2_1 ;
  x3do:colorPerVertex false ;
  x3do:coordIndex ( 1 17 14 7 5 13 10 3 -1 2 8 11 12 9 4 19 -1 8 3 10 11 -1 13 5 9 12 -1 17 1 15 18 -1 22 23 24 25 -1 27 26 28 29 -1 6 21 16 18 15 0 20 -1 21 7 14 16 -1 ) ;
  x3do:creaseAngle 0.5 ;
  x3do:solid false .
:Coordinate_2_15_1_2_1 a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :IndexedFaceSet_2_15_1_2 ;
  x3do:point ( -1.0 1.0 1.0 -1.0 -1.0 1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 -1.0 1.0 -1.0 -1.0 -1.0 1.0 -1.0 -1.0 -1.0 -1.0 1.0 0.51827 1.0 1.0 0.518265 -1.0 1.0 -1.0 0.585131 1.0 0.518269 0.585132 1.0 0.518266 -0.563741 1.0 -1.0 -0.56374 -1.0 -1.0 -0.564348 -1.0 0.525568 1.0 -1.0 0.525568 -0.564348 -1.0 -1.0 0.584421 -1.0 0.525568 0.584421 1.0 1.72428 3.12775E-7 -1.0 1.72428 3.12775E-7 -1.0 0.525568 -1.0 -1.0 0.88185 -1.16313 -1.0 1.72428 3.12775E-7 1.0 1.72428 3.12775E-7 1.0 0.88185 -1.16313 -1.0 0.921288 1.10868 -1.0 1.72428 3.12775E-7 1.0 0.921288 1.10868 1.0 1.72428 3.12775E-7 ) .
:MotionTrailLeft a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :MotionTrailScriptL, :MotionTrailLineL ;
  x3do:DEF 'MotionTrailLeft' .
:MotionTrailScriptL a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :MotionTrailLeft ;
  x3do:hasField :field_2_16_1_1, :field_2_16_1_2, :field_2_16_1_3, :field_2_16_1_4, :field_2_16_1_5, :field_2_16_1_6, :field_2_16_1_7, :field_2_16_1_8, :field_2_16_1_9, :field_2_16_1_10, :field_2_16_1_11, :field_2_16_1_12, :field_2_16_1_13, :field_2_16_1_14, :field_2_16_1_15, :field_2_16_1_16, :field_2_16_1_17, :field_2_16_1_18, :field_2_16_1_19, :field_2_16_1_20, :field_2_16_1_21, :field_2_16_1_22, :field_2_16_1_23, :field_2_16_1_24, :field_2_16_1_25, :field_2_16_1_26, :field_2_16_1_27, :field_2_16_1_28, :field_2_16_1_29, :field_2_16_1_30, :field_2_16_1_31, :field_2_16_1_32 ;
  x3do:DEF 'MotionTrailScriptL' ;
  x3do:sourceCode """
ecmascript:
//////////////////////////////////////////////////////////////////////
// author:	-Tom Kaye, Silicon Graphics Inc, 1997 (tomk@sgi.com)
// purpose:	-Generate a polyline tail from a series of coordinates
//		passed into the script (one per clock-tick).
//		Lots of useful auxilliary info is returned as well.
// input:	-a series of position values
// output:	-a polyline consisting of the last maxPoints coordinates
//		passed into the script.
//			- position, orientation and speed of the head
//			  of the motion path
//////////////////////////////////////////////////////////////////////  
function initialize()
{
	position[0] = 0;
	position[1] = 0;
	position[2] = 0;
	last_position = position;
	direction = position;
	distance = 0;
	rotation = new SFRotation(initial_direction, direction);
	speed     = 0;
	last_time = 0;	
	current_time = 0;	
	pointCount = 0;
	stepCount = stepSize;
	currentIndex = 0;
	coord.length = maxPoints;
	coordIndex.length = maxPoints + 3;
	for ( i = 0; i < coordIndex.length; ++i) {
		coordIndex[i] = -1;
	}
}

function reset(value, time)
{
	position[0] = 0;
	position[1] = 0;
	position[2] = 0;
	last_position = position;
	direction = position;
	distance = 0;
	rotation = new SFRotation(initial_direction, direction);
	speed     = 0;
	last_time = 0;	
	current_time = 0;	
	pointCount = 0;
	stepCount = stepSize;
	currentIndex = 0;
	coord.length = maxPoints;
	coordIndex.length = maxPoints + 3;
	for ( i = 0; i < coordIndex.length; ++i) {
		coordIndex[i] = -1;
	}
}

function set_isVisible(value, time)
{
	isVisible = value;
	isVisible_changed = isVisible;
}

function set_isActive(value, time)
{
	if (value != isActive) {
		isActive = value;
		isActive_changed = isActive;
		if (isActive == true) {
			reset_trigger = time;
		}
	} 
}

function set_position(value, time)
{
  last_position = value; 		// a bogus assignment 
  if ( isActive ) {

    // skip every stepSize points
    if ( stepCount >= stepSize ) {

	 stepCount = 0;	

	// update the coordIndex with as few operations as possible
	if ( pointCount <= maxPoints ) {
		// first pass as tail grows from 0 to maxPoints in length
		// and coordIndex consists of only one polyline
		if ( pointCount < maxPoints ) {
			coordIndex[currentIndex + 1] = currentIndex;
			coordIndex[currentIndex + 2] = -1;
		} else {
			// occurs once: currentIndex == pointCount == maxPoints
			coordIndex[currentIndex + 1] = 0;
			coordIndex[currentIndex + 2] = -1;
			currentIndex = 0;
			coordIndex[currentIndex ] = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		}
	} else {
		// subsequent passes when tail is a constant length of maxPoints
		// and coordIndex consists of two polylines
		if ( currentIndex < maxPoints ) {
			coordIndex[currentIndex]     = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		} else {
			// occurs once each cycle when currentIndex == maxPoints
			coordIndex[currentIndex ]    = 0;
			coordIndex[currentIndex + 1] = -1;
			currentIndex = 0;
			coordIndex[currentIndex ] = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		}
	}


	// save last position  and time to later compute direction and speed
	last_position = position;
	position = value;
	last_time = current_time;
	current_time = time;

	// add the new position to the coordinate array ring-buffer
	coord[currentIndex] = position;
	position_changed = position; 	// echo position value as an output


	
	// compute direction based on last two points passed in
	direction = position.subtract(last_position);
	distance = direction.length();

	// compute a new rotation only if there has been some finite movement
	if ( distance >= 0.00001 ) {
			rotation = new SFRotation(initial_direction, direction);
	}

	// Compute speed and output results only if two or more points have been
	// passed in since initialization or last reset
	if ( pointCount >= 1 ) {

		// compute speed
		speed = distance / (current_time - last_time);
		rotation_changed = rotation;
		speed_changed = speed;

		// outpout the coord and coordIndex arrays only when appropriate
		if (isVisible ) {
			coord_changed = coord;
			coordIndex_changed = coordIndex;
		} else {
			coordIndex_changed = nullcoordIndex;
		}

	}

	// increment the appropriate counters
	currentIndex += 1;	// cycles between 0 and maxPoints (length of tail)
	pointCount += 1;	// total number of points processed since reset

    }  // end stepCount block

    stepCount += 1;
  }
}
""" .
:field_2_16_1_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'stepCount' ;
  x3do:type 'SFInt32' ;
  x3do:value 1 .
:field_2_16_1_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'isVisible_changed' ;
  x3do:type 'SFBool' .
:field_2_16_1_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'coordIndex_changed' ;
  x3do:type 'MFInt32' .
:field_2_16_1_4 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'currentIndex' ;
  x3do:type 'SFInt32' ;
  x3do:value 0 .
:field_2_16_1_5 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'last_time' ;
  x3do:type 'SFTime' ;
  x3do:value '0.0' .
:field_2_16_1_6 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'distance' ;
  x3do:type 'SFFloat' ;
  x3do:value 0.0 .
:field_2_16_1_7 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'isActive_changed' ;
  x3do:type 'SFBool' .
:field_2_16_1_8 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'stepSize' ;
  x3do:type 'SFInt32' ;
  x3do:value 1 .
:field_2_16_1_9 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'coordIndex' ;
  x3do:type 'MFInt32' ;
  x3do:value ( -1 -1 ) .
:field_2_16_1_10 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'startIndex' ;
  x3do:type 'SFInt32' ;
  x3do:value 0 .
:field_2_16_1_11 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'position_changed' ;
  x3do:type 'SFVec3f' .
:field_2_16_1_12 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'reset_trigger' ;
  x3do:type 'SFTime' .
:field_2_16_1_13 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'coord_changed' ;
  x3do:type 'MFVec3f' .
:field_2_16_1_14 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'current_time' ;
  x3do:type 'SFTime' ;
  x3do:value '0.0' .
:field_2_16_1_15 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'rotation_changed' ;
  x3do:type 'SFRotation' .
:field_2_16_1_16 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_isVisible' ;
  x3do:type 'SFBool' .
:field_2_16_1_17 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'last_position' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.0 0.0 ) .
:field_2_16_1_18 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_isActive' ;
  x3do:type 'SFBool' .
:field_2_16_1_19 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'initial_direction' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.0 -1.0 ) .
:field_2_16_1_20 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'isVisible' ;
  x3do:type 'SFBool' ;
  x3do:value true .
:field_2_16_1_21 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'coord' ;
  x3do:type 'MFVec3f' ;
  x3do:value ( 0.0 0.0 0.0 1.0 0.0 0.0 ) .
:field_2_16_1_22 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'rotation' ;
  x3do:type 'SFRotation' ;
  x3do:value ( 0.0 0.0 1.0 0.0 ) .
:field_2_16_1_23 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'speed_changed' ;
  x3do:type 'SFFloat' .
:field_2_16_1_24 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'speed' ;
  x3do:type 'SFFloat' ;
  x3do:value 0.0 .
:field_2_16_1_25 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'isActive' ;
  x3do:type 'SFBool' ;
  x3do:value true .
:field_2_16_1_26 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_position' ;
  x3do:type 'SFVec3f' .
:field_2_16_1_27 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'maxPoints' ;
  x3do:type 'SFInt32' ;
  x3do:value 50 .
:field_2_16_1_28 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'pointCount' ;
  x3do:type 'SFInt32' ;
  x3do:value 0 .
:field_2_16_1_29 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'direction' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.0 0.0 ) .
:field_2_16_1_30 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'reset' ;
  x3do:type 'SFTime' .
:field_2_16_1_31 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'position' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.0 0.0 ) .
:field_2_16_1_32 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptL ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'nullcoordIndex' ;
  x3do:type 'MFInt32' .
:MotionTrailLineL a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :MotionTrailLeft ;
  x3do:hasChildren :Shape_2_16_2_1 ;
  x3do:DEF 'MotionTrailLineL' .
:Shape_2_16_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :MotionTrailLineL ;
  x3do:hasAppearance :Appearance_2_16_2_1_1 ;
  x3do:hasGeometry :MotionTrailLineSetL .
:Appearance_2_16_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_16_2_1 ;
  x3do:hasMaterial :Material_2_16_2_1_1_1 .
:Material_2_16_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_16_2_1_1 ;
  x3do:ambientIntensity 0.0 ;
  x3do:diffuseColor ( 0.0 0.0 0.0 ) ;
  x3do:emissiveColor ( 1.0 0.0 0.0 ) ;
  x3do:shininess 0.0510204 ;
  x3do:specularColor ( 0.622449 0.622449 0.622449 ) .
:MotionTrailLineSetL a owl:NamedIndividual, x3do:IndexedLineSet ;
  x3do:hasParent :Shape_2_16_2_1 ;
  x3do:hasCoord :MotionTrailCoordL ;
  x3do:DEF 'MotionTrailLineSetL' ;
  x3do:coordIndex ( 0 1 -1 ) .
:MotionTrailCoordL a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :MotionTrailLineSetL ;
  x3do:DEF 'MotionTrailCoordL' ;
  x3do:point ( 0.0 0.0 0.0 1.0 0.0 0.0 ) .
:MotionTrailRight a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :MotionTrailScriptR, :MotionTrailLineR ;
  x3do:DEF 'MotionTrailRight' .
:MotionTrailScriptR a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :MotionTrailRight ;
  x3do:hasField :field_2_17_1_1, :field_2_17_1_2, :field_2_17_1_3, :field_2_17_1_4, :field_2_17_1_5, :field_2_17_1_6, :field_2_17_1_7, :field_2_17_1_8, :field_2_17_1_9, :field_2_17_1_10, :field_2_17_1_11, :field_2_17_1_12, :field_2_17_1_13, :field_2_17_1_14, :field_2_17_1_15, :field_2_17_1_16, :field_2_17_1_17, :field_2_17_1_18, :field_2_17_1_19, :field_2_17_1_20, :field_2_17_1_21, :field_2_17_1_22, :field_2_17_1_23, :field_2_17_1_24, :field_2_17_1_25, :field_2_17_1_26, :field_2_17_1_27, :field_2_17_1_28, :field_2_17_1_29, :field_2_17_1_30, :field_2_17_1_31, :field_2_17_1_32 ;
  x3do:DEF 'MotionTrailScriptR' ;
  x3do:sourceCode """
ecmascript:
//////////////////////////////////////////////////////////////////////
// author:	-Tom Kaye, Silicon Graphics Inc, 1997 (tomk@sgi.com)
// purpose:	-Generate a polyline tail from a series of coordinates
//		passed into the script (one per clock-tick).
//		Lots of useful auxilliary info is returned as well.
// input:	-a series of position values
// output:	-a polyline consisting of the last maxPoints coordinates
//		passed into the script.
//			- position, orientation and speed of the head
//			  of the motion path
//////////////////////////////////////////////////////////////////////  
function initialize()
{
	position[0] = 0;
	position[1] = 0;
	position[2] = 0;
	last_position = position;
	direction = position;
	distance = 0;
	rotation = new SFRotation(initial_direction, direction);
	speed     = 0;
	last_time = 0;	
	current_time = 0;	
	pointCount = 0;
	stepCount = stepSize;
	currentIndex = 0;
	coord.length = maxPoints;
	coordIndex.length = maxPoints + 3;
	for ( i = 0; i < coordIndex.length; ++i) {
		coordIndex[i] = -1;
	}
}

function reset(value, time)
{
	position[0] = 0;
	position[1] = 0;
	position[2] = 0;
	last_position = position;
	direction = position;
	distance = 0;
	rotation = new SFRotation(initial_direction, direction);
	speed     = 0;
	last_time = 0;	
	current_time = 0;	
	pointCount = 0;
	stepCount = stepSize;
	currentIndex = 0;
	coord.length = maxPoints;
	coordIndex.length = maxPoints + 3;
	for ( i = 0; i < coordIndex.length; ++i) {
		coordIndex[i] = -1;
	}
}

function set_isVisible(value, time)
{
	isVisible = value;
	isVisible_changed = isVisible;
}

function set_isActive(value, time)
{
	if (value != isActive) {
		isActive = value;
		isActive_changed = isActive;
		if (isActive == true) {
			reset_trigger = time;
		}
	} 
}

function set_position(value, time)
{
  last_position = value; 		// a bogus assignment 
  if ( isActive ) {

    // skip every stepSize points
    if ( stepCount >= stepSize ) {

	 stepCount = 0;	

	// update the coordIndex with as few operations as possible
	if ( pointCount <= maxPoints ) {
		// first pass as tail grows from 0 to maxPoints in length
		// and coordIndex consists of only one polyline
		if ( pointCount < maxPoints ) {
			coordIndex[currentIndex + 1] = currentIndex;
			coordIndex[currentIndex + 2] = -1;
		} else {
			// occurs once: currentIndex == pointCount == maxPoints
			coordIndex[currentIndex + 1] = 0;
			coordIndex[currentIndex + 2] = -1;
			currentIndex = 0;
			coordIndex[currentIndex ] = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		}
	} else {
		// subsequent passes when tail is a constant length of maxPoints
		// and coordIndex consists of two polylines
		if ( currentIndex < maxPoints ) {
			coordIndex[currentIndex]     = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		} else {
			// occurs once each cycle when currentIndex == maxPoints
			coordIndex[currentIndex ]    = 0;
			coordIndex[currentIndex + 1] = -1;
			currentIndex = 0;
			coordIndex[currentIndex ] = currentIndex;
			coordIndex[currentIndex + 1] = -1;
		}
	}

	// save last position  and time to later compute direction and speed
	last_position = position;
	position = value;
	last_time = current_time;
	current_time = time;

	// add the new position to the coordinate array ring-buffer
	coord[currentIndex] = position;
	position_changed = position; 	// echo position value as an output

	// compute direction based on last two points passed in
	direction = position.subtract(last_position);
	distance = direction.length();

	// compute a new rotation only if there has been some finite movement
	if ( distance >= 0.00001 ) {
			rotation = new SFRotation(initial_direction, direction);
	}

	// Compute speed and output results only if two or more points have been
	// passed in since initialization or last reset
	if ( pointCount >= 1 ) {

		// compute speed
		speed = distance / (current_time - last_time);
		rotation_changed = rotation;
		speed_changed = speed;

		// outpout the coord and coordIndex arrays only when appropriate
		if (isVisible ) {
			coord_changed = coord;
			coordIndex_changed = coordIndex;
		} else {
			coordIndex_changed = nullcoordIndex;
		}

	}

	// increment the appropriate counters
	currentIndex += 1;	// cycles between 0 and maxPoints (length of tail)
	pointCount += 1;	// total number of points processed since reset

    }  // end stepCount block

    stepCount += 1;
  }
}
""" .
:field_2_17_1_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'stepCount' ;
  x3do:type 'SFInt32' ;
  x3do:value 1 .
:field_2_17_1_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'isVisible_changed' ;
  x3do:type 'SFBool' .
:field_2_17_1_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'coordIndex_changed' ;
  x3do:type 'MFInt32' .
:field_2_17_1_4 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'currentIndex' ;
  x3do:type 'SFInt32' ;
  x3do:value 0 .
:field_2_17_1_5 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'last_time' ;
  x3do:type 'SFTime' ;
  x3do:value '0.0' .
:field_2_17_1_6 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'distance' ;
  x3do:type 'SFFloat' ;
  x3do:value 0.0 .
:field_2_17_1_7 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'isActive_changed' ;
  x3do:type 'SFBool' .
:field_2_17_1_8 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'stepSize' ;
  x3do:type 'SFInt32' ;
  x3do:value 1 .
:field_2_17_1_9 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'coordIndex' ;
  x3do:type 'MFInt32' ;
  x3do:value ( -1 -1 ) .
:field_2_17_1_10 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'startIndex' ;
  x3do:type 'SFInt32' ;
  x3do:value 0 .
:field_2_17_1_11 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'position_changed' ;
  x3do:type 'SFVec3f' .
:field_2_17_1_12 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'reset_trigger' ;
  x3do:type 'SFTime' .
:field_2_17_1_13 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'coord_changed' ;
  x3do:type 'MFVec3f' .
:field_2_17_1_14 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'current_time' ;
  x3do:type 'SFTime' ;
  x3do:value '0.0' .
:field_2_17_1_15 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'rotation_changed' ;
  x3do:type 'SFRotation' .
:field_2_17_1_16 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_isVisible' ;
  x3do:type 'SFBool' .
:field_2_17_1_17 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'last_position' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.0 0.0 ) .
:field_2_17_1_18 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_isActive' ;
  x3do:type 'SFBool' .
:field_2_17_1_19 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'initial_direction' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.0 -1.0 ) .
:field_2_17_1_20 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'isVisible' ;
  x3do:type 'SFBool' ;
  x3do:value true .
:field_2_17_1_21 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'coord' ;
  x3do:type 'MFVec3f' ;
  x3do:value ( 0.0 0.0 0.0 1.0 0.0 0.0 ) .
:field_2_17_1_22 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'rotation' ;
  x3do:type 'SFRotation' ;
  x3do:value ( 0.0 0.0 1.0 0.0 ) .
:field_2_17_1_23 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'speed_changed' ;
  x3do:type 'SFFloat' .
:field_2_17_1_24 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'speed' ;
  x3do:type 'SFFloat' ;
  x3do:value 0.0 .
:field_2_17_1_25 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'isActive' ;
  x3do:type 'SFBool' ;
  x3do:value true .
:field_2_17_1_26 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_position' ;
  x3do:type 'SFVec3f' .
:field_2_17_1_27 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'maxPoints' ;
  x3do:type 'SFInt32' ;
  x3do:value 50 .
:field_2_17_1_28 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'pointCount' ;
  x3do:type 'SFInt32' ;
  x3do:value 0 .
:field_2_17_1_29 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'direction' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.0 0.0 ) .
:field_2_17_1_30 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'reset' ;
  x3do:type 'SFTime' .
:field_2_17_1_31 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'position' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.0 0.0 ) .
:field_2_17_1_32 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :MotionTrailScriptR ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'nullcoordIndex' ;
  x3do:type 'MFInt32' .
:MotionTrailLineR a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :MotionTrailRight ;
  x3do:hasChildren :Shape_2_17_2_1 ;
  x3do:DEF 'MotionTrailLineR' .
:Shape_2_17_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :MotionTrailLineR ;
  x3do:hasAppearance :Appearance_2_17_2_1_1 ;
  x3do:hasGeometry :MotionTrailLineSetR .
:Appearance_2_17_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_17_2_1 ;
  x3do:hasMaterial :Material_2_17_2_1_1_1 .
:Material_2_17_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_17_2_1_1 ;
  x3do:ambientIntensity 0.0 ;
  x3do:diffuseColor ( 0.0 0.0 0.0 ) ;
  x3do:emissiveColor ( 0.0 1.0 0.168349 ) ;
  x3do:shininess 0.0510204 ;
  x3do:specularColor ( 0.622449 0.622449 0.622449 ) .
:MotionTrailLineSetR a owl:NamedIndividual, x3do:IndexedLineSet ;
  x3do:hasParent :Shape_2_17_2_1 ;
  x3do:hasCoord :MotionTrailCoordR ;
  x3do:DEF 'MotionTrailLineSetR' ;
  x3do:coordIndex ( 0 1 -1 ) .
:MotionTrailCoordR a owl:NamedIndividual, x3do:Coordinate ;
  x3do:hasParent :MotionTrailLineSetR ;
  x3do:DEF 'MotionTrailCoordR' ;
  x3do:point ( 0.0 0.0 0.0 1.0 0.0 0.0 ) .
:wingtipCoordinates a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Scene ;
  x3do:hasField :field_2_18_1, :field_2_18_2, :field_2_18_3, :field_2_18_4, :field_2_18_5, :field_2_18_6, :field_2_18_7, :field_2_18_8 ;
  x3do:DEF 'wingtipCoordinates' ;
  x3do:sourceCode """
ecmascript:
//////////////////////////////////////////////////////////////////////
// author:	Tom Kaye, Silicon Graphics Inc, 1997 (tomk@sgi.com)
// purpose:	Generate absolute WingTip coordinates from a single
//		position and rotation value. 
// input:	position and rotation of a vehicle
// output:	absolute coordinates of left and right wingtips
//////////////////////////////////////////////////////////////////////  
function set_vehiclePosition(value, time)
{
	vehiclePosition = value;
	rightWingtipCoordinate_changed = vehiclePosition.add( vehicleRotation.multVec(rightOffsetVector) );
	leftWingtipCoordinate_changed  = vehiclePosition.add( vehicleRotation.multVec(leftOffsetVector) );
		
}

function set_vehicleRotation(value, time)
{
	vehicleRotation = value;	
}
""" .
:field_2_18_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :wingtipCoordinates ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'leftWingtipCoordinate_changed' ;
  x3do:type 'SFVec3f' .
:field_2_18_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :wingtipCoordinates ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_vehicleRotation' ;
  x3do:type 'SFRotation' .
:field_2_18_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :wingtipCoordinates ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'vehiclePosition' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.0 0.0 0.0 ) .
:field_2_18_4 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :wingtipCoordinates ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'rightOffsetVector' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( 0.25 -0.5 0.0 ) .
:field_2_18_5 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :wingtipCoordinates ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'leftOffsetVector' ;
  x3do:type 'SFVec3f' ;
  x3do:value ( -0.25 -0.5 0.0 ) .
:field_2_18_6 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :wingtipCoordinates ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'rightWingtipCoordinate_changed' ;
  x3do:type 'SFVec3f' .
:field_2_18_7 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :wingtipCoordinates ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_vehiclePosition' ;
  x3do:type 'SFVec3f' .
:field_2_18_8 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :wingtipCoordinates ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'vehicleRotation' ;
  x3do:type 'SFRotation' ;
  x3do:value ( 0.0 0.0 1.0 0.0 ) .
:ROUTE_2_19 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'firstTime' ;
  x3do:fromNode 'enterWorldScript' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'enterWorldTimeSensor' .
:ROUTE_2_20 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'time' ;
  x3do:fromNode 'enterWorldTimeSensor' ;
  x3do:toField 'triggerIn' ;
  x3do:toNode 'enterWorldScript' .
:ROUTE_2_21 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'translation_changed' ;
  x3do:fromNode 'TargetVehicle' ;
  x3do:toField 'rawCoordinateIn' ;
  x3do:toNode 'offsetCoordinates' .
:ROUTE_2_22 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'cycleInterval_changed' ;
  x3do:fromNode 'Time' ;
  x3do:toField 'reset' ;
  x3do:toNode 'MotionTrailScriptL' .
:ROUTE_2_23 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'leftWingtipCoordinate_changed' ;
  x3do:fromNode 'wingtipCoordinates' ;
  x3do:toField 'set_position' ;
  x3do:toNode 'MotionTrailScriptL' .
:ROUTE_2_24 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'coord_changed' ;
  x3do:fromNode 'MotionTrailScriptL' ;
  x3do:toField 'set_point' ;
  x3do:toNode 'MotionTrailCoordL' .
:ROUTE_2_25 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'coordIndex_changed' ;
  x3do:fromNode 'MotionTrailScriptL' ;
  x3do:toField 'set_coordIndex' ;
  x3do:toNode 'MotionTrailLineSetL' .
:ROUTE_2_26 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'cycleInterval_changed' ;
  x3do:fromNode 'Time' ;
  x3do:toField 'reset' ;
  x3do:toNode 'MotionTrailScriptR' .
:ROUTE_2_27 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'rightWingtipCoordinate_changed' ;
  x3do:fromNode 'wingtipCoordinates' ;
  x3do:toField 'set_position' ;
  x3do:toNode 'MotionTrailScriptR' .
:ROUTE_2_28 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'coord_changed' ;
  x3do:fromNode 'MotionTrailScriptR' ;
  x3do:toField 'set_point' ;
  x3do:toNode 'MotionTrailCoordR' .
:ROUTE_2_29 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'coordIndex_changed' ;
  x3do:fromNode 'MotionTrailScriptR' ;
  x3do:toField 'set_coordIndex' ;
  x3do:toNode 'MotionTrailLineSetR' .
:ROUTE_2_30 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'offsetCoordinateOut' ;
  x3do:fromNode 'offsetCoordinates' ;
  x3do:toField 'set_vehiclePosition' ;
  x3do:toNode 'wingtipCoordinates' .
:ROUTE_2_31 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'rotation_changed' ;
  x3do:fromNode 'TargetVehicle' ;
  x3do:toField 'set_vehicleRotation' ;
  x3do:toNode 'wingtipCoordinates' .
:ROUTE_2_32 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'startTime' ;
  x3do:fromNode 'enterWorldScript' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'Time' .
:ROUTE_2_33 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Time' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TargetVehicleTranslationInterp' .
:ROUTE_2_34 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Time' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TargetVehicleRotationInterp' .
:ROUTE_2_35 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TargetVehicleTranslationInterp' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'TargetVehicle' .
:ROUTE_2_36 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TargetVehicleRotationInterp' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'TargetVehicle' .
