@prefix :        <https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/Trebuchet.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.0.xsd#> .
@prefix x3do:    <https://www.web3d.org/specifications/X3dOntology4.0#> .

:X3D a owl:NamedIndividual, x3do:X3D ;
  x3do:hasHead :head ;
  x3do:hasScene :Scene ;
  x3do:profile 'Immersive' ;
  x3do:version '3.0' ;
  x3do:noNamespaceSchemaLocation 'https://www.web3d.org/specifications/x3d-3.0.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_1 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Trebuchet.x3d' ;
  x3do:name 'title' .
:meta_1_2 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Working model of a 14th century Trebuchet Catapult.' ;
  x3do:name 'description' .
:meta_1_3 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Joe Roth' ;
  x3do:name 'creator' .
:meta_1_4 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '20 June 2001' ;
  x3do:name 'created' .
:meta_1_5 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '30 November 2024' ;
  x3do:name 'modified' .
:meta_1_6 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '7.8' ;
  x3do:name 'version' .
:meta_1_7 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'multiple files missing, lost' ;
  x3do:name 'TODO' .
:meta_1_8 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/Trebuchet.x3d' ;
  x3do:name 'identifier' .
:meta_1_9 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'http://trebuchet.com' ;
  x3do:name 'reference' .
:meta_1_10 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'http://members.home.net/dimona' ;
  x3do:name 'reference' .
:meta_1_11 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'trebuchet catapult Monty Python' ;
  x3do:name 'subject' .
:meta_1_12 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Permission granted for use of the VRML chicken I own a copy of Monty Python and the Holy Grail I have requested permission to use for non profit use. No response received. I will use the sound clips under "Fair Use" clause of the DMCA' ;
  x3do:name 'reference' .
:meta_1_13 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/WorkingGroups/media/textures/nature/leaves_5.jpg.htm' ;
  x3do:name 'reference' .
:meta_1_14 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'http://www.revemonde.net/UniversalMedia/textures/nature/leaves_5.jpg.htm' ;
  x3do:name 'reference' .
:meta_1_15 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_16 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '../license.html' ;
  x3do:name 'license' .
:meta dcterms:title "Trebuchet.x3d" .
:meta dcterms:description "Working model of a 14th century Trebuchet Catapult." .
:meta dcterms:creator "Joe Roth" .
:meta dcterms:created "20 June 2001" .
:meta dcterms:modified "30 November 2024" .
:meta dcterms:version "7.8" .
:meta dcterms:identifier "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/Trebuchet.x3d" .
:meta dcterms:reference "http://trebuchet.com" .
:meta dcterms:reference "http://members.home.net/dimona" .
:meta dcterms:subject "trebuchet catapult Monty Python" .
:meta dcterms:reference "Permission granted for use of the VRML chicken I own a copy of Monty Python and the Holy Grail I have requested permission to use for non profit use. No response received. I will use the sound clips under \"Fair Use\" clause of the DMCA" .
:meta dcterms:reference "https://www.web3d.org/WorkingGroups/media/textures/nature/leaves_5.jpg.htm" .
:meta dcterms:reference "http://www.revemonde.net/UniversalMedia/textures/nature/leaves_5.jpg.htm" .
: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, :Sound_2_3, :Shape_2_4, :Transform_2_5, :Transform_2_6, :Transform_2_7, :Transform_2_8, :Transform_2_9, :clock, :verticalweightpath, :flingerangles, :pinpath, :RnSAngels, :invisiable ;
  x3do:hasROUTE :ROUTE_2_16, :ROUTE_2_17, :ROUTE_2_18, :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, :ROUTE_2_37, :ROUTE_2_38, :ROUTE_2_39, :ROUTE_2_40, :ROUTE_2_41 .
:WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ;
  x3do:hasParent :Scene ;
  x3do:title 'Trebuchet.x3d' .
:Background_2_2 a owl:NamedIndividual, x3do:Background ;
  x3do:hasParent :Scene ;
  x3do:backUrl '"../UniversalMediaPanoramas/meadow_2_back.jpg" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_back.jpg" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_back.jpg"' ;
  x3do:bottomUrl '"../UniversalMediaPanoramas/meadow_2_bottom.jpg" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_bottom.jpg" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_bottom.jpg"' ;
  x3do:frontUrl '"../UniversalMediaPanoramas/meadow_2_front.jpg" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_front.jpg" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_front.jpg"' ;
  x3do:groundAngle ( 1.309 1.570796 ) ;
  x3do:groundColor ( 0.1 0.1 0 0.4 0.25 0.2 0.6 0.6 0.6 ) ;
  x3do:leftUrl '"../UniversalMediaPanoramas/meadow_2_left.jpg" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_left.jpg" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_left.jpg"' ;
  x3do:rightUrl '"../UniversalMediaPanoramas/meadow_2_right.jpg" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_right.jpg" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_right.jpg"' ;
  x3do:skyAngle ( 1.309 1.57079 ) ;
  x3do:skyColor ( 0 0.2 0.7 0 0.5 1 1 1 1 ) ;
  x3do:topUrl '"../UniversalMediaPanoramas/meadow_2_top.jpg" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/../UniversalMediaPanoramas/meadow_2_top.jpg" "https://www.web3d.org/WorkingGroups/media/textures/panoramas/meadow_2_top.jpg"' .
:Sound_2_3 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :Scene ;
  x3do:hasSource :HolyGrail ;
  x3do:maxBack 1000 ;
  x3do:maxFront 1000 .
:HolyGrail a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_3 ;
  x3do:DEF 'HolyGrail' ;
  x3do:description 'HolyGrail' ;
  x3do:loop true ;
  x3do:url '"holygral.mp3" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/holygral.mp3"' .
:Shape_2_4 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Scene ;
  x3do:hasGeometry :Box_2_4_1 ;
  x3do:hasAppearance :Appearance_2_4_2 .
:Box_2_4_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_4 ;
  x3do:size ( 10000 1 10000 ) .
:Appearance_2_4_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_4 ;
  x3do:hasTexture :ImageTexture_2_4_2_1 .
:ImageTexture_2_4_2_1 a owl:NamedIndividual, x3do:ImageTexture ;
  x3do:hasParent :Appearance_2_4_2 ;
  x3do:url '"grass.jpg" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/grass.jpg"' .
:Transform_2_5 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_5_1 ;
  x3do:rotation ( 0 1 0 1.57 ) ;
  x3do:scale ( .5 .5 .5 ) ;
  x3do:translation ( 10.5 6.5 4.5 ) .
:Shape_2_5_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_5 ;
  x3do:hasAppearance :TextAppearance ;
  x3do:hasGeometry :Text_2_5_1_2 .
:TextAppearance a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_5_1 ;
  x3do:hasMaterial :Material_2_5_1_1_1 ;
  x3do:DEF 'TextAppearance' .
:Material_2_5_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :TextAppearance ;
  x3do:diffuseColor ( 1 0 0 ) ;
  x3do:emissiveColor ( 1 1 0 ) .
:Text_2_5_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_5_1 ;
  x3do:hasFontStyle :FontStyle_2_5_1_2_1 ;
  x3do:string '"Click Sling to Select Projectile"' .
:FontStyle_2_5_1_2_1 a owl:NamedIndividual, x3do:FontStyle ;
  x3do:hasParent :Text_2_5_1_2 .
:Transform_2_6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Weight, :weightselector, :Transform_2_6_3 ;
  x3do:rotation ( 0 1 0 1.57 ) ;
  x3do:scale ( .5 .5 .5 ) ;
  x3do:translation ( 11 5.5 6 ) .
:Weight a owl:NamedIndividual, x3do:Switch ;
  x3do:hasParent :Transform_2_6 ;
  x3do:hasChildren :Group_2_6_1_1, :Group_2_6_1_2, :Group_2_6_1_3, :Group_2_6_1_4 ;
  x3do:DEF 'Weight' ;
  x3do:whichChoice 0 .
:Group_2_6_1_1 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Weight ;
  x3do:hasChildren :Shape_2_6_1_1_1 .
:Shape_2_6_1_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Group_2_6_1_1 ;
  x3do:hasAppearance :TextAppearance-USE-1 ;
  x3do:hasGeometry :Text_2_6_1_1_1_2 .
:TextAppearance-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_1_1_1 ;
  owl:sameAs :TextAppearance . # DEF matching this USE
:Text_2_6_1_1_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_6_1_1_1 ;
  x3do:string '"Click Here to Change Counter Weight (50 lbs)"' .
:Group_2_6_1_2 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Weight ;
  x3do:hasChildren :Shape_2_6_1_2_1 .
:Shape_2_6_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Group_2_6_1_2 ;
  x3do:hasAppearance :TextAppearance-USE-2 ;
  x3do:hasGeometry :Text_2_6_1_2_1_2 .
:TextAppearance-USE-2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_1_2_1 ;
  owl:sameAs :TextAppearance . # DEF matching this USE
:Text_2_6_1_2_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_6_1_2_1 ;
  x3do:string '"Click Here to Change Counter Weight (500 lbs)"' .
:Group_2_6_1_3 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Weight ;
  x3do:hasChildren :Shape_2_6_1_3_1 .
:Shape_2_6_1_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Group_2_6_1_3 ;
  x3do:hasAppearance :TextAppearance-USE-3 ;
  x3do:hasGeometry :Text_2_6_1_3_1_2 .
:TextAppearance-USE-3 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_1_3_1 ;
  owl:sameAs :TextAppearance . # DEF matching this USE
:Text_2_6_1_3_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_6_1_3_1 ;
  x3do:string '"Click Here to Change Counter Weight (1000 lbs)"' .
:Group_2_6_1_4 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Weight ;
  x3do:hasChildren :Shape_2_6_1_4_1 .
:Shape_2_6_1_4_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Group_2_6_1_4 ;
  x3do:hasAppearance :TextAppearance-USE-4 ;
  x3do:hasGeometry :Text_2_6_1_4_1_2 .
:TextAppearance-USE-4 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_1_4_1 ;
  owl:sameAs :TextAppearance . # DEF matching this USE
:Text_2_6_1_4_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_6_1_4_1 ;
  x3do:string '"Click Here to Change Counter Weight (10000 lbs)"' .
:weightselector a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_6 ;
  x3do:DEF 'weightselector' ;
  x3do:description 'weight selector' .
:Transform_2_6_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_6 ;
  x3do:hasChildren :Shape_2_6_3_1 ;
  x3do:translation ( 8 0 0 ) .
:Shape_2_6_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_6_3 ;
  x3do:hasGeometry :Box_2_6_3_1_1 ;
  x3do:hasAppearance :Appearance_2_6_3_1_2 .
:Box_2_6_3_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_6_3_1 ;
  x3do:size ( 20 1 1 ) .
:Appearance_2_6_3_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_6_3_1 ;
  x3do:hasMaterial :Material_2_6_3_1_2_1 .
:Material_2_6_3_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_6_3_1_2 ;
  x3do:transparency 1 .
:Transform_2_7 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :launch, :Transform_2_7_2 ;
  x3do:rotation ( 0 1 0 1.57 ) ;
  x3do:translation ( 10 .5 4.5 ) .
:launch a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_7 ;
  x3do:hasChildren :Billboard_2_7_1_1, :Launch ;
  x3do:DEF 'launch' ;
  x3do:translation ( 0 2 5 ) .
:Billboard_2_7_1_1 a owl:NamedIndividual, x3do:Billboard ;
  x3do:hasParent :launch ;
  x3do:hasChildren :Shape_2_7_1_1_1, :Transform_2_7_1_1_2, :PigdogMonk .
:Shape_2_7_1_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Billboard_2_7_1_1 ;
  x3do:hasAppearance :Appearance_2_7_1_1_1_1 ;
  x3do:hasGeometry :Text_2_7_1_1_1_2 .
:Appearance_2_7_1_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1_1_1 ;
  x3do:hasMaterial :Material_2_7_1_1_1_1_1 .
:Material_2_7_1_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_7_1_1_1_1 ;
  x3do:diffuseColor ( 1 0 0 ) .
:Text_2_7_1_1_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_7_1_1_1 ;
  x3do:hasFontStyle :FontStyle_2_7_1_1_1_2_1 ;
  x3do:string '"LAUNCH"' .
:FontStyle_2_7_1_1_1_2_1 a owl:NamedIndividual, x3do:FontStyle ;
  x3do:hasParent :Text_2_7_1_1_1_2 .
:Transform_2_7_1_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Billboard_2_7_1_1 ;
  x3do:hasChildren :Shape_2_7_1_1_2_1 ;
  x3do:translation ( 2 .3 0 ) .
:Shape_2_7_1_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_7_1_1_2 ;
  x3do:hasGeometry :Box_2_7_1_1_2_1_1 ;
  x3do:hasAppearance :Appearance_2_7_1_1_2_1_2 .
:Box_2_7_1_1_2_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_7_1_1_2_1 ;
  x3do:size ( 5 1 1 ) .
:Appearance_2_7_1_1_2_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_1_1_2_1 ;
  x3do:hasMaterial :Material_2_7_1_1_2_1_2_1 .
:Material_2_7_1_1_2_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_7_1_1_2_1_2 ;
  x3do:transparency 1 .
:PigdogMonk a owl:NamedIndividual, x3do:Switch ;
  x3do:hasParent :Billboard_2_7_1_1 ;
  x3do:hasChildren :Group_2_7_1_1_3_1, :Group_2_7_1_1_3_2 ;
  x3do:DEF 'PigdogMonk' ;
  x3do:whichChoice -1 .
:Group_2_7_1_1_3_1 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :PigdogMonk ;
  x3do:hasChildren :Sound_2_7_1_1_3_1_1 .
:Sound_2_7_1_1_3_1_1 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :Group_2_7_1_1_3_1 ;
  x3do:hasSource :PigDogSound ;
  x3do:maxBack 1000 ;
  x3do:maxFront 1000 .
:PigDogSound a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_7_1_1_3_1_1 ;
  x3do:DEF 'PigDogSound' ;
  x3do:description 'PigDogSound' ;
  x3do:url '"pigdog.wav" "http://www.nps.navy.mil/code32/vrml/pigdog.wav"' .
:Group_2_7_1_1_3_2 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :PigdogMonk ;
  x3do:hasChildren :Sound_2_7_1_1_3_2_1 .
:Sound_2_7_1_1_3_2_1 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :Group_2_7_1_1_3_2 ;
  x3do:hasSource :MonkSound ;
  x3do:maxBack 1000 ;
  x3do:maxFront 1000 .
:MonkSound a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_7_1_1_3_2_1 ;
  x3do:DEF 'MonkSound' ;
  x3do:description 'MonkSound' ;
  x3do:url '"monks.wav" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/monks.wav"' .
:Launch a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :launch ;
  x3do:DEF 'Launch' ;
  x3do:description 'launch!' .
:Transform_2_7_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_7 ;
  x3do:hasChildren :projectilename .
:projectilename a owl:NamedIndividual, x3do:Switch ;
  x3do:hasParent :Transform_2_7_2 ;
  x3do:hasChildren :Group_2_7_2_1_1, :Group_2_7_2_1_2, :Group_2_7_2_1_3 ;
  x3do:DEF 'projectilename' ;
  x3do:whichChoice 0 .
:Group_2_7_2_1_1 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :projectilename ;
  x3do:hasChildren :Shape_2_7_2_1_1_1, :Sound_2_7_2_1_1_2 .
:Shape_2_7_2_1_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Group_2_7_2_1_1 ;
  x3do:hasAppearance :TextAppearance-USE-5 ;
  x3do:hasGeometry :Text_2_7_2_1_1_1_2 .
:TextAppearance-USE-5 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_2_1_1_1 ;
  owl:sameAs :TextAppearance . # DEF matching this USE
:Text_2_7_2_1_1_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_7_2_1_1_1 ;
  x3do:hasFontStyle :FontStyle_2_7_2_1_1_1_2_1 ;
  x3do:string '"Bowling Ball (10 lbs)"' .
:FontStyle_2_7_2_1_1_1_2_1 a owl:NamedIndividual, x3do:FontStyle ;
  x3do:hasParent :Text_2_7_2_1_1_1_2 ;
  x3do:size .5 .
:Sound_2_7_2_1_1_2 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :Group_2_7_2_1_1 ;
  x3do:hasSource :HolyHandGrenadeSound ;
  x3do:maxBack 1000 ;
  x3do:maxFront 1000 ;
  x3do:priority 1 .
:HolyHandGrenadeSound a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_7_2_1_1_2 ;
  x3do:DEF 'HolyHandGrenadeSound' ;
  x3do:description 'HolyHandGrenadeSound' ;
  x3do:url '"grenade.wav"' .
:Group_2_7_2_1_2 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :projectilename ;
  x3do:hasChildren :Shape_2_7_2_1_2_1, :Sound_2_7_2_1_2_2 .
:Shape_2_7_2_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Group_2_7_2_1_2 ;
  x3do:hasAppearance :TextAppearance-USE-6 ;
  x3do:hasGeometry :Text_2_7_2_1_2_1_2 .
:TextAppearance-USE-6 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_2_1_2_1 ;
  owl:sameAs :TextAppearance . # DEF matching this USE
:Text_2_7_2_1_2_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_7_2_1_2_1 ;
  x3do:hasFontStyle :FontStyle_2_7_2_1_2_1_2_1 ;
  x3do:string '"Cow (1000 lbs)"' .
:FontStyle_2_7_2_1_2_1_2_1 a owl:NamedIndividual, x3do:FontStyle ;
  x3do:hasParent :Text_2_7_2_1_2_1_2 ;
  x3do:size .5 .
:Sound_2_7_2_1_2_2 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :Group_2_7_2_1_2 ;
  x3do:hasSource :CowSound ;
  x3do:maxBack 1000 ;
  x3do:maxFront 1000 .
:CowSound a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_7_2_1_2_2 ;
  x3do:DEF 'CowSound' ;
  x3do:description 'CowSound' ;
  x3do:url '"lavache.wav"' .
:Group_2_7_2_1_3 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :projectilename ;
  x3do:hasChildren :Shape_2_7_2_1_3_1, :Sound_2_7_2_1_3_2 .
:Shape_2_7_2_1_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Group_2_7_2_1_3 ;
  x3do:hasAppearance :TextAppearance-USE-7 ;
  x3do:hasGeometry :Text_2_7_2_1_3_1_2 .
:TextAppearance-USE-7 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_7_2_1_3_1 ;
  owl:sameAs :TextAppearance . # DEF matching this USE
:Text_2_7_2_1_3_1_2 a owl:NamedIndividual, x3do:Text ;
  x3do:hasParent :Shape_2_7_2_1_3_1 ;
  x3do:hasFontStyle :FontStyle_2_7_2_1_3_1_2_1 ;
  x3do:string '"Chicken (5 lbs)"' .
:FontStyle_2_7_2_1_3_1_2_1 a owl:NamedIndividual, x3do:FontStyle ;
  x3do:hasParent :Text_2_7_2_1_3_1_2 ;
  x3do:size .5 .
:Sound_2_7_2_1_3_2 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :Group_2_7_2_1_3 ;
  x3do:hasSource :HamsterSound ;
  x3do:maxBack 1000 ;
  x3do:maxFront 1000 ;
  x3do:priority 1 .
:HamsterSound a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_7_2_1_3_2 ;
  x3do:DEF 'HamsterSound' ;
  x3do:description 'HamsterSound' ;
  x3do:url '"hamster.wav"' .
:Transform_2_8 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :aft ;
  x3do:rotation ( 0 1 0 -1.67 ) .
:aft a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_8 ;
  x3do:hasChildren :Transform_2_8_1_1 ;
  x3do:DEF 'aft' ;
  x3do:translation ( 5 5 15 ) .
:Transform_2_8_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :aft ;
  x3do:hasChildren :launch-USE-1 ;
  x3do:translation ( -2.5 -4.5 -2 ) .
:launch-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_8_1_1 ;
  owl:sameAs :launch . # DEF matching this USE
:Transform_2_9 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :plank, :angledsupport, :angledsupport2, :verticalsupport, :horizontalsupport, :Transform_2_9_6, :panel, :Transform_2_9_8, :flinger, :Transform_2_9_10, :verticalweight, :Transform_2_9_12, :Transform_2_9_13, :Transform_2_9_14, :Transform_2_9_15 ;
  x3do:translation ( 0 3 0 ) .
:plank a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasGeometry :Box_2_9_1_1 ;
  x3do:hasAppearance :wood ;
  x3do:DEF 'plank' .
:Box_2_9_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :plank ;
  x3do:size ( 25 1 1 ) .
:wood a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :plank ;
  x3do:hasTexture :woodTexture ;
  x3do:DEF 'wood' .
:woodTexture a owl:NamedIndividual, x3do:ImageTexture ;
  x3do:hasParent :wood ;
  x3do:DEF 'woodTexture' ;
  x3do:url '"wood.gif" "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/wood.gif"' .
:angledsupport a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :plank-USE-1 ;
  x3do:DEF 'angledsupport' ;
  x3do:rotation ( 0 0 1 1 ) ;
  x3do:translation ( -5 10 0 ) .
:plank-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :angledsupport ;
  owl:sameAs :plank . # DEF matching this USE
:angledsupport2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :plank-USE-2 ;
  x3do:DEF 'angledsupport2' ;
  x3do:rotation ( 0 0 1 -1 ) ;
  x3do:translation ( 5 10 0 ) .
:plank-USE-2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :angledsupport2 ;
  owl:sameAs :plank . # DEF matching this USE
:verticalsupport a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :plank-USE-3 ;
  x3do:DEF 'verticalsupport' ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:scale ( .9 1 1 ) ;
  x3do:translation ( 0 11 0 ) .
:plank-USE-3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :verticalsupport ;
  owl:sameAs :plank . # DEF matching this USE
:horizontalsupport a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :plank-USE-4 ;
  x3do:DEF 'horizontalsupport' ;
  x3do:scale ( .4 1 1 ) ;
  x3do:translation ( 0 10 0 ) .
:plank-USE-4 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :horizontalsupport ;
  owl:sameAs :plank . # DEF matching this USE
:Transform_2_9_6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :Transform_2_9_6_1 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:scale ( .6 1 1 ) ;
  x3do:translation ( 0 5 10 ) .
:Transform_2_9_6_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_6 ;
  x3do:hasChildren :plank-USE-5 ;
  x3do:rotation ( 0 1 0 .4 ) .
:plank-USE-5 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_6_1 ;
  owl:sameAs :plank . # DEF matching this USE
:panel a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :Shape_2_9_7_1 ;
  x3do:DEF 'panel' ;
  x3do:translation ( 0 18.2 -0.3 ) .
:Shape_2_9_7_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :panel ;
  x3do:hasGeometry :Box_2_9_7_1_1 ;
  x3do:hasAppearance :wood-USE-1 .
:Box_2_9_7_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_9_7_1 ;
  x3do:size ( 5 5 .5 ) .
:wood-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_7_1 ;
  owl:sameAs :wood . # DEF matching this USE
:Transform_2_9_8 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :Transform_2_9_8_1 ;
  x3do:rotation ( 1 0 0 -1.57 ) ;
  x3do:translation ( 0 0.6 2.5 ) .
:Transform_2_9_8_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_8 ;
  x3do:hasChildren :Shape_2_9_8_1_1 ;
  x3do:rotation ( 0 0 1 1.57 ) .
:Shape_2_9_8_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_8_1 ;
  x3do:hasGeometry :Extrusion_2_9_8_1_1_1 ;
  x3do:hasAppearance :wood-USE-2 .
:Extrusion_2_9_8_1_1_1 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_9_8_1_1 ;
  x3do:beginCap false ;
  x3do:crossSection ( 1.0 -0.38 .92 -0.38 .71 -0.71 .38 -0.92 0.0 -1.0 -0.38 -0.92 -0.71 -0.71 -0.92 -0.38 -1.0 -0.38 -1 -1.1 1 -1.1 1.0 -0.38 ) ;
  x3do:endCap false ;
  x3do:solid false ;
  x3do:spine ( 0 6 0 0 -11 0 ) .
:wood-USE-2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_8_1_1 ;
  owl:sameAs :wood . # DEF matching this USE
:flinger a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :Transform_2_9_9_1, :Transform_2_9_9_2, :Transform_2_9_9_3, :Transform_2_9_9_4, :RnS ;
  x3do:DEF 'flinger' ;
  x3do:center ( 7 0 0 ) ;
  x3do:rotation ( 0 0 1 .82 ) ;
  x3do:scale ( .9 1 1 ) ;
  x3do:translation ( -7 18 2.5 ) .
:Transform_2_9_9_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :flinger ;
  x3do:hasChildren :Shape_2_9_9_1_1, :Transform_2_9_9_1_2 .
:Shape_2_9_9_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_1 ;
  x3do:hasGeometry :Box_2_9_9_1_1_1 ;
  x3do:hasAppearance :wood-USE-3 .
:Box_2_9_9_1_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_9_9_1_1 ;
  x3do:size ( 35 1 1 ) .
:wood-USE-3 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_1_1 ;
  owl:sameAs :wood . # DEF matching this USE
:Transform_2_9_9_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_1 ;
  x3do:hasChildren :Shape_2_9_9_1_2_1 ;
  x3do:translation ( 7 0 0 ) .
:Shape_2_9_9_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_1_2 ;
  x3do:hasGeometry :Box_2_9_9_1_2_1_1 ;
  x3do:hasAppearance :wood-USE-4 .
:Box_2_9_9_1_2_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_9_9_1_2_1 ;
  x3do:size ( 8 2 2 ) .
:wood-USE-4 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_1_2_1 ;
  owl:sameAs :wood . # DEF matching this USE
:Transform_2_9_9_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :flinger ;
  x3do:hasChildren :Torus, :Transform_2_9_9_2_2 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:scale ( .2 .2 .2 ) ;
  x3do:translation ( -15 -1 0 ) .
:Torus a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_2 ;
  x3do:hasAppearance :Appearance_2_9_9_2_1_1 ;
  x3do:hasGeometry :Extrusion_2_9_9_2_1_2 ;
  x3do:DEF 'Torus' .
:Appearance_2_9_9_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Torus ;
  x3do:hasMaterial :Material_2_9_9_2_1_1_1 .
:Material_2_9_9_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_9_2_1_1 ;
  x3do:specularColor ( 1 1 1 ) .
:Extrusion_2_9_9_2_1_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Torus ;
  x3do:beginCap false ;
  x3do:convex false ;
  x3do:creaseAngle 1.57 ;
  x3do:crossSection ( .90 0.00 0.81 -0.34 0.63 -0.63 0.34 -0.83 0.00 -0.9 -0.34 -0.81 -0.63 -0.63 -0.81 -0.34 -0.90 -0.00 -0.81 0.34 -0.63 0.63 -0.34 0.81 0.00 .90 0.38 0.81 0.63 0.63 0.81 0.34 .90 0.00 ) ;
  x3do:endCap false ;
  x3do:spine ( 2.00 0.0 0.00 1.85 0.0 0.77 1.41 0.0 1.41 0.77 0.0 1.85 0.00 0.0 2.00 -0.77 0.0 1.85 -1.41 0.0 1.41 -1.85 0.0 0.77 -2.00 0.0 0.00 -1.85 0.0 -0.77 -1.41 0.0 -1.41 -0.77 0.0 -1.85 0.00 0.0 -2.00 0.77 0.0 -1.85 1.41 0.0 -1.41 1.85 0.0 -0.77 2.00 0.0 0.00 ) .
:Transform_2_9_9_2_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_2 ;
  x3do:hasChildren :Shape_2_9_9_2_2_1 ;
  x3do:translation ( 1 0 2 ) .
:Shape_2_9_9_2_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_2_2 ;
  x3do:hasAppearance :rope ;
  x3do:hasGeometry :Sphere_2_9_9_2_2_1_2 .
:rope a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_2_2_1 ;
  x3do:hasTexture :woodTexture-USE-1 ;
  x3do:DEF 'rope' .
:woodTexture-USE-1 a owl:NamedIndividual, x3do:ImageTexture ;
  x3do:hasParent :rope ;
  owl:sameAs :woodTexture . # DEF matching this USE
:Sphere_2_9_9_2_2_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_9_9_2_2_1 ;
  x3do:radius 1.5 .
:Transform_2_9_9_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :flinger ;
  x3do:hasChildren :Shape_2_9_9_3_1, :Transform_2_9_9_3_2, :Transform_2_9_9_3_3 ;
  x3do:rotation ( 0 0 1 1.2 ) ;
  x3do:scale ( .2 .2 .2 ) ;
  x3do:translation ( -18.3 0.3 0 ) .
:Shape_2_9_9_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_3 ;
  x3do:hasGeometry :Cylinder_2_9_9_3_1_1 ;
  x3do:hasAppearance :Appearance_2_9_9_3_1_2 .
:Cylinder_2_9_9_3_1_1 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_9_9_3_1 ;
  x3do:height 10 .
:Appearance_2_9_9_3_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_3_1 ;
  x3do:hasMaterial :Material_2_9_9_3_1_2_1 .
:Material_2_9_9_3_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_9_3_1_2 ;
  x3do:specularColor ( 1 1 1 ) .
:Transform_2_9_9_3_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_3 ;
  x3do:hasChildren :Torus-USE-1, :Transform_2_9_9_3_2_2 ;
  x3do:translation ( 0 -2.5 0 ) .
:Torus-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_3_2 ;
  owl:sameAs :Torus . # DEF matching this USE
:Transform_2_9_9_3_2_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_3_2 ;
  x3do:hasChildren :Shape_2_9_9_3_2_2_1 ;
  x3do:translation ( -2 -0 0 ) .
:Shape_2_9_9_3_2_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_3_2_2 ;
  x3do:hasGeometry :Sphere_2_9_9_3_2_2_1_1 ;
  x3do:hasAppearance :rope-USE-1 .
:Sphere_2_9_9_3_2_2_1_1 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_9_9_3_2_2_1 ;
  x3do:radius 1.5 .
:rope-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_3_2_2_1 ;
  owl:sameAs :rope . # DEF matching this USE
:Transform_2_9_9_3_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_3 ;
  x3do:hasChildren :Transform_2_9_9_3_3_1 ;
  x3do:rotation ( 0 0 1 1.2 ) ;
  x3do:translation ( 15 55 -11 ) .
:Transform_2_9_9_3_3_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_3_3 ;
  x3do:hasChildren :Shape_2_9_9_3_3_1_1 ;
  x3do:scale ( 5 5 5 ) .
:Shape_2_9_9_3_3_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_3_3_1 ;
  x3do:hasAppearance :rope-USE-2 ;
  x3do:hasGeometry :Extrusion_2_9_9_3_3_1_1_2 .
:rope-USE-2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_3_3_1_1 ;
  owl:sameAs :rope . # DEF matching this USE
:Extrusion_2_9_9_3_3_1_1_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_9_9_3_3_1_1 ;
  x3do:beginCap false ;
  x3do:creaseAngle 0.76 ;
  x3do:crossSection ( .100 0.00 0.092 -0.038 0.071 -0.071 0.038 -0.092 0.00 -0.100 -0.038 -0.092 -0.071 -0.071 -0.092 -0.038 -0.100 -0.00 -0.092 0.038 -0.071 0.071 -0.038 0.092 0.00 .100 0.038 0.092 0.071 0.071 0.092 0.038 .100 0.00 ) ;
  x3do:endCap false ;
  x3do:solid false ;
  x3do:spine ( -15.2 1.4 2.2 -12 -0.8 2.2 ) .
:Transform_2_9_9_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :flinger ;
  x3do:hasChildren :Transform_2_9_9_4_1 ;
  x3do:rotation ( 1 0 0 -1.7 ) ;
  x3do:translation ( -17 -4.5 0 ) .
:Transform_2_9_9_4_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_4 ;
  x3do:hasChildren :Torus-USE-2, :Transform_2_9_9_4_1_2 ;
  x3do:scale ( .2 .2 .2 ) .
:Torus-USE-2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_4_1 ;
  owl:sameAs :Torus . # DEF matching this USE
:Transform_2_9_9_4_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_4_1 ;
  x3do:hasChildren :Shape_2_9_9_4_1_2_1 ;
  x3do:translation ( -1 0 1.7 ) .
:Shape_2_9_9_4_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_4_1_2 ;
  x3do:hasGeometry :Sphere_2_9_9_4_1_2_1_1 ;
  x3do:hasAppearance :rope-USE-3 .
:Sphere_2_9_9_4_1_2_1_1 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_9_9_4_1_2_1 ;
  x3do:radius 1.5 .
:rope-USE-3 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_4_1_2_1 ;
  owl:sameAs :rope . # DEF matching this USE
:RnS a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :flinger ;
  x3do:hasChildren :ropes, :sling ;
  x3do:DEF 'RnS' .
:ropes a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :RnS ;
  x3do:hasChildren :Transform_2_9_9_5_1_1 ;
  x3do:DEF 'ropes' .
:Transform_2_9_9_5_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :ropes ;
  x3do:hasChildren :Shape_2_9_9_5_1_1_1, :Shape_2_9_9_5_1_1_2 ;
  x3do:rotation ( 0 0 1 -0.82 ) ;
  x3do:translation ( 7 -26 -2.5 ) .
:Shape_2_9_9_5_1_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_1_1 ;
  x3do:hasAppearance :rope-USE-4 ;
  x3do:hasGeometry :Extrusion_2_9_9_5_1_1_1_2 .
:rope-USE-4 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_5_1_1_1 ;
  owl:sameAs :rope . # DEF matching this USE
:Extrusion_2_9_9_5_1_1_1_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_9_9_5_1_1_1 ;
  x3do:beginCap false ;
  x3do:creaseAngle 0.76 ;
  x3do:crossSection ( .100 0.00 0.092 -0.038 0.071 -0.071 0.038 -0.092 0.00 -0.100 -0.038 -0.092 -0.071 -0.071 -0.092 -0.038 -0.100 -0.00 -0.092 0.038 -0.071 0.071 -0.038 0.092 0.00 .100 0.038 0.092 0.071 0.071 0.092 0.038 .100 0.00 ) ;
  x3do:endCap false ;
  x3do:solid false ;
  x3do:spine ( -33 .9 2.5 -18.5 1.9 2.55 ) .
:Shape_2_9_9_5_1_1_2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_1_1 ;
  x3do:hasAppearance :rope-USE-5 ;
  x3do:hasGeometry :Extrusion_2_9_9_5_1_1_2_2 .
:rope-USE-5 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_5_1_1_2 ;
  owl:sameAs :rope . # DEF matching this USE
:Extrusion_2_9_9_5_1_1_2_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_9_9_5_1_1_2 ;
  x3do:beginCap false ;
  x3do:creaseAngle 0.76 ;
  x3do:crossSection ( .100 0.00 0.092 -0.038 0.071 -0.071 0.038 -0.092 0.00 -0.100 -0.038 -0.092 -0.071 -0.071 -0.092 -0.038 -0.100 -0.00 -0.092 0.038 -0.071 0.071 -0.038 0.092 0.00 .100 0.038 0.092 0.071 0.071 0.092 0.038 .100 0.00 ) ;
  x3do:endCap false ;
  x3do:solid false ;
  x3do:spine ( -35.7 -0.8 2.5 -18.8 -0.8 2.55 ) .
:sling a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :RnS ;
  x3do:hasChildren :Transform_2_9_9_5_2_1 ;
  x3do:DEF 'sling' ;
  x3do:rotation ( 0 0 1 -0.82 ) ;
  x3do:translation ( -4 -15.3 0 ) .
:Transform_2_9_9_5_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :sling ;
  x3do:hasChildren :Transform_2_9_9_5_2_1_1, :projectiletransform .
:Transform_2_9_9_5_2_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1 ;
  x3do:hasChildren :Transform_2_9_9_5_2_1_1_1, :LauncheeChoice ;
  x3do:rotation ( 0 1 0 -1.57 ) ;
  x3do:scale ( 1 1.3 1 ) ;
  x3do:translation ( .5 0 -1 ) .
:Transform_2_9_9_5_2_1_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1 ;
  x3do:hasChildren :Transform_2_9_9_5_2_1_1_1_1, :Transform_2_9_9_5_2_1_1_1_2, :Transform_2_9_9_5_2_1_1_1_3 ;
  x3do:rotation ( 0 0 1 1.57 ) .
:Transform_2_9_9_5_2_1_1_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1 ;
  x3do:hasChildren :halfsling, :Transform_2_9_9_5_2_1_1_1_1_2 ;
  x3do:scale ( .3 .3 .3 ) .
:halfsling a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_1 ;
  x3do:hasAppearance :clear ;
  x3do:hasGeometry :Extrusion_2_9_9_5_2_1_1_1_1_1_2 ;
  x3do:DEF 'halfsling' .
:clear a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :halfsling ;
  x3do:hasMaterial :Material_2_9_9_5_2_1_1_1_1_1_1_1 ;
  x3do:DEF 'clear' .
:Material_2_9_9_5_2_1_1_1_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :clear ;
  x3do:transparency .5 .
:Extrusion_2_9_9_5_2_1_1_1_1_1_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :halfsling ;
  x3do:crossSection ( 0 0 0 5 .5 7 1 8 2 9 3 11 3.5 11.2 4 11 5 9 6 8 6.5 7 6.7 5 6.7 0 0 0 ) ;
  x3do:spine ( 0 0 0 .1 0 0 ) .
:Transform_2_9_9_5_2_1_1_1_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_1 ;
  x3do:hasChildren :Torus-USE-3, :Transform_2_9_9_5_2_1_1_1_1_2_2 ;
  x3do:scale ( .3 .3 .3 ) ;
  x3do:translation ( 0 -3.5 11.5 ) .
:Torus-USE-3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_1_2 ;
  owl:sameAs :Torus . # DEF matching this USE
:Transform_2_9_9_5_2_1_1_1_1_2_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_1_2 ;
  x3do:hasChildren :Shape_2_9_9_5_2_1_1_1_1_2_2_1 ;
  x3do:translation ( 0 0 2 ) .
:Shape_2_9_9_5_2_1_1_1_1_2_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_1_2_2 ;
  x3do:hasAppearance :rope-USE-6 ;
  x3do:hasGeometry :Sphere_2_9_9_5_2_1_1_1_1_2_2_1_2 .
:rope-USE-6 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_5_2_1_1_1_1_2_2_1 ;
  owl:sameAs :rope . # DEF matching this USE
:Sphere_2_9_9_5_2_1_1_1_1_2_2_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_9_9_5_2_1_1_1_1_2_2_1 ;
  x3do:radius 1.5 .
:Transform_2_9_9_5_2_1_1_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1 ;
  x3do:hasChildren :halfsling-USE-1, :Transform_2_9_9_5_2_1_1_1_2_2 ;
  x3do:scale ( .3 .3 .3 ) ;
  x3do:translation ( 2 0 0 ) .
:halfsling-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_2 ;
  owl:sameAs :halfsling . # DEF matching this USE
:Transform_2_9_9_5_2_1_1_1_2_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_2 ;
  x3do:hasChildren :Torus-USE-4, :Transform_2_9_9_5_2_1_1_1_2_2_2 ;
  x3do:scale ( .3 .3 .3 ) ;
  x3do:translation ( 0 -3.5 11.3 ) .
:Torus-USE-4 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_2_2 ;
  owl:sameAs :Torus . # DEF matching this USE
:Transform_2_9_9_5_2_1_1_1_2_2_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_2_2 ;
  x3do:hasChildren :Shape_2_9_9_5_2_1_1_1_2_2_2_1 ;
  x3do:translation ( 0 0 2 ) .
:Shape_2_9_9_5_2_1_1_1_2_2_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_2_2_2 ;
  x3do:hasAppearance :rope-USE-7 ;
  x3do:hasGeometry :Sphere_2_9_9_5_2_1_1_1_2_2_2_1_2 .
:rope-USE-7 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_5_2_1_1_1_2_2_2_1 ;
  owl:sameAs :rope . # DEF matching this USE
:Sphere_2_9_9_5_2_1_1_1_2_2_2_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_9_9_5_2_1_1_1_2_2_2_1 ;
  x3do:radius 1.5 .
:Transform_2_9_9_5_2_1_1_1_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1 ;
  x3do:hasChildren :Shape_2_9_9_5_2_1_1_1_3_1 ;
  x3do:translation ( 1 -1 0 ) .
:Shape_2_9_9_5_2_1_1_1_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1_1_3 ;
  x3do:hasGeometry :Extrusion_2_9_9_5_2_1_1_1_3_1_1 ;
  x3do:hasAppearance :clear-USE-1 .
:Extrusion_2_9_9_5_2_1_1_1_3_1_1 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_9_9_5_2_1_1_1_3_1 ;
  x3do:beginCap false ;
  x3do:creaseAngle 0.785 ;
  x3do:crossSection ( 1.00 0.00 0.92 -0.38 0.71 -0.71 0.38 -0.92 0.00 -1.00 -0.38 -0.92 -0.71 -0.71 -0.92 -0.38 -1.00 -0.00 ) ;
  x3do:endCap false ;
  x3do:solid false ;
  x3do:spine ( 0 -1 0 0 1 0 ) .
:clear-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_5_2_1_1_1_3_1 ;
  owl:sameAs :clear . # DEF matching this USE
:LauncheeChoice a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_9_9_5_2_1_1 ;
  x3do:DEF 'LauncheeChoice' ;
  x3do:description 'launcher choice' .
:projectiletransform a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_9_5_2_1 ;
  x3do:hasChildren :projectile ;
  x3do:DEF 'projectiletransform' ;
  x3do:scale ( .01 .01 .01 ) .
:projectile a owl:NamedIndividual, x3do:Switch ;
  x3do:hasParent :projectiletransform ;
  x3do:hasChildren :Group_2_9_9_5_2_1_2_1_1, :Group_2_9_9_5_2_1_2_1_2, :Group_2_9_9_5_2_1_2_1_3 ;
  x3do:DEF 'projectile' ;
  x3do:whichChoice 0 .
:Group_2_9_9_5_2_1_2_1_1 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :projectile ;
  x3do:hasChildren :Transform_2_9_9_5_2_1_2_1_1_1 .
:Transform_2_9_9_5_2_1_2_1_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_9_9_5_2_1_2_1_1 ;
  x3do:hasChildren :Shape_2_9_9_5_2_1_2_1_1_1_1 ;
  x3do:translation ( 0 .7 0 ) .
:Shape_2_9_9_5_2_1_2_1_1_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_9_5_2_1_2_1_1_1 ;
  x3do:hasGeometry :Sphere_2_9_9_5_2_1_2_1_1_1_1_1 ;
  x3do:hasAppearance :black .
:Sphere_2_9_9_5_2_1_2_1_1_1_1_1 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_9_9_5_2_1_2_1_1_1_1 ;
  x3do:radius .7 .
:black a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_9_5_2_1_2_1_1_1_1 ;
  x3do:hasMaterial :Material_2_9_9_5_2_1_2_1_1_1_1_2_1 ;
  x3do:DEF 'black' .
:Material_2_9_9_5_2_1_2_1_1_1_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :black ;
  x3do:diffuseColor ( 0 0 0 ) ;
  x3do:specularColor ( 1 1 1 ) .
:Group_2_9_9_5_2_1_2_1_2 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :projectile ;
  x3do:hasChildren :Transform_2_9_9_5_2_1_2_1_2_1 .
:Transform_2_9_9_5_2_1_2_1_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_9_9_5_2_1_2_1_2 ;
  x3do:hasChildren :Inline_2_9_9_5_2_1_2_1_2_1_1 .
:Inline_2_9_9_5_2_1_2_1_2_1_1 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Transform_2_9_9_5_2_1_2_1_2_1 ;
  x3do:url '"cow.wrl" "http://www.uoguelph.ca/~dchiu/cow.wrl"' .
:Group_2_9_9_5_2_1_2_1_3 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :projectile ;
  x3do:hasChildren :Transform_2_9_9_5_2_1_2_1_3_1 .
:Transform_2_9_9_5_2_1_2_1_3_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_9_9_5_2_1_2_1_3 ;
  x3do:hasChildren :Inline_2_9_9_5_2_1_2_1_3_1_1 ;
  x3do:rotation ( 0 1 0 1.57 ) ;
  x3do:scale ( .4 .4 .4 ) ;
  x3do:translation ( 0 .7 0 ) .
:Inline_2_9_9_5_2_1_2_1_3_1_1 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Transform_2_9_9_5_2_1_2_1_3_1 ;
  x3do:url '"vrml_ginger.wrl" "http://home.inreach.com/ntamura/vrml/vrml_ginger.wrl"' .
:Transform_2_9_10 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :Shape_2_9_10_1 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 0 18 2.5 ) .
:Shape_2_9_10_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_10 ;
  x3do:hasGeometry :Cylinder_2_9_10_1_1 ;
  x3do:hasAppearance :Appearance_2_9_10_1_2 .
:Cylinder_2_9_10_1_1 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_9_10_1 ;
  x3do:height 8 ;
  x3do:radius .4 .
:Appearance_2_9_10_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_10_1 ;
  x3do:hasMaterial :Material_2_9_10_1_2_1 .
:Material_2_9_10_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_10_1_2 ;
  x3do:diffuseColor ( 0 0 0 ) ;
  x3do:specularColor ( 1 1 1 ) .
:verticalweight a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :Transform_2_9_11_1, :Transform_2_9_11_2, :Transform_2_9_11_3, :Transform_2_9_11_4 ;
  x3do:DEF 'verticalweight' .
:Transform_2_9_11_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :verticalweight ;
  x3do:hasChildren :Shape_2_9_11_1_1 ;
  x3do:translation ( 4 18 1.8 ) .
:Shape_2_9_11_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_11_1 ;
  x3do:hasGeometry :Box_2_9_11_1_1_1 ;
  x3do:hasAppearance :wood-USE-5 .
:Box_2_9_11_1_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_9_11_1_1 ;
  x3do:size ( 1 10 .5 ) .
:wood-USE-5 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_11_1_1 ;
  owl:sameAs :wood . # DEF matching this USE
:Transform_2_9_11_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :verticalweight ;
  x3do:hasChildren :Shape_2_9_11_2_1 ;
  x3do:translation ( 4 18 3.2 ) .
:Shape_2_9_11_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_11_2 ;
  x3do:hasGeometry :Box_2_9_11_2_1_1 ;
  x3do:hasAppearance :wood-USE-6 .
:Box_2_9_11_2_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_9_11_2_1 ;
  x3do:size ( 1 10 .5 ) .
:wood-USE-6 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_11_2_1 ;
  owl:sameAs :wood . # DEF matching this USE
:Transform_2_9_11_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :verticalweight ;
  x3do:hasChildren :Shape_2_9_11_3_1 ;
  x3do:translation ( 4 14 2.5 ) .
:Shape_2_9_11_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_11_3 ;
  x3do:hasGeometry :Cylinder_2_9_11_3_1_1 ;
  x3do:hasAppearance :Appearance_2_9_11_3_1_2 .
:Cylinder_2_9_11_3_1_1 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_9_11_3_1 ;
  x3do:height 4 ;
  x3do:radius 1.5 .
:Appearance_2_9_11_3_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_11_3_1 ;
  x3do:hasMaterial :Material_2_9_11_3_1_2_1 .
:Material_2_9_11_3_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_11_3_1_2 ;
  x3do:diffuseColor ( 0 0 0 ) ;
  x3do:specularColor ( 1 1 1 ) .
:Transform_2_9_11_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :verticalweight ;
  x3do:hasChildren :Shape_2_9_11_4_1 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 4 22 2.5 ) .
:Shape_2_9_11_4_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_11_4 ;
  x3do:hasGeometry :Cylinder_2_9_11_4_1_1 ;
  x3do:hasAppearance :Appearance_2_9_11_4_1_2 .
:Cylinder_2_9_11_4_1_1 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_9_11_4_1 ;
  x3do:height 2.5 ;
  x3do:radius .3 .
:Appearance_2_9_11_4_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_11_4_1 ;
  x3do:hasMaterial :Material_2_9_11_4_1_2_1 .
:Material_2_9_11_4_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_11_4_1_2 ;
  x3do:diffuseColor ( 0 0 0 ) ;
  x3do:specularColor ( 1 1 1 ) .
:Transform_2_9_12 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :screw, :Transform_2_9_12_2, :Pin ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:scale ( .2 .2 .2 ) ;
  x3do:translation ( -11.5 -1 2 ) .
:screw a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_12 ;
  x3do:hasChildren :Torus-USE-5, :Transform_2_9_12_1_2 ;
  x3do:DEF 'screw' ;
  x3do:rotation ( 1 0 0 1.57 ) .
:Torus-USE-5 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :screw ;
  owl:sameAs :Torus . # DEF matching this USE
:Transform_2_9_12_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :screw ;
  x3do:hasChildren :Shape_2_9_12_1_2_1 ;
  x3do:rotation ( 1 0 0 -1.57 ) ;
  x3do:translation ( 0 0 7 ) .
:Shape_2_9_12_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_12_1_2 ;
  x3do:hasGeometry :Cylinder_2_9_12_1_2_1_1 ;
  x3do:hasAppearance :Appearance_2_9_12_1_2_1_2 .
:Cylinder_2_9_12_1_2_1_1 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_9_12_1_2_1 ;
  x3do:height 10 ;
  x3do:radius .7 .
:Appearance_2_9_12_1_2_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_12_1_2_1 ;
  x3do:hasMaterial :Material_2_9_12_1_2_1_2_1 .
:Material_2_9_12_1_2_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_12_1_2_1_2 ;
  x3do:specularColor ( 1 1 1 ) .
:Transform_2_9_12_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_12 ;
  x3do:hasChildren :screw-USE-1 ;
  x3do:translation ( 0 0 7 ) .
:screw-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_12_2 ;
  owl:sameAs :screw . # DEF matching this USE
:Pin a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_12 ;
  x3do:hasChildren :screw-USE-2 ;
  x3do:DEF 'Pin' ;
  x3do:rotation ( 1 0 0 -1.57 ) ;
  x3do:translation ( 0 0 -3 ) .
:screw-USE-2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Pin ;
  owl:sameAs :screw . # DEF matching this USE
:Transform_2_9_13 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :plank-USE-6, :angledsupport-USE-1, :angledsupport2-USE-1, :verticalsupport-USE-1, :horizontalsupport-USE-1, :Transform_2_9_13_6, :Transform_2_9_13_7, :Transform_2_9_13_8 ;
  x3do:translation ( 0 0 5 ) .
:plank-USE-6 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_13 ;
  owl:sameAs :plank . # DEF matching this USE
:angledsupport-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13 ;
  owl:sameAs :angledsupport . # DEF matching this USE
:angledsupport2-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13 ;
  owl:sameAs :angledsupport2 . # DEF matching this USE
:verticalsupport-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13 ;
  owl:sameAs :verticalsupport . # DEF matching this USE
:horizontalsupport-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13 ;
  owl:sameAs :horizontalsupport . # DEF matching this USE
:Transform_2_9_13_6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13 ;
  x3do:hasChildren :horizontalsupport-USE-2 ;
  x3do:rotation ( 0 1 0 1.57 ) ;
  x3do:scale ( .6 1 1 ) ;
  x3do:translation ( 0 -11 -2.5 ) .
:horizontalsupport-USE-2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13_6 ;
  owl:sameAs :horizontalsupport . # DEF matching this USE
:Transform_2_9_13_7 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13 ;
  x3do:hasChildren :Transform_2_9_13_7_1 ;
  x3do:rotation ( 0 0 1 -1.57 ) ;
  x3do:scale ( .6 1 1 ) ;
  x3do:translation ( 0 5 -10 ) .
:Transform_2_9_13_7_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13_7 ;
  x3do:hasChildren :plank-USE-7 ;
  x3do:rotation ( 0 1 0 .4 ) .
:plank-USE-7 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_13_7_1 ;
  owl:sameAs :plank . # DEF matching this USE
:Transform_2_9_13_8 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13 ;
  x3do:hasChildren :panel-USE-1 ;
  x3do:translation ( 0 0 .6 ) .
:panel-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_13_8 ;
  owl:sameAs :panel . # DEF matching this USE
:Transform_2_9_14 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :Axle, :Transform_2_9_14_2, :Transform_2_9_14_3 ;
  x3do:translation ( 10 -1 2.5 ) .
:Axle a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_14 ;
  x3do:hasGeometry :Box_2_9_14_1_1 ;
  x3do:hasAppearance :wood-USE-7 ;
  x3do:DEF 'Axle' .
:Box_2_9_14_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Axle ;
  x3do:size ( 1 1 8 ) .
:wood-USE-7 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Axle ;
  owl:sameAs :wood . # DEF matching this USE
:Transform_2_9_14_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_14 ;
  x3do:hasChildren :wheel, :tracks, :Transform_2_9_14_2_3 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 0 0 4.5 ) .
:wheel a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_14_2 ;
  x3do:hasGeometry :Cylinder_2_9_14_2_1_1 ;
  x3do:hasAppearance :wood-USE-8 ;
  x3do:DEF 'wheel' .
:Cylinder_2_9_14_2_1_1 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :wheel ;
  x3do:radius 2 .
:wood-USE-8 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :wheel ;
  owl:sameAs :wood . # DEF matching this USE
:tracks a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_14_2 ;
  x3do:hasGeometry :Sphere_2_9_14_2_2_1 ;
  x3do:hasAppearance :black-USE-1 ;
  x3do:DEF 'tracks' .
:Sphere_2_9_14_2_2_1 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :tracks ;
  x3do:radius 1.5 .
:black-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :tracks ;
  owl:sameAs :black . # DEF matching this USE
:Transform_2_9_14_2_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_14_2 ;
  x3do:hasChildren :hub ;
  x3do:translation ( 0 .55 0 ) .
:hub a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_14_2_3 ;
  x3do:hasGeometry :Sphere_2_9_14_2_3_1_1 ;
  x3do:hasAppearance :black-USE-2 ;
  x3do:DEF 'hub' .
:Sphere_2_9_14_2_3_1_1 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :hub ;
  x3do:radius 1.5 .
:black-USE-2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :hub ;
  owl:sameAs :black . # DEF matching this USE
:Transform_2_9_14_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_14 ;
  x3do:hasChildren :wheel-USE-1, :tracks-USE-1, :Transform_2_9_14_3_3 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 0 0 -4.5 ) .
:wheel-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_14_3 ;
  owl:sameAs :wheel . # DEF matching this USE
:tracks-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_14_3 ;
  owl:sameAs :tracks . # DEF matching this USE
:Transform_2_9_14_3_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_14_3 ;
  x3do:hasChildren :hub-USE-1 ;
  x3do:translation ( 0 -0.55 0 ) .
:hub-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_14_3_3 ;
  owl:sameAs :hub . # DEF matching this USE
:Transform_2_9_15 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9 ;
  x3do:hasChildren :Axle-USE-1, :Transform_2_9_15_2, :Transform_2_9_15_3, :Transform_2_9_15_4, :ProjectileTransform, :Transform_2_9_15_6, :Transform_2_9_15_7, :WeightScript, :LauncheeScript, :PigdogMonkScript, :Mover ;
  x3do:translation ( -10 -1 2.5 ) .
:Axle-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_15 ;
  owl:sameAs :Axle . # DEF matching this USE
:Transform_2_9_15_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasChildren :wheel-USE-2, :tracks-USE-2, :Transform_2_9_15_2_3 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 0 0 4.5 ) .
:wheel-USE-2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_15_2 ;
  owl:sameAs :wheel . # DEF matching this USE
:tracks-USE-2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_15_2 ;
  owl:sameAs :tracks . # DEF matching this USE
:Transform_2_9_15_2_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_2 ;
  x3do:hasChildren :hub-USE-2 ;
  x3do:translation ( 0 .55 0 ) .
:hub-USE-2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_15_2_3 ;
  owl:sameAs :hub . # DEF matching this USE
:Transform_2_9_15_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasChildren :wheel-USE-3, :tracks-USE-3, :Transform_2_9_15_3_3 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 0 0 -4.5 ) .
:wheel-USE-3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_15_3 ;
  owl:sameAs :wheel . # DEF matching this USE
:tracks-USE-3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_15_3 ;
  owl:sameAs :tracks . # DEF matching this USE
:Transform_2_9_15_3_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_3 ;
  x3do:hasChildren :hub-USE-3 ;
  x3do:translation ( 0 -0.55 0 ) .
:hub-USE-3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_15_3_3 ;
  owl:sameAs :hub . # DEF matching this USE
:Transform_2_9_15_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasChildren :Transform_2_9_15_4_1, :launch-USE-2, :Transform_2_9_15_4_3, :Transform_2_9_15_4_4 ;
  x3do:rotation ( 0 1 0 -0.6 ) ;
  x3do:translation ( 0 100 400 ) .
:Transform_2_9_15_4_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_4 ;
  x3do:hasChildren :Viewpoint_2_9_15_4_1_1 ;
  x3do:translation ( 1 3 0 ) .
:Viewpoint_2_9_15_4_1_1 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Transform_2_9_15_4_1 ;
  x3do:description 'Side' .
:launch-USE-2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_4 ;
  owl:sameAs :launch . # DEF matching this USE
:Transform_2_9_15_4_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_4 ;
  x3do:hasChildren :LauncheeChoice-USE-1, :projectilename-USE-1, :Transform_2_9_15_4_3_3 .
:LauncheeChoice-USE-1 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_9_15_4_3 ;
  owl:sameAs :LauncheeChoice . # DEF matching this USE
:projectilename-USE-1 a owl:NamedIndividual, x3do:Switch ;
  x3do:hasParent :Transform_2_9_15_4_3 ;
  owl:sameAs :projectilename . # DEF matching this USE
:Transform_2_9_15_4_3_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_4_3 ;
  x3do:hasChildren :Shape_2_9_15_4_3_3_1 ;
  x3do:translation ( 2.5 0 0 ) .
:Shape_2_9_15_4_3_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_15_4_3_3 ;
  x3do:hasGeometry :Box_2_9_15_4_3_3_1_1 ;
  x3do:hasAppearance :Appearance_2_9_15_4_3_3_1_2 .
:Box_2_9_15_4_3_3_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_9_15_4_3_3_1 ;
  x3do:size ( 5 .5 .5 ) .
:Appearance_2_9_15_4_3_3_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_15_4_3_3_1 ;
  x3do:hasMaterial :Material_2_9_15_4_3_3_1_2_1 .
:Material_2_9_15_4_3_3_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_15_4_3_3_1_2 ;
  x3do:transparency 1 .
:Transform_2_9_15_4_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_4 ;
  x3do:hasChildren :weightselector-USE-1, :Weight-USE-1, :Transform_2_9_15_4_4_3 ;
  x3do:scale ( .5 .5 .5 ) ;
  x3do:translation ( 0 -1 0 ) .
:weightselector-USE-1 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_9_15_4_4 ;
  owl:sameAs :weightselector . # DEF matching this USE
:Weight-USE-1 a owl:NamedIndividual, x3do:Switch ;
  x3do:hasParent :Transform_2_9_15_4_4 ;
  owl:sameAs :Weight . # DEF matching this USE
:Transform_2_9_15_4_4_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_4_4 ;
  x3do:hasChildren :Shape_2_9_15_4_4_3_1 ;
  x3do:translation ( 8 0 0 ) .
:Shape_2_9_15_4_4_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_9_15_4_4_3 ;
  x3do:hasGeometry :Box_2_9_15_4_4_3_1_1 ;
  x3do:hasAppearance :Appearance_2_9_15_4_4_3_1_2 .
:Box_2_9_15_4_4_3_1_1 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_9_15_4_4_3_1 ;
  x3do:size ( 17 1 .5 ) .
:Appearance_2_9_15_4_4_3_1_2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_9_15_4_4_3_1 ;
  x3do:hasMaterial :Material_2_9_15_4_4_3_1_2_1 .
:Material_2_9_15_4_4_3_1_2_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_9_15_4_4_3_1_2 ;
  x3do:transparency 1 .
:ProjectileTransform a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasChildren :projectile-USE-1, :Transform_2_9_15_5_2 ;
  x3do:DEF 'ProjectileTransform' ;
  x3do:translation ( 14.25 1.25 0 ) .
:projectile-USE-1 a owl:NamedIndividual, x3do:Switch ;
  x3do:hasParent :ProjectileTransform ;
  owl:sameAs :projectile . # DEF matching this USE
:Transform_2_9_15_5_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :ProjectileTransform ;
  x3do:hasChildren :Viewpoint_2_9_15_5_2_1 ;
  x3do:rotation ( 0 1 0 1.57 ) ;
  x3do:translation ( 0 1 0 ) .
:Viewpoint_2_9_15_5_2_1 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Transform_2_9_15_5_2 ;
  x3do:description 'Projectile Cam' ;
  x3do:position ( 0 0 15 ) .
:Transform_2_9_15_6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasChildren :Front ;
  x3do:translation ( 20 2 0 ) .
:Front a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_6 ;
  x3do:hasChildren :Viewpoint_2_9_15_6_1_1 ;
  x3do:DEF 'Front' ;
  x3do:rotation ( 0 1 0 1.57 ) .
:Viewpoint_2_9_15_6_1_1 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Front ;
  x3do:description 'Fore' .
:Transform_2_9_15_7 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasChildren :Transform_2_9_15_7_1 ;
  x3do:translation ( -8 4 0 ) .
:Transform_2_9_15_7_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_9_15_7 ;
  x3do:hasChildren :Viewpoint_2_9_15_7_1_1 ;
  x3do:rotation ( 0 1 0 -1.57 ) .
:Viewpoint_2_9_15_7_1_1 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Transform_2_9_15_7_1 ;
  x3do:description 'Aft' .
:WeightScript a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasField :field_2_9_15_8_1, :field_2_9_15_8_2, :field_2_9_15_8_3 ;
  x3do:DEF 'WeightScript' ;
  x3do:sourceCode """
ecmascript:


function initialize ()
{
	whichchoice =0;
	CounterWeight=100;
}

function set_boolean ( boolean_input, eventTime)
{

	if ( boolean_input== false ) { return; } // ignore the unclick
        whichchoice = whichchoice +1;
	if (whichchoice == 0)CounterWeight=50.00;
	if (whichchoice == 1)CounterWeight=500.00;
	if (whichchoice == 2)CounterWeight=1000.00;
	if (whichchoice == 3)CounterWeight=10000.00;
        if ( whichchoice ==4 ) { whichchoice = 0; CounterWeight=50; }


        Browser.println ('CounterWeight ='+CounterWeight);
}
""" .
:field_2_9_15_8_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :WeightScript ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_boolean' ;
  x3do:type 'SFBool' .
:field_2_9_15_8_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :WeightScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'whichchoice' ;
  x3do:type 'SFInt32' .
:field_2_9_15_8_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :WeightScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'CounterWeight' ;
  x3do:type 'SFFloat' .
:LauncheeScript a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasField :field_2_9_15_9_1, :field_2_9_15_9_2, :field_2_9_15_9_3 ;
  x3do:DEF 'LauncheeScript' ;
  x3do:sourceCode """
ecmascript:

function set_boolean (boolean_input, eventTime)
{
	if ( boolean_input== false ) { return; } // ignore unclick
        whichchoice = whichchoice +1;
        if (whichchoice == 0)ProjectileWeight=10.00;
        if (whichchoice == 1)ProjectileWeight=1000.00;
	if (whichchoice == 2)ProjectileWeight=5;

	if ( whichchoice ==3 ) { whichchoice = 0; ProjectileWeight=10.00; }
	Browser.println ('Projectile Weight'+ProjectileWeight);
}
""" .
:field_2_9_15_9_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :LauncheeScript ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_boolean' ;
  x3do:type 'SFBool' .
:field_2_9_15_9_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :LauncheeScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'whichchoice' ;
  x3do:type 'SFInt32' .
:field_2_9_15_9_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :LauncheeScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'ProjectileWeight' ;
  x3do:type 'SFFloat' .
:PigdogMonkScript a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasField :field_2_9_15_10_1, :field_2_9_15_10_2 ;
  x3do:DEF 'PigdogMonkScript' ;
  x3do:sourceCode """
ecmascript:

function set_boolean (boolean_input, eventTime)
{
	if ( boolean_input== false ) { return; } // ignore unclick

        whichchoice = whichchoice +1;

        if ( whichchoice ==2 )  whichchoice = 0;


}
""" .
:field_2_9_15_10_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :PigdogMonkScript ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_boolean' ;
  x3do:type 'SFBool' .
:field_2_9_15_10_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :PigdogMonkScript ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'whichchoice' ;
  x3do:type 'SFInt32' .
:Mover a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Transform_2_9_15 ;
  x3do:hasField :field_2_9_15_11_1, :field_2_9_15_11_2, :field_2_9_15_11_3, :field_2_9_15_11_4, :field_2_9_15_11_5, :field_2_9_15_11_6, :field_2_9_15_11_7 ;
  x3do:DEF 'Mover' ;
  x3do:sourceCode """
ecmascript:

function initialize ()
{
	MassCounterWeight=100;
	MassProjectileWeight=10;
	Browser.println ('MassCounterWeight =' + MassCounterWeight);
	Browser.println ('MassProjectileWeight =' + MassProjectileWeight);
}

function set_MassProjectileWeight (value, timestamp)
{
	MassProjectileWeight = value;
	Browser.println ('new MassProjectileWeight =' + MassProjectileWeight);
}
function set_MassCounterWeight (value2, timestamp)
{
	MassCounterWeight = value2;
	Browser.println ('new MassCounterWeight =' + MassCounterWeight);
}


function set_fraction ( fraction, eventTime )
{
	var TrebuchetHeight=45;
	var Height =25;
      	x = (2*(MassCounterWeight/MassProjectileWeight)*Height*fraction)-.5*TrebuchetHeight;
	// start at TrebuchetHeight and keep along z axis (z=zero)
	y =  (MassCounterWeight/MassProjectileWeight)*Height*Math.sin(fraction*3.14);
        z = 0;
        transparent = new SFVec3f (1,1,1);
     if (y <1.5*TrebuchetHeight  )if (x<TrebuchetHeight)
		{
		x=x-10;
		y=y+1;
		transparent = new SFVec3f(.01, .01, .01);
			}

	value_changed = new SFVec3f (x, y, z);
	Browser.println ('x=' + value_changed[0] + ' y=' + value_changed[1] + ' z=' + value_changed[2]);
}
""" .
:field_2_9_15_11_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Mover ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_fraction' ;
  x3do:type 'SFFloat' .
:field_2_9_15_11_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Mover ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_MassCounterWeight' ;
  x3do:type 'SFFloat' .
:field_2_9_15_11_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Mover ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_MassProjectileWeight' ;
  x3do:type 'SFFloat' .
:field_2_9_15_11_4 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Mover ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'MassCounterWeight' ;
  x3do:type 'SFFloat' ;
  x3do:value 1 .
:field_2_9_15_11_5 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Mover ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'MassProjectileWeight' ;
  x3do:type 'SFFloat' ;
  x3do:value 1 .
:field_2_9_15_11_6 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Mover ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'transparent' ;
  x3do:type 'SFVec3f' .
:field_2_9_15_11_7 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :Mover ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'value_changed' ;
  x3do:type 'SFVec3f' .
:clock a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Scene ;
  x3do:DEF 'clock' ;
  x3do:cycleInterval '10' .
:verticalweightpath a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Scene ;
  x3do:DEF 'verticalweightpath' ;
  x3do:key ( 0 .1 .2 .2 .3 .9 ) ;
  x3do:keyValue ( 1.4 1.6 0 1 -8 0 -3.5 -12 0 -3.5 -12 0 1.2 -8 0 1.4 1.6 0 ) .
:flingerangles a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :Scene ;
  x3do:DEF 'flingerangles' ;
  x3do:key ( 0 .1 .2 .2 .3 .9 ) ;
  x3do:keyValue ( 0 0 1 .82 0 0 1 -0.77 0 0 1 -1.57 0 0 1 -1.57 0 0 1 -0.77 0 0 1 .82 ) .
:pinpath a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Scene ;
  x3do:DEF 'pinpath' ;
  x3do:key ( 0 .01 .95 1 ) ;
  x3do:keyValue ( 0 0 -3 0 0 -10 0 0 -10 0 0 -3 ) .
:RnSAngels a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :Scene ;
  x3do:DEF 'RnSAngels' ;
  x3do:key ( 0 .7 1 ) ;
  x3do:keyValue ( 0 0 1 0 0 0 1 -3.14 0 0 1 0 ) .
:invisiable a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Scene ;
  x3do:DEF 'invisiable' ;
  x3do:key ( 0 .2 .98 .99 ) ;
  x3do:keyValue ( 1 1 1 .01 .01 .01 .01 .01 .01 1 1 1 ) .
:ROUTE_2_16 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'clock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'invisiable' .
:ROUTE_2_17 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'invisiable' ;
  x3do:toField 'set_scale' ;
  x3do:toNode 'projectiletransform' .
:ROUTE_2_18 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'CounterWeight' ;
  x3do:fromNode 'WeightScript' ;
  x3do:toField 'set_MassCounterWeight' ;
  x3do:toNode 'Mover' .
:ROUTE_2_19 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'ProjectileWeight' ;
  x3do:fromNode 'LauncheeScript' ;
  x3do:toField 'set_MassProjectileWeight' ;
  x3do:toNode 'Mover' .
:ROUTE_2_20 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'clock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'Mover' .
:ROUTE_2_21 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'Mover' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'ProjectileTransform' .
:ROUTE_2_22 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'transparent' ;
  x3do:fromNode 'Mover' ;
  x3do:toField 'set_scale' ;
  x3do:toNode 'ProjectileTransform' .
:ROUTE_2_23 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'Launch' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'clock' .
:ROUTE_2_24 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'isActive' ;
  x3do:fromNode 'Launch' ;
  x3do:toField 'set_boolean' ;
  x3do:toNode 'PigdogMonkScript' .
:ROUTE_2_25 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'Launch' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'PigDogSound' .
:ROUTE_2_26 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'Launch' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'MonkSound' .
:ROUTE_2_27 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'whichchoice' ;
  x3do:fromNode 'PigdogMonkScript' ;
  x3do:toField 'whichChoice' ;
  x3do:toNode 'PigdogMonk' .
:ROUTE_2_28 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'LauncheeChoice' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'HolyHandGrenadeSound' .
:ROUTE_2_29 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'LauncheeChoice' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'CowSound' .
:ROUTE_2_30 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'LauncheeChoice' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'HamsterSound' .
:ROUTE_2_31 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'isActive' ;
  x3do:fromNode 'LauncheeChoice' ;
  x3do:toField 'set_boolean' ;
  x3do:toNode 'LauncheeScript' .
:ROUTE_2_32 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'whichchoice' ;
  x3do:fromNode 'LauncheeScript' ;
  x3do:toField 'whichChoice' ;
  x3do:toNode 'projectile' .
:ROUTE_2_33 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'whichchoice' ;
  x3do:fromNode 'LauncheeScript' ;
  x3do:toField 'whichChoice' ;
  x3do:toNode 'projectilename' .
:ROUTE_2_34 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'isActive' ;
  x3do:fromNode 'weightselector' ;
  x3do:toField 'set_boolean' ;
  x3do:toNode 'WeightScript' .
:ROUTE_2_35 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'whichchoice' ;
  x3do:fromNode 'WeightScript' ;
  x3do:toField 'whichChoice' ;
  x3do:toNode 'Weight' .
:ROUTE_2_36 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'clock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'flingerangles' .
:ROUTE_2_37 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'flingerangles' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'flinger' .
:ROUTE_2_38 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'clock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'verticalweightpath' .
:ROUTE_2_39 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'verticalweightpath' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'verticalweight' .
:ROUTE_2_40 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'clock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'pinpath' .
:ROUTE_2_41 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'pinpath' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Pin' .
