@prefix : . @prefix owl: . @prefix rdf: . @prefix rdfs: . @prefix schema: . @prefix dcterms: . @prefix xsd: . @prefix x3d: . @prefix x3do: . :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_1 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'M198Howitzer.x3d' ; x3do:name 'title' . :meta_1_2 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'M198 Howitzer to scale' ; x3do:name 'description' . :meta_1_3 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'J.P. McDonough' ; x3do:name 'creator' . :meta_1_4 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content '7 January 2004' ; x3do:name 'created' . :meta_1_5 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content '28 November 2019' ; x3do:name 'modified' . :meta_1_6 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'M198-dvic502.jpg' ; x3do:name 'reference' . :meta_1_7 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'Impact.avi' ; x3do:name 'reference' . :meta_1_8 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'http://www.army.mil/fact_files_site/m198' ; x3do:name 'reference' . :meta_1_9 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'https://www.fas.org/man/dod-101/sys/land/m198.htm' ; x3do:name 'reference' . :meta_1_10 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'https://savage.nps.edu/Savage/Weapons/Guns/M198Howitzer.x3d' ; x3do:name 'identifier' . :meta_1_11 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'X3D-Edit, https://savage.nps.edu/X3D-Edit' ; x3do:name 'generator' . :meta_1_12 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content '../../license.html' ; x3do:name 'license' . :meta dcterms:title "M198Howitzer.x3d" . :meta dcterms:description "M198 Howitzer to scale" . :meta dcterms:creator "J.P. McDonough" . :meta dcterms:created "7 January 2004" . :meta dcterms:modified "28 November 2019" . :meta dcterms:reference "M198-dvic502.jpg" . :meta dcterms:reference "Impact.avi" . :meta dcterms:reference "http://www.army.mil/fact_files_site/m198" . :meta dcterms:reference "https://www.fas.org/man/dod-101/sys/land/m198.htm" . :meta dcterms:identifier "https://savage.nps.edu/Savage/Weapons/Guns/M198Howitzer.x3d" . :meta dcterms:generator "X3D-Edit, https://savage.nps.edu/X3D-Edit" . :meta dcterms:license "../../license.html" . :Scene a owl:NamedIndividual, x3do:Scene ; x3do:hasParent :X3D ; x3do:hasChildren :WorldInfo_2_1, :ExampleViewPositionOrientation, :Sound_2_4, :betweenTrails, :sideViewClose, :sideView, :underTube, :downBarrel, :M198_Howitzer, :Background_2_11, :target, :theGround, :fireTheRound, :targetSphere, :Transform_2_19, :Transform_2_20, :Transform_2_21, :Transform_2_22 ; x3do:hasExternProtoDeclare :ExternProtoDeclare_2_2 ; x3do:hasROUTE :ROUTE_2_14, :ROUTE_2_15, :ROUTE_2_16, :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 . :WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ; x3do:hasParent :Scene ; x3do:title 'M198Howitzer.x3d' . :ExternProtoDeclare_2_2 a owl:NamedIndividual, x3do:ExternProtoDeclare ; x3do:hasParent :Scene ; x3do:hasField :field_2_2_1, :field_2_2_2, :field_2_2_3, :field_2_2_4, :field_2_2_5, :field_2_2_6 ; x3do:appinfo 'ViewPositionOrientation provides provides console output of local position and orientation as user navigates' ; x3do:name 'ViewPositionOrientation' ; x3do:url '"../../../Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "https://savage.nps.edu/Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "../../../Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation" "https://savage.nps.edu/Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation"' . :field_2_2_1 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'inputOutput' ; x3do:appinfo 'Whether or not ViewPositionOrientation sends output to console.' ; x3do:name 'enabled' ; x3do:type 'SFBool' . :field_2_2_2 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'initializeOnly' ; x3do:appinfo 'Output internal trace messages for debugging this node - developer use only can be ignored.' ; x3do:name 'traceEnabled' ; x3do:type 'SFBool' . :field_2_2_3 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'inputOnly' ; x3do:appinfo 'Ability to turn output tracing on/off at runtime.' ; x3do:name 'set_traceEnabled' ; x3do:type 'SFBool' . :field_2_2_4 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'outputOnly' ; x3do:appinfo 'Output local position.' ; x3do:name 'position_changed' ; x3do:type 'SFVec3f' . :field_2_2_5 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'outputOnly' ; x3do:appinfo 'Output local orientation.' ; x3do:name 'orientation_changed' ; x3do:type 'SFRotation' . :field_2_2_6 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'outputOnly' ; x3do:appinfo 'MFString value of new Viewpoint' ; x3do:name 'outputViewpointString' ; x3do:type 'MFString' . :ExampleViewPositionOrientation a owl:NamedIndividual, x3do:ProtoInstance ; x3do:hasParent :Scene ; x3do:hasFieldValue :fieldValue_2_3_1 ; x3do:DEF 'ExampleViewPositionOrientation' ; x3do:name 'ViewPositionOrientation' . :fieldValue_2_3_1 a owl:NamedIndividual, x3do:fieldValue ; x3do:hasParent :ExampleViewPositionOrientation ; x3do:name 'enabled' ; x3do:value false . :Sound_2_4 a owl:NamedIndividual, x3do:Sound ; x3do:hasParent :Scene ; x3do:hasSource :CannonFireSound ; x3do:maxBack 100 ; x3do:maxFront 100 ; x3do:minBack 0.01 ; x3do:minFront 0.01 . :CannonFireSound a owl:NamedIndividual, x3do:AudioClip ; x3do:hasParent :Sound_2_4 ; x3do:DEF 'CannonFireSound' ; x3do:description 'Cannon fire sound' ; x3do:url '"../../GroundVehicles/T72M/CannonFire.wav" "https://savage.nps.edu/Savage/GroundVehicles/T72M/CannonFire.wav"' . :betweenTrails a owl:NamedIndividual, x3do:Viewpoint ; x3do:hasParent :Scene ; x3do:DEF 'betweenTrails' ; x3do:description 'between Trails' ; x3do:orientation ( -1 0 0 0 ) ; x3do:position ( 0 1.4 10 ) . :sideViewClose a owl:NamedIndividual, x3do:Viewpoint ; x3do:hasParent :Scene ; x3do:DEF 'sideViewClose' ; x3do:description 'Side View Close' ; x3do:orientation ( 0.007 0.997 0.076 1.7635 ) ; x3do:position ( 9.8 2.2 -1.8 ) . :sideView a owl:NamedIndividual, x3do:Viewpoint ; x3do:hasParent :Scene ; x3do:DEF 'sideView' ; x3do:description 'from Side' ; x3do:orientation ( 0 1 0 1.57 ) ; x3do:position ( 320 10 -160 ) . :underTube a owl:NamedIndividual, x3do:Viewpoint ; x3do:hasParent :Scene ; x3do:DEF 'underTube' ; x3do:description 'under Tube' ; x3do:orientation ( -0.02 -0.982 -0.19 3.1266 ) ; x3do:position ( 0 5.7 -7.4 ) . :downBarrel a owl:NamedIndividual, x3do:Viewpoint ; x3do:hasParent :Scene ; x3do:DEF 'downBarrel' ; x3do:description 'down Barrel' ; x3do:orientation ( 0.012 -0.925 -0.381 3.138 ) ; x3do:position ( -0.1 7.6 -6.7 ) . :M198_Howitzer a owl:NamedIndividual, x3do:Group ; x3do:hasParent :Scene ; x3do:hasChildren :LowerCar, :upperCarriagePiece ; x3do:DEF 'M198_Howitzer' . :LowerCar a owl:NamedIndividual, x3do:Group ; x3do:hasParent :M198_Howitzer ; x3do:hasChildren :Shape_2_10_1_1, :rightTrailMover, :leftTrailMover, :Transform_2_10_1_4, :wheelRaiser, :AnimationControl ; x3do:DEF 'LowerCar' . :Shape_2_10_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :LowerCar ; x3do:hasGeometry :LowerCarriage1 ; x3do:hasAppearance :camiPaint . :LowerCarriage1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_10_1_1 ; x3do:DEF 'LowerCarriage1' ; x3do:height .5 . :camiPaint a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_1_1 ; x3do:hasMaterial :cami ; x3do:hasTexture :camo ; x3do:DEF 'camiPaint' . :cami a owl:NamedIndividual, x3do:Material ; x3do:hasParent :camiPaint ; x3do:DEF 'cami' ; x3do:ambientIntensity 0.25 ; x3do:diffuseColor ( 0.054 0.233 0.39 ) ; x3do:shininess 0 . :camo a owl:NamedIndividual, x3do:ImageTexture ; x3do:hasParent :camiPaint ; x3do:DEF 'camo' ; x3do:repeatS false ; x3do:repeatT false ; x3do:url '"greenCamo.jpg" "https://savage.nps.edu/Savage/Weapons/Guns/greenCamo.jpg"' . :rightTrailMover a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :LowerCar ; x3do:hasChildren :RightTrail, :RightSpade, :trailSpreader ; x3do:hasROUTE :ROUTE_2_10_1_2_4 ; x3do:DEF 'rightTrailMover' ; x3do:translation ( .1 0 0 ) . :RightTrail a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rightTrailMover ; x3do:hasChildren :brakeResevoir, :basePlateClamp, :Transform_2_10_1_2_1_3, :Transform_2_10_1_2_1_4 ; x3do:DEF 'RightTrail' ; x3do:rotation ( 0 1 0 -1.1 ) ; x3do:translation ( 0 -0.3 0 ) . :brakeResevoir a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :RightTrail ; x3do:hasChildren :Transform_2_10_1_2_1_1_1 ; x3do:DEF 'brakeResevoir' ; x3do:rotation ( 0 1 0 1.57 ) ; x3do:translation ( 2 .27 0 ) . :Transform_2_10_1_2_1_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :brakeResevoir ; x3do:hasChildren :Shape_2_10_1_2_1_1_1_1 ; x3do:rotation ( 1 0 0 1.57 ) ; x3do:scale ( 1.6 1 1.2 ) . :Shape_2_10_1_2_1_1_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_2_1_1_1 ; x3do:hasGeometry :Cylinder_2_10_1_2_1_1_1_1_1 ; x3do:hasAppearance :camiPaint-USE-1 . :Cylinder_2_10_1_2_1_1_1_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_10_1_2_1_1_1_1 ; x3do:height 1.2 ; x3do:radius .15 . :camiPaint-USE-1 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_1_2_1_1_1_1 ; owl:sameAs :camiPaint . # DEF matching this USE :basePlateClamp a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :RightTrail ; x3do:hasChildren :clamp ; x3do:DEF 'basePlateClamp' ; x3do:rotation ( 0 1 0 1.7 ) ; x3do:scale ( .05 .05 .05 ) ; x3do:translation ( 2.7 .6 -0.2 ) . :clamp a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :basePlateClamp ; x3do:hasGeometry :Extrusion_2_10_1_2_1_2_1_1 ; x3do:hasAppearance :camiPaint-USE-2 ; x3do:DEF 'clamp' . :Extrusion_2_10_1_2_1_2_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :clamp ; x3do:crossSection ( 0 0 1 0 1 2 3 2 3 3 0 3 0 0 ) ; x3do:solid false ; x3do:spine ( 0 0 0 2 0 0 ) . :camiPaint-USE-2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :clamp ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_1_2_1_3 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :RightTrail ; x3do:hasChildren :clamp-USE-1 ; x3do:rotation ( 0 1 0 -1.7 ) ; x3do:scale ( .05 .05 .05 ) ; x3do:translation ( 1.7 .6 -0.2 ) . :clamp-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_2_1_3 ; owl:sameAs :clamp . # DEF matching this USE :Transform_2_10_1_2_1_4 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :RightTrail ; x3do:hasChildren :Transform_2_10_1_2_1_4_1 ; x3do:rotation ( 1 0 0 -1.57 ) . :Transform_2_10_1_2_1_4_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_1_2_1_4 ; x3do:hasChildren :trail ; x3do:scale ( .22 .3 .19 ) . :trail a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_2_1_4_1 ; x3do:hasGeometry :Extrusion_2_10_1_2_1_4_1_1_1 ; x3do:hasAppearance :camiPaint-USE-3 ; x3do:DEF 'trail' . :Extrusion_2_10_1_2_1_4_1_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :trail ; x3do:crossSection ( 0 0 0 3 16 2.2 20 1 20 -1 18.5 -1 18 0 0 0 ) ; x3do:spine ( 0 0 0 0 1.5 0 ) . :camiPaint-USE-3 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :trail ; owl:sameAs :camiPaint . # DEF matching this USE :RightSpade a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rightTrailMover ; x3do:hasChildren :Transform_2_10_1_2_2_1 ; x3do:DEF 'RightSpade' ; x3do:rotation ( 0 1 0 .5 ) ; x3do:scale ( .07 .1 .1 ) ; x3do:translation ( 2.9 -0.45 3.45 ) . :Transform_2_10_1_2_2_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :RightSpade ; x3do:hasChildren :Transform_2_10_1_2_2_1_1 ; x3do:rotation ( 0 1 0 3.14 ) . :Transform_2_10_1_2_2_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_1_2_2_1 ; x3do:hasChildren :spade ; x3do:rotation ( 1 0 0 -1.57 ) . :spade a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_2_2_1_1 ; x3do:hasAppearance :camiPaint-USE-4 ; x3do:hasGeometry :Extrusion_2_10_1_2_2_1_1_1_2 ; x3do:DEF 'spade' . :camiPaint-USE-4 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :spade ; owl:sameAs :camiPaint . # DEF matching this USE :Extrusion_2_10_1_2_2_1_1_1_2 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :spade ; x3do:crossSection ( 0 0 5 0 4 -5 4 -4 3.85 -3.5 3.75 -3 3.5 -2 3 -1 0 -0.5 0 0 ) ; x3do:spine ( 0 0 0 20 0 0 ) . :trailSpreader a owl:NamedIndividual, x3do:CylinderSensor ; x3do:hasParent :rightTrailMover ; x3do:DEF 'trailSpreader' ; x3do:description 'Used to spread the trails' ; x3do:maxAngle 0 ; x3do:minAngle -0.5 . :ROUTE_2_10_1_2_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :rightTrailMover ; x3do:fromField 'rotation_changed' ; x3do:fromNode 'trailSpreader' ; x3do:toField 'set_rotation' ; x3do:toNode 'rightTrailMover' . :leftTrailMover a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :LowerCar ; x3do:hasChildren :leftTrail, :leftSpade, :lTrailSpreader ; x3do:hasROUTE :ROUTE_2_10_1_3_4 ; x3do:DEF 'leftTrailMover' ; x3do:translation ( -0.1 0 0 ) . :leftTrail a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftTrailMover ; x3do:hasChildren :lbasePlateClamp, :Transform_2_10_1_3_1_2, :Transform_2_10_1_3_1_3 ; x3do:DEF 'leftTrail' ; x3do:rotation ( 0 1 0 -2.1 ) ; x3do:translation ( -0.5 -0.3 -0.25 ) . :lbasePlateClamp a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftTrail ; x3do:hasChildren :clamp-USE-2 ; x3do:DEF 'lbasePlateClamp' ; x3do:rotation ( 0 1 0 1.7 ) ; x3do:scale ( .05 .05 .05 ) ; x3do:translation ( 2.7 .6 -0.2 ) . :clamp-USE-2 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :lbasePlateClamp ; owl:sameAs :clamp . # DEF matching this USE :Transform_2_10_1_3_1_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftTrail ; x3do:hasChildren :clamp-USE-3 ; x3do:rotation ( 0 1 0 -1.7 ) ; x3do:scale ( .05 .05 .05 ) ; x3do:translation ( 1.7 .6 -0.2 ) . :clamp-USE-3 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_3_1_2 ; owl:sameAs :clamp . # DEF matching this USE :Transform_2_10_1_3_1_3 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftTrail ; x3do:hasChildren :Transform_2_10_1_3_1_3_1 ; x3do:rotation ( 1 0 0 -1.57 ) . :Transform_2_10_1_3_1_3_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_1_3_1_3 ; x3do:hasChildren :trail-USE-1 ; x3do:scale ( .22 .3 .19 ) . :trail-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_3_1_3_1 ; owl:sameAs :trail . # DEF matching this USE :leftSpade a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftTrailMover ; x3do:hasChildren :Transform_2_10_1_3_2_1 ; x3do:DEF 'leftSpade' ; x3do:rotation ( 0 1 0 -0.523 ) ; x3do:scale ( .07 .1 .1 ) ; x3do:translation ( -1.9 -0.45 3.9 ) . :Transform_2_10_1_3_2_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftSpade ; x3do:hasChildren :Transform_2_10_1_3_2_1_1 ; x3do:center ( .5 0 .5 ) ; x3do:rotation ( 0 1 0 3.14 ) . :Transform_2_10_1_3_2_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_1_3_2_1 ; x3do:hasChildren :spade-USE-1 ; x3do:rotation ( 1 0 0 -1.57 ) . :spade-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_3_2_1_1 ; owl:sameAs :spade . # DEF matching this USE :lTrailSpreader a owl:NamedIndividual, x3do:CylinderSensor ; x3do:hasParent :leftTrailMover ; x3do:DEF 'lTrailSpreader' ; x3do:description 'Used to spread the trails' ; x3do:maxAngle .5 . :ROUTE_2_10_1_3_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :leftTrailMover ; x3do:fromField 'rotation_changed' ; x3do:fromNode 'lTrailSpreader' ; x3do:toField 'set_rotation' ; x3do:toNode 'leftTrailMover' . :Transform_2_10_1_4 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :LowerCar ; x3do:hasChildren :basePlate ; x3do:translation ( 0 -0.25 -0.75 ) . :basePlate a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_4 ; x3do:hasGeometry :Cone_2_10_1_4_1_1 ; x3do:hasAppearance :camiPaint-USE-5 ; x3do:DEF 'basePlate' . :Cone_2_10_1_4_1_1 a owl:NamedIndividual, x3do:Cone ; x3do:hasParent :basePlate ; x3do:bottomRadius .75 ; x3do:height .25 . :camiPaint-USE-5 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :basePlate ; owl:sameAs :camiPaint . # DEF matching this USE :wheelRaiser a owl:NamedIndividual, x3do:Group ; x3do:hasParent :LowerCar ; x3do:hasChildren :AnimationTransform ; x3do:DEF 'wheelRaiser' . :AnimationTransform a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :wheelRaiser ; x3do:hasChildren :ButtonChoice, :rightWheel, :leftWheel ; x3do:DEF 'AnimationTransform' ; x3do:rotation ( 1 0 0 .1 ) . :ButtonChoice a owl:NamedIndividual, x3do:Switch ; x3do:hasParent :AnimationTransform ; x3do:hasChildren :Group_2_10_1_5_1_1_1, :Group_2_10_1_5_1_1_2 ; x3do:DEF 'ButtonChoice' ; x3do:whichChoice 0 . :Group_2_10_1_5_1_1_1 a owl:NamedIndividual, x3do:Group ; x3do:hasParent :ButtonChoice ; x3do:hasChildren :Transform_2_10_1_5_1_1_1_1, :ClearSphere1, :wheelUp, :MoveBoxUp, :BoxUpTimer ; x3do:hasROUTE :ROUTE_2_10_1_5_1_1_1_6, :ROUTE_2_10_1_5_1_1_1_7, :ROUTE_2_10_1_5_1_1_1_8 . :Transform_2_10_1_5_1_1_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Group_2_10_1_5_1_1_1 ; x3do:hasChildren :ClearSphere ; x3do:scale ( 4 1 1 ) ; x3do:translation ( 0 -0.3 -0.3 ) . :ClearSphere a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_5_1_1_1_1 ; x3do:hasAppearance :Appearance_2_10_1_5_1_1_1_1_1_1 ; x3do:hasGeometry :Sphere_2_10_1_5_1_1_1_1_1_2 ; x3do:DEF 'ClearSphere' . :Appearance_2_10_1_5_1_1_1_1_1_1 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :ClearSphere ; x3do:hasMaterial :Transparent . :Transparent a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_1_5_1_1_1_1_1_1 ; x3do:DEF 'Transparent' ; x3do:emissiveColor ( 1 1 1 ) ; x3do:transparency 1.0 . :Sphere_2_10_1_5_1_1_1_1_1_2 a owl:NamedIndividual, x3do:Sphere ; x3do:hasParent :ClearSphere ; x3do:radius .5 . :ClearSphere1 a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :Group_2_10_1_5_1_1_1 ; x3do:DEF 'ClearSphere1' ; x3do:description 'used to raise and lower the wheels' . :wheelUp a owl:NamedIndividual, x3do:OrientationInterpolator ; x3do:hasParent :Group_2_10_1_5_1_1_1 ; x3do:DEF 'wheelUp' ; x3do:key ( 0 .25 .5 .75 .85 1 ) ; x3do:keyValue ( 1 0 0 0 1 0 0 .5 1 0 0 .75 1 0 0 1.25 1 0 0 1.7 1 0 0 2 ) . :MoveBoxUp a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Group_2_10_1_5_1_1_1 ; x3do:DEF 'MoveBoxUp' ; x3do:key ( 0 .5 1 ) ; x3do:keyValue ( 0 -3 0 0 0 0 0 3 0 ) . :BoxUpTimer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :Group_2_10_1_5_1_1_1 ; x3do:DEF 'BoxUpTimer' ; x3do:cycleInterval '3' . :ROUTE_2_10_1_5_1_1_1_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Group_2_10_1_5_1_1_1 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'BoxUpTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'wheelUp' . :ROUTE_2_10_1_5_1_1_1_7 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Group_2_10_1_5_1_1_1 ; x3do:fromField 'value_changed' ; x3do:fromNode 'wheelUp' ; x3do:toField 'set_rotation' ; x3do:toNode 'AnimationTransform' . :ROUTE_2_10_1_5_1_1_1_8 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Group_2_10_1_5_1_1_1 ; x3do:fromField 'touchTime' ; x3do:fromNode 'ClearSphere1' ; x3do:toField 'startTime' ; x3do:toNode 'BoxUpTimer' . :Group_2_10_1_5_1_1_2 a owl:NamedIndividual, x3do:Group ; x3do:hasParent :ButtonChoice ; x3do:hasChildren :Transform_2_10_1_5_1_1_2_1, :ClearSphere2, :wheelDown, :MoveBoxDown, :BoxDownTimer ; x3do:hasROUTE :ROUTE_2_10_1_5_1_1_2_6, :ROUTE_2_10_1_5_1_1_2_7, :ROUTE_2_10_1_5_1_1_2_8 . :Transform_2_10_1_5_1_1_2_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Group_2_10_1_5_1_1_2 ; x3do:hasChildren :ClearSphere-USE-1 ; x3do:scale ( 4 1 1 ) ; x3do:translation ( 0 -0.3 -0.3 ) . :ClearSphere-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_5_1_1_2_1 ; owl:sameAs :ClearSphere . # DEF matching this USE :ClearSphere2 a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :Group_2_10_1_5_1_1_2 ; x3do:DEF 'ClearSphere2' ; x3do:description 'used to raise and lower the wheels' . :wheelDown a owl:NamedIndividual, x3do:OrientationInterpolator ; x3do:hasParent :Group_2_10_1_5_1_1_2 ; x3do:DEF 'wheelDown' ; x3do:key ( 0 .25 .5 .75 .85 1 ) ; x3do:keyValue ( 1 0 0 2 1 0 0 1.7 1 0 0 1.25 1 0 0 .75 1 0 0 .5 1 0 0 0 ) . :MoveBoxDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Group_2_10_1_5_1_1_2 ; x3do:DEF 'MoveBoxDown' ; x3do:key ( 0 0.5 1 ) ; x3do:keyValue ( 0 3 0 0 0 0 0 -3 0 ) . :BoxDownTimer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :Group_2_10_1_5_1_1_2 ; x3do:DEF 'BoxDownTimer' ; x3do:cycleInterval '3' . :ROUTE_2_10_1_5_1_1_2_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Group_2_10_1_5_1_1_2 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'BoxDownTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'wheelDown' . :ROUTE_2_10_1_5_1_1_2_7 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Group_2_10_1_5_1_1_2 ; x3do:fromField 'value_changed' ; x3do:fromNode 'wheelDown' ; x3do:toField 'set_rotation' ; x3do:toNode 'AnimationTransform' . :ROUTE_2_10_1_5_1_1_2_8 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Group_2_10_1_5_1_1_2 ; x3do:fromField 'touchTime' ; x3do:fromNode 'ClearSphere2' ; x3do:toField 'startTime' ; x3do:toNode 'BoxDownTimer' . :rightWheel a owl:NamedIndividual, x3do:Group ; x3do:hasParent :AnimationTransform ; x3do:hasChildren :rightWheel1, :Transform_2_10_1_5_1_2_2 ; x3do:DEF 'rightWheel' . :rightWheel1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rightWheel ; x3do:hasChildren :rightTire, :rightRim ; x3do:DEF 'rightWheel1' ; x3do:translation ( .2 -0.8 -0.3 ) . :rightTire a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rightWheel1 ; x3do:hasChildren :tire ; x3do:DEF 'rightTire' ; x3do:rotation ( 0 0 1 -1.57 ) ; x3do:translation ( 1.0 .4 0 ) . :tire a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :rightTire ; x3do:hasGeometry :Cylinder_2_10_1_5_1_2_1_1_1_1 ; x3do:hasAppearance :Appearance_2_10_1_5_1_2_1_1_1_2 ; x3do:DEF 'tire' . :Cylinder_2_10_1_5_1_2_1_1_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :tire ; x3do:height .2 ; x3do:radius .4 . :Appearance_2_10_1_5_1_2_1_1_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :tire ; x3do:hasMaterial :black . :black a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_1_5_1_2_1_1_1_2 ; x3do:DEF 'black' ; x3do:diffuseColor ( 0.1 0.1 0.1 ) ; x3do:shininess 0 . :rightRim a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rightWheel1 ; x3do:hasChildren :rim ; x3do:DEF 'rightRim' ; x3do:rotation ( 0 0 1 -1.57 ) ; x3do:translation ( 1.0 .4 0 ) . :rim a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :rightRim ; x3do:hasGeometry :Cylinder_2_10_1_5_1_2_1_2_1_1 ; x3do:hasAppearance :camiPaint-USE-6 ; x3do:DEF 'rim' . :Cylinder_2_10_1_5_1_2_1_2_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :rim ; x3do:height .22 ; x3do:radius .25 . :camiPaint-USE-6 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :rim ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_1_5_1_2_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rightWheel ; x3do:hasChildren :rWheelLift ; x3do:rotation ( 1 0 0 -1.75 ) . :rWheelLift a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_1_5_1_2_2 ; x3do:hasChildren :Transform_2_10_1_5_1_2_2_1_1, :Transform_2_10_1_5_1_2_2_1_2, :Transform_2_10_1_5_1_2_2_1_3 ; x3do:DEF 'rWheelLift' ; x3do:rotation ( 0 1 0 1.57 ) ; x3do:scale ( .25 .25 .25 ) ; x3do:translation ( 1 0 0 ) . :Transform_2_10_1_5_1_2_2_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rWheelLift ; x3do:hasChildren :Shape_2_10_1_5_1_2_2_1_1_1 . :Shape_2_10_1_5_1_2_2_1_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_5_1_2_2_1_1 ; x3do:hasGeometry :Extrusion_2_10_1_5_1_2_2_1_1_1_1 ; x3do:hasAppearance :camiPaint-USE-7 . :Extrusion_2_10_1_5_1_2_2_1_1_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_1_5_1_2_2_1_1_1 ; x3do:crossSection ( -1 0 -0.9 0.435889894354067 -0.8 0.6 -0.7 0.714142842854285 -0.6 0.8 -0.5 0.866025403784439 -0.4 0.916515138991168 -0.3 0.953939201416946 -0.2 0.979795897113271 -0.1 0.99498743710662 0 1 0.1 0.99498743710662 0.2 0.979795897113271 0.3 0.953939201416946 0.4 0.916515138991168 0.5 0.866025403784439 0.6 0.8 0.7 0.714142842854285 0.8 0.6 0.9 0.435889894354067 1 0 0.9 -0.435889894354067 0.8 -0.6 0.7 -0.714142842854285 0.6 -0.8 0.5 -0.866025403784439 0.4 -0.916515138991168 0.3 -0.953939201416946 0.2 -0.979795897113271 0.1 -0.99498743710662 0 -1 -0.1 -0.99498743710662 -0.2 -0.979795897113271 -0.3 -0.953939201416946 -0.4 -0.916515138991168 -0.5 -0.866025403784439 -0.6 -0.8 -0.7 -0.714142842854285 -0.8 -0.6 -0.9 -0.435889894354067 -1 0 ) ; x3do:spine ( 0 0 0 0 0 .3 ) . :camiPaint-USE-7 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_1_5_1_2_2_1_1_1 ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_1_5_1_2_2_1_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rWheelLift ; x3do:hasChildren :Shape_2_10_1_5_1_2_2_1_2_1 ; x3do:translation ( 1.5 1.5 .45 ) . :Shape_2_10_1_5_1_2_2_1_2_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_5_1_2_2_1_2 ; x3do:hasGeometry :Extrusion_2_10_1_5_1_2_2_1_2_1_1 ; x3do:hasAppearance :camiPaint-USE-8 . :Extrusion_2_10_1_5_1_2_2_1_2_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_1_5_1_2_2_1_2_1 ; x3do:crossSection ( -1 0 -0.9 0.435889894354067 -0.8 0.6 -0.7 0.714142842854285 -0.6 0.8 -0.5 0.866025403784439 -0.4 0.916515138991168 -0.3 0.953939201416946 -0.2 0.979795897113271 -0.1 0.99498743710662 0 1 0.1 0.99498743710662 0.2 0.979795897113271 0.3 0.953939201416946 0.4 0.916515138991168 0.5 0.866025403784439 0.6 0.8 0.7 0.714142842854285 0.8 0.6 0.9 0.435889894354067 1 0 0.9 -0.435889894354067 0.8 -0.6 0.7 -0.714142842854285 0.6 -0.8 0.5 -0.866025403784439 0.4 -0.916515138991168 0.3 -0.953939201416946 0.2 -0.979795897113271 0.1 -0.99498743710662 0 -1 -0.1 -0.99498743710662 -0.2 -0.979795897113271 -0.3 -0.953939201416946 -0.4 -0.916515138991168 -0.5 -0.866025403784439 -0.6 -0.8 -0.7 -0.714142842854285 -0.8 -0.6 -0.9 -0.435889894354067 -1 0 ) ; x3do:spine ( 0 0 0 0 0 .3 ) . :camiPaint-USE-8 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_1_5_1_2_2_1_2_1 ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_1_5_1_2_2_1_3 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rWheelLift ; x3do:hasChildren :Shape_2_10_1_5_1_2_2_1_3_1 ; x3do:rotation ( 0 0 1 1 ) ; x3do:translation ( 1 1 0.3 ) . :Shape_2_10_1_5_1_2_2_1_3_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_5_1_2_2_1_3 ; x3do:hasGeometry :Box_2_10_1_5_1_2_2_1_3_1_1 ; x3do:hasAppearance :camiPaint-USE-9 . :Box_2_10_1_5_1_2_2_1_3_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :Shape_2_10_1_5_1_2_2_1_3_1 ; x3do:size ( 2 1 .3 ) . :camiPaint-USE-9 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_1_5_1_2_2_1_3_1 ; owl:sameAs :camiPaint . # DEF matching this USE :leftWheel a owl:NamedIndividual, x3do:Group ; x3do:hasParent :AnimationTransform ; x3do:hasChildren :leftWheel1, :wheelSensor, :CLOCK, :wheelInterpolator, :Transform_2_10_1_5_1_3_5 ; x3do:DEF 'leftWheel' . :leftWheel1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftWheel ; x3do:hasChildren :leftTire, :leftRim ; x3do:DEF 'leftWheel1' ; x3do:translation ( -1.2 -0.35 -0.35 ) . :leftTire a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftWheel1 ; x3do:hasChildren :tire-USE-1 ; x3do:DEF 'leftTire' ; x3do:rotation ( 0 0 1 -1.57 ) . :tire-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :leftTire ; owl:sameAs :tire . # DEF matching this USE :leftRim a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftWheel1 ; x3do:hasChildren :rim-USE-1 ; x3do:DEF 'leftRim' ; x3do:rotation ( 0 0 1 -1.57 ) . :rim-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :leftRim ; owl:sameAs :rim . # DEF matching this USE :wheelSensor a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :leftWheel ; x3do:DEF 'wheelSensor' ; x3do:description 'Point at box to spin it' . :CLOCK a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :leftWheel ; x3do:DEF 'CLOCK' ; x3do:cycleInterval '4' ; x3do:enabled false ; x3do:loop true . :wheelInterpolator a owl:NamedIndividual, x3do:OrientationInterpolator ; x3do:hasParent :leftWheel ; x3do:DEF 'wheelInterpolator' ; x3do:key ( 0.0 0.25 0.50 0.75 1.0 ) ; x3do:keyValue ( 1 0.0 0 -1.57 1 0.0 0 0 1 0.0 0 1.57 1 0 0 3.14 1 0 0 -1.57 ) . :Transform_2_10_1_5_1_3_5 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :leftWheel ; x3do:hasChildren :wheelLift ; x3do:rotation ( 1 0 0 -3.1 ) . :wheelLift a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_1_5_1_3_5 ; x3do:hasChildren :Transform_2_10_1_5_1_3_5_1_1, :Transform_2_10_1_5_1_3_5_1_2, :Transform_2_10_1_5_1_3_5_1_3 ; x3do:DEF 'wheelLift' ; x3do:rotation ( 0 1 0 -1.57 ) ; x3do:scale ( .25 .25 .25 ) ; x3do:translation ( -1 0 0 ) . :Transform_2_10_1_5_1_3_5_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :wheelLift ; x3do:hasChildren :Shape_2_10_1_5_1_3_5_1_1_1 . :Shape_2_10_1_5_1_3_5_1_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_5_1_3_5_1_1 ; x3do:hasGeometry :Extrusion_2_10_1_5_1_3_5_1_1_1_1 ; x3do:hasAppearance :camiPaint-USE-10 . :Extrusion_2_10_1_5_1_3_5_1_1_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_1_5_1_3_5_1_1_1 ; x3do:crossSection ( -1 0 -0.9 0.435889894354067 -0.8 0.6 -0.7 0.714142842854285 -0.6 0.8 -0.5 0.866025403784439 -0.4 0.916515138991168 -0.3 0.953939201416946 -0.2 0.979795897113271 -0.1 0.99498743710662 0 1 0.1 0.99498743710662 0.2 0.979795897113271 0.3 0.953939201416946 0.4 0.916515138991168 0.5 0.866025403784439 0.6 0.8 0.7 0.714142842854285 0.8 0.6 0.9 0.435889894354067 1 0 0.9 -0.435889894354067 0.8 -0.6 0.7 -0.714142842854285 0.6 -0.8 0.5 -0.866025403784439 0.4 -0.916515138991168 0.3 -0.953939201416946 0.2 -0.979795897113271 0.1 -0.99498743710662 0 -1 -0.1 -0.99498743710662 -0.2 -0.979795897113271 -0.3 -0.953939201416946 -0.4 -0.916515138991168 -0.5 -0.866025403784439 -0.6 -0.8 -0.7 -0.714142842854285 -0.8 -0.6 -0.9 -0.435889894354067 -1 0 ) ; x3do:spine ( 0 0 0 0 0 .3 ) . :camiPaint-USE-10 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_1_5_1_3_5_1_1_1 ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_1_5_1_3_5_1_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :wheelLift ; x3do:hasChildren :Shape_2_10_1_5_1_3_5_1_2_1 ; x3do:translation ( 1.5 1.5 .45 ) . :Shape_2_10_1_5_1_3_5_1_2_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_5_1_3_5_1_2 ; x3do:hasGeometry :Extrusion_2_10_1_5_1_3_5_1_2_1_1 ; x3do:hasAppearance :camiPaint-USE-11 . :Extrusion_2_10_1_5_1_3_5_1_2_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_1_5_1_3_5_1_2_1 ; x3do:crossSection ( -1 0 -0.9 0.435889894354067 -0.8 0.6 -0.7 0.714142842854285 -0.6 0.8 -0.5 0.866025403784439 -0.4 0.916515138991168 -0.3 0.953939201416946 -0.2 0.979795897113271 -0.1 0.99498743710662 0 1 0.1 0.99498743710662 0.2 0.979795897113271 0.3 0.953939201416946 0.4 0.916515138991168 0.5 0.866025403784439 0.6 0.8 0.7 0.714142842854285 0.8 0.6 0.9 0.435889894354067 1 0 0.9 -0.435889894354067 0.8 -0.6 0.7 -0.714142842854285 0.6 -0.8 0.5 -0.866025403784439 0.4 -0.916515138991168 0.3 -0.953939201416946 0.2 -0.979795897113271 0.1 -0.99498743710662 0 -1 -0.1 -0.99498743710662 -0.2 -0.979795897113271 -0.3 -0.953939201416946 -0.4 -0.916515138991168 -0.5 -0.866025403784439 -0.6 -0.8 -0.7 -0.714142842854285 -0.8 -0.6 -0.9 -0.435889894354067 -1 0 ) ; x3do:spine ( 0 0 0 0 0 .3 ) . :camiPaint-USE-11 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_1_5_1_3_5_1_2_1 ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_1_5_1_3_5_1_3 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :wheelLift ; x3do:hasChildren :Shape_2_10_1_5_1_3_5_1_3_1 ; x3do:rotation ( 0 0 1 1 ) ; x3do:translation ( 1 1 0.3 ) . :Shape_2_10_1_5_1_3_5_1_3_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_1_5_1_3_5_1_3 ; x3do:hasGeometry :Box_2_10_1_5_1_3_5_1_3_1_1 ; x3do:hasAppearance :camiPaint-USE-12 . :Box_2_10_1_5_1_3_5_1_3_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :Shape_2_10_1_5_1_3_5_1_3_1 ; x3do:size ( 2 1 .3 ) . :camiPaint-USE-12 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_1_5_1_3_5_1_3_1 ; owl:sameAs :camiPaint . # DEF matching this USE :AnimationControl a owl:NamedIndividual, x3do:Group ; x3do:hasParent :LowerCar ; x3do:hasChildren :SetBoxDown, :SetBoxUp ; x3do:hasROUTE :ROUTE_2_10_1_6_3, :ROUTE_2_10_1_6_4, :ROUTE_2_10_1_6_5, :ROUTE_2_10_1_6_6 ; x3do:DEF 'AnimationControl' . :SetBoxDown a owl:NamedIndividual, x3do:IntegerTrigger ; x3do:hasParent :AnimationControl ; x3do:DEF 'SetBoxDown' ; x3do:integerKey 0 . :SetBoxUp a owl:NamedIndividual, x3do:IntegerTrigger ; x3do:hasParent :AnimationControl ; x3do:DEF 'SetBoxUp' ; x3do:integerKey 1 . :ROUTE_2_10_1_6_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :AnimationControl ; x3do:fromField 'isActive' ; x3do:fromNode 'ClearSphere1' ; x3do:toField 'set_boolean' ; x3do:toNode 'SetBoxUp' . :ROUTE_2_10_1_6_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :AnimationControl ; x3do:fromField 'isActive' ; x3do:fromNode 'ClearSphere2' ; x3do:toField 'set_boolean' ; x3do:toNode 'SetBoxDown' . :ROUTE_2_10_1_6_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :AnimationControl ; x3do:fromField 'triggerValue' ; x3do:fromNode 'SetBoxUp' ; x3do:toField 'whichChoice' ; x3do:toNode 'ButtonChoice' . :ROUTE_2_10_1_6_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :AnimationControl ; x3do:fromField 'triggerValue' ; x3do:fromNode 'SetBoxDown' ; x3do:toField 'whichChoice' ; x3do:toNode 'ButtonChoice' . :upperCarriagePiece a owl:NamedIndividual, x3do:Group ; x3do:hasParent :M198_Howitzer ; x3do:hasChildren :rotateUpperCarriage ; x3do:DEF 'upperCarriagePiece' . :rotateUpperCarriage a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :upperCarriagePiece ; x3do:hasChildren :upperCarriage, :barrelGroup, :carriage_sensor ; x3do:hasROUTE :ROUTE_2_10_2_1_4 ; x3do:DEF 'rotateUpperCarriage' ; x3do:center ( 0 -2.5 0 ) . :upperCarriage a owl:NamedIndividual, x3do:Group ; x3do:hasParent :rotateUpperCarriage ; x3do:hasChildren :rightTrunion, :Transform_2_10_2_1_1_2, :leftHandwheel, :rightHandwheel, :traversingWheel, :Transform_2_10_2_1_1_6, :rightUpperCylinder ; x3do:DEF 'upperCarriage' . :rightTrunion a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :upperCarriage ; x3do:hasChildren :Transform_2_10_2_1_1_1_1 ; x3do:DEF 'rightTrunion' ; x3do:rotation ( 1 0 0 1.57 ) ; x3do:translation ( .6 1.2 .65 ) . :Transform_2_10_2_1_1_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rightTrunion ; x3do:hasChildren :left_stantion ; x3do:rotation ( 0 1 0 3.14 ) . :left_stantion a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_1_1_1 ; x3do:hasGeometry :Extrusion_2_10_2_1_1_1_1_1_1 ; x3do:hasAppearance :camiPaint-USE-13 ; x3do:DEF 'left_stantion' . :Extrusion_2_10_2_1_1_1_1_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :left_stantion ; x3do:crossSection ( 0 4 2 43 -4 5 -7 10 -712 -9 2 -9 0 -4 0 4 ) ; x3do:scale ( .1 .1 ) ; x3do:spine ( 0 0 0 .2 0 0 ) . :camiPaint-USE-13 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :left_stantion ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_2_1_1_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :upperCarriage ; x3do:hasChildren :Transform_2_10_2_1_1_2_1 ; x3do:rotation ( 1 0 0 1.57 ) ; x3do:translation ( -0.4 1.2 .65 ) . :Transform_2_10_2_1_1_2_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_1_2 ; x3do:hasChildren :left_stantion-USE-1 ; x3do:rotation ( 0 1 0 3.14 ) . :left_stantion-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_1_2_1 ; owl:sameAs :left_stantion . # DEF matching this USE :leftHandwheel a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :upperCarriage ; x3do:hasChildren :Crank ; x3do:DEF 'leftHandwheel' ; x3do:rotation ( 0 1 0 -1.57 ) ; x3do:scale ( .8 .8 .8 ) ; x3do:translation ( -0.75 1 .5 ) . :Crank a owl:NamedIndividual, x3do:LOD ; x3do:hasParent :leftHandwheel ; x3do:hasChildren :handwheelGroup, :WorldInfo_2_10_2_1_1_3_1_2 ; x3do:DEF 'Crank' ; x3do:range ( 25 ) . :handwheelGroup a owl:NamedIndividual, x3do:Group ; x3do:hasParent :Crank ; x3do:hasChildren :CircularHandle, :CrankShaft, :Struts ; x3do:DEF 'handwheelGroup' . :CircularHandle a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :handwheelGroup ; x3do:hasChildren :Shape_2_10_2_1_1_3_1_1_1_1 ; x3do:DEF 'CircularHandle' . :Shape_2_10_2_1_1_3_1_1_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :CircularHandle ; x3do:hasGeometry :Extrusion_2_10_2_1_1_3_1_1_1_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_1_3_1_1_1_1_2 . :Extrusion_2_10_2_1_1_3_1_1_1_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_1_1 ; x3do:beginCap false ; x3do:creaseAngle 1.57 ; x3do:crossSection ( 0.1 0 0.092 -0.038 0.071 -0.071 0.038 -0.092 0 -0.1 -0.038 -0.092 -0.071 -0.071 -0.092 -0.038 -0.1 0 -0.092 0.038 -0.071 0.071 -0.038 0.092 0 0.1 0.038 0.092 0.071 0.071 0.092 0.038 0.1 0 ) ; x3do:endCap false ; x3do:scale ( 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 ) ; x3do:spine ( 0.3 0 0 0.276 -0.114 0 0.213 -0.213 0 0.114 -0.276 0 0 -0.3 0 -0.114 -0.276 0 -0.213 -0.213 0 -0.276 -0.114 0 -0.3 0 0 -0.276 0.114 0 -0.213 0.213 0 -0.114 0.276 0 0 0.3 0 0.114 0.276 0 0.213 0.213 0 0.276 0.114 0 0.3 0 0 ) . :Appearance_2_10_2_1_1_3_1_1_1_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_1_1 ; x3do:hasMaterial :Material_2_10_2_1_1_3_1_1_1_1_2_1 . :Material_2_10_2_1_1_3_1_1_1_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_1_3_1_1_1_1_2 ; x3do:diffuseColor ( .1 .10 .1 ) . :CrankShaft a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :handwheelGroup ; x3do:hasChildren :Shaft, :Top, :TopBall ; x3do:DEF 'CrankShaft' ; x3do:translation ( 0 0 -0.05 ) . :Shaft a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :CrankShaft ; x3do:hasChildren :Shape_2_10_2_1_1_3_1_1_2_1_1 ; x3do:DEF 'Shaft' ; x3do:rotation ( 1 0 0 1.57 ) . :Shape_2_10_2_1_1_3_1_1_2_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Shaft ; x3do:hasGeometry :Cylinder_2_10_2_1_1_3_1_1_2_1_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_1_3_1_1_2_1_1_2 . :Cylinder_2_10_2_1_1_3_1_1_2_1_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_2_1_1 ; x3do:height 0.02 ; x3do:radius 0.08 . :Appearance_2_10_2_1_1_3_1_1_2_1_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_2_1_1 ; x3do:hasMaterial :Material_2_10_2_1_1_3_1_1_2_1_1_2_1 . :Material_2_10_2_1_1_3_1_1_2_1_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_1_3_1_1_2_1_1_2 ; x3do:diffuseColor ( .1 .1 .1 ) . :Top a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :CrankShaft ; x3do:hasChildren :Shape_2_10_2_1_1_3_1_1_2_2_1 ; x3do:DEF 'Top' ; x3do:rotation ( 1 0 0 1.57 ) ; x3do:translation ( 0 0 -0.1 ) . :Shape_2_10_2_1_1_3_1_1_2_2_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Top ; x3do:hasGeometry :Cylinder_2_10_2_1_1_3_1_1_2_2_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_1_3_1_1_2_2_1_2 . :Cylinder_2_10_2_1_1_3_1_1_2_2_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_2_2_1 ; x3do:height 0.2 ; x3do:radius 0.05 . :Appearance_2_10_2_1_1_3_1_1_2_2_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_2_2_1 ; x3do:hasMaterial :Material_2_10_2_1_1_3_1_1_2_2_1_2_1 . :Material_2_10_2_1_1_3_1_1_2_2_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_1_3_1_1_2_2_1_2 ; x3do:diffuseColor ( .1 .1 .1 ) . :TopBall a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :CrankShaft ; x3do:hasChildren :Shape_2_10_2_1_1_3_1_1_2_3_1 ; x3do:DEF 'TopBall' ; x3do:translation ( 0 0 -0.01 ) . :Shape_2_10_2_1_1_3_1_1_2_3_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :TopBall ; x3do:hasGeometry :Sphere_2_10_2_1_1_3_1_1_2_3_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_1_3_1_1_2_3_1_2 . :Sphere_2_10_2_1_1_3_1_1_2_3_1_1 a owl:NamedIndividual, x3do:Sphere ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_2_3_1 ; x3do:radius 0.05 . :Appearance_2_10_2_1_1_3_1_1_2_3_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_2_3_1 ; x3do:hasMaterial :Material_2_10_2_1_1_3_1_1_2_3_1_2_1 . :Material_2_10_2_1_1_3_1_1_2_3_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_1_3_1_1_2_3_1_2 ; x3do:diffuseColor ( .1 .1 .1 ) . :Struts a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :handwheelGroup ; x3do:hasChildren :StrutOne, :StrutTwo, :StrutThree ; x3do:DEF 'Struts' . :StrutOne a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Struts ; x3do:hasChildren :Shape_2_10_2_1_1_3_1_1_3_1_1 ; x3do:DEF 'StrutOne' ; x3do:rotation ( 1 0 0 0.21 ) ; x3do:translation ( 0 0.04 -0.05725 ) . :Shape_2_10_2_1_1_3_1_1_3_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :StrutOne ; x3do:hasGeometry :Extrusion_2_10_2_1_1_3_1_1_3_1_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_1_3_1_1_3_1_1_2 . :Extrusion_2_10_2_1_1_3_1_1_3_1_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_3_1_1 ; x3do:creaseAngle 3.14 ; x3do:crossSection ( 0.01 0 0.0092 -0.0038 0.0071 -0.0071 0.0038 -0.0092 0 -0.01 -0.0038 -0.0092 -0.0071 -0.0071 -0.0092 -0.0038 -0.01 0 -0.0092 0.0038 -0.0071 0.0071 -0.0038 0.0092 0 0.01 0.0038 0.0092 0.0071 0.0071 0.0092 0.0038 0.01 0 ) ; x3do:scale ( 4 2 2 2 2 2 2 2 2 4 ) ; x3do:spine ( 0 0 0 0 0.125 0 0 0.25 0 0 0.255 0 0 0.275 0 ) . :Appearance_2_10_2_1_1_3_1_1_3_1_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_1_3_1_1_3_1_1 ; x3do:hasMaterial :Material_2_10_2_1_1_3_1_1_3_1_1_2_1 . :Material_2_10_2_1_1_3_1_1_3_1_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_1_3_1_1_3_1_1_2 ; x3do:diffuseColor ( .1 .1 .1 ) . :StrutTwo a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Struts ; x3do:hasChildren :StrutOne-USE-1 ; x3do:DEF 'StrutTwo' ; x3do:rotation ( 0 0 1 2.09 ) . :StrutOne-USE-1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :StrutTwo ; owl:sameAs :StrutOne . # DEF matching this USE :StrutThree a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Struts ; x3do:hasChildren :StrutOne-USE-2 ; x3do:DEF 'StrutThree' ; x3do:rotation ( 0 0 -1 2.09 ) . :StrutOne-USE-2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :StrutThree ; owl:sameAs :StrutOne . # DEF matching this USE :WorldInfo_2_10_2_1_1_3_1_2 a owl:NamedIndividual, x3do:WorldInfo ; x3do:hasParent :Crank ; x3do:info '"null node"' . :rightHandwheel a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :upperCarriage ; x3do:hasChildren :Crank-USE-1 ; x3do:DEF 'rightHandwheel' ; x3do:rotation ( 0 1 0 1.57 ) ; x3do:scale ( .8 .8 .8 ) ; x3do:translation ( .75 1 .5 ) . :Crank-USE-1 a owl:NamedIndividual, x3do:LOD ; x3do:hasParent :rightHandwheel ; owl:sameAs :Crank . # DEF matching this USE :traversingWheel a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :upperCarriage ; x3do:hasChildren :Crank-USE-2 ; x3do:DEF 'traversingWheel' ; x3do:rotation ( 0 1 0 -0.85 ) ; x3do:scale ( .5 .5 .5 ) ; x3do:translation ( -0.68 .5 .6 ) . :Crank-USE-2 a owl:NamedIndividual, x3do:LOD ; x3do:hasParent :traversingWheel ; owl:sameAs :Crank . # DEF matching this USE :Transform_2_10_2_1_1_6 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :upperCarriage ; x3do:hasChildren :traversingPlatform ; x3do:translation ( 0 .25 0 ) . :traversingPlatform a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_1_6 ; x3do:hasGeometry :Cylinder_2_10_2_1_1_6_1_1 ; x3do:hasAppearance :camiPaint-USE-14 ; x3do:DEF 'traversingPlatform' . :Cylinder_2_10_2_1_1_6_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :traversingPlatform ; x3do:height .35 ; x3do:radius .8 . :camiPaint-USE-14 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :traversingPlatform ; owl:sameAs :camiPaint . # DEF matching this USE :rightUpperCylinder a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :upperCarriage ; x3do:hasChildren :Transform_2_10_2_1_1_7_1 ; x3do:DEF 'rightUpperCylinder' ; x3do:rotation ( 0 0 1 1.57 ) ; x3do:translation ( 0 1.5 .2 ) . :Transform_2_10_2_1_1_7_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rightUpperCylinder ; x3do:hasChildren :Transform_2_10_2_1_1_7_1_1 ; x3do:center ( 0 0 1 ) ; x3do:rotation ( 0 0 1 -3.14 ) . :Transform_2_10_2_1_1_7_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_1_7_1 ; x3do:hasChildren :ruc . :ruc a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_1_7_1_1 ; x3do:hasChildren :rucL, :rucR ; x3do:DEF 'ruc' ; x3do:center ( 0 0 .3 ) . :rucL a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :ruc ; x3do:hasChildren :Transform_2_10_2_1_1_7_1_1_1_1_1, :Transform_2_10_2_1_1_7_1_1_1_1_2, :shrinkCylinder ; x3do:DEF 'rucL' ; x3do:rotation ( 1 0 0 -1.57 ) ; x3do:translation ( 0 -0.48 0 ) . :Transform_2_10_2_1_1_7_1_1_1_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rucL ; x3do:hasChildren :upperCylinder1 ; x3do:translation ( 0 .050 0 ) . :upperCylinder1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_1_7_1_1_1_1_1 ; x3do:hasGeometry :Cylinder_2_10_2_1_1_7_1_1_1_1_1_1_1 ; x3do:hasAppearance :camiPaint-USE-15 ; x3do:DEF 'upperCylinder1' . :Cylinder_2_10_2_1_1_7_1_1_1_1_1_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :upperCylinder1 ; x3do:height .45 ; x3do:radius .075 . :camiPaint-USE-15 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :upperCylinder1 ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_2_1_1_7_1_1_1_1_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rucL ; x3do:hasChildren :linkBolt ; x3do:translation ( 0 -0.22 0 ) . :linkBolt a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_1_7_1_1_1_1_2 ; x3do:hasGeometry :Sphere_2_10_2_1_1_7_1_1_1_1_2_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_1_7_1_1_1_1_2_1_2 ; x3do:DEF 'linkBolt' . :Sphere_2_10_2_1_1_7_1_1_1_1_2_1_1 a owl:NamedIndividual, x3do:Sphere ; x3do:hasParent :linkBolt ; x3do:radius .05 . :Appearance_2_10_2_1_1_7_1_1_1_1_2_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :linkBolt ; x3do:hasMaterial :black-USE-1 . :black-USE-1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_1_7_1_1_1_1_2_1_2 ; owl:sameAs :black . # DEF matching this USE :shrinkCylinder a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rucL ; x3do:hasChildren :upperExtender ; x3do:DEF 'shrinkCylinder' ; x3do:translation ( 0 .22 0 ) . :upperExtender a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :shrinkCylinder ; x3do:hasGeometry :Cylinder_2_10_2_1_1_7_1_1_1_1_3_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_1_7_1_1_1_1_3_1_2 ; x3do:DEF 'upperExtender' . :Cylinder_2_10_2_1_1_7_1_1_1_1_3_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :upperExtender ; x3do:height .55 ; x3do:radius .060 . :Appearance_2_10_2_1_1_7_1_1_1_1_3_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :upperExtender ; x3do:hasTexture :ImageTexture_2_10_2_1_1_7_1_1_1_1_3_1_2_1 . :ImageTexture_2_10_2_1_1_7_1_1_1_1_3_1_2_1 a owl:NamedIndividual, x3do:ImageTexture ; x3do:hasParent :Appearance_2_10_2_1_1_7_1_1_1_1_3_1_2 ; x3do:url '"baffle.jpg" "https://savage.nps.edu/Savage/Weapons/Guns/baffle.jpg"' . :rucR a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :ruc ; x3do:hasChildren :Transform_2_10_2_1_1_7_1_1_1_2_1, :Transform_2_10_2_1_1_7_1_1_1_2_2, :shrinkCylinderR ; x3do:DEF 'rucR' ; x3do:rotation ( 1 0 0 -1.57 ) ; x3do:translation ( 0 .48 0 ) . :Transform_2_10_2_1_1_7_1_1_1_2_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rucR ; x3do:hasChildren :upperCylinder1-USE-1 ; x3do:translation ( 0 .050 0 ) . :upperCylinder1-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_1_7_1_1_1_2_1 ; owl:sameAs :upperCylinder1 . # DEF matching this USE :Transform_2_10_2_1_1_7_1_1_1_2_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rucR ; x3do:hasChildren :linkBolt-USE-1 ; x3do:translation ( 0 -0.22 0 ) . :linkBolt-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_1_7_1_1_1_2_2 ; owl:sameAs :linkBolt . # DEF matching this USE :shrinkCylinderR a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rucR ; x3do:hasChildren :upperExtender-USE-1 ; x3do:DEF 'shrinkCylinderR' ; x3do:translation ( 0 .22 0 ) . :upperExtender-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :shrinkCylinderR ; owl:sameAs :upperExtender . # DEF matching this USE :barrelGroup a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :rotateUpperCarriage ; x3do:hasChildren :barrelMover1, :upperCylinderMover ; x3do:hasROUTE :ROUTE_2_10_2_1_2_3, :ROUTE_2_10_2_1_2_4, :ROUTE_2_10_2_1_2_5, :ROUTE_2_10_2_1_2_6, :ROUTE_2_10_2_1_2_7, :ROUTE_2_10_2_1_2_8 ; x3do:DEF 'barrelGroup' ; x3do:rotation ( 0 0 1 -1.57 ) . :barrelMover1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :barrelGroup ; x3do:hasChildren :tubeSensor, :theBarrel, :elevMechMover1 ; x3do:hasROUTE :ROUTE_2_10_2_1_2_1_2 ; x3do:DEF 'barrelMover1' ; x3do:center ( -1 0 .45 ) ; x3do:rotation ( 0 0 1 .01 ) ; x3do:translation ( .2 0 0 ) . :tubeSensor a owl:NamedIndividual, x3do:CylinderSensor ; x3do:hasParent :barrelMover1 ; x3do:DEF 'tubeSensor' ; x3do:description 'sensor for tube elevation' ; x3do:maxAngle 0 ; x3do:minAngle -0.65 . :ROUTE_2_10_2_1_2_1_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :barrelMover1 ; x3do:fromField 'rotation_changed' ; x3do:fromNode 'tubeSensor' ; x3do:toField 'set_rotation' ; x3do:toNode 'barrelMover1' . :theBarrel a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :barrelMover1 ; x3do:hasChildren :barrel ; x3do:DEF 'theBarrel' . :barrel a owl:NamedIndividual, x3do:Group ; x3do:hasParent :theBarrel ; x3do:hasChildren :recoilTransform, :shotEffects ; x3do:DEF 'barrel' . :recoilTransform a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :barrel ; x3do:hasChildren :recoilMover, :sideBars, :Transform_2_10_2_1_2_1_3_1_1_3, :travelLockPiece, :theRound, :RECOILTIMER, :recoil ; x3do:hasROUTE :ROUTE_2_10_2_1_2_1_3_1_1_8, :ROUTE_2_10_2_1_2_1_3_1_1_9 ; x3do:DEF 'recoilTransform' ; x3do:rotation ( 0 0 1 1.57 ) ; x3do:translation ( -0.20 0 -0.2 ) . :recoilMover a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :recoilTransform ; x3do:hasChildren :tube1, :muzzle_break ; x3do:DEF 'recoilMover' . :tube1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :recoilMover ; x3do:hasChildren :Transform_2_10_2_1_2_1_3_1_1_1_1_1, :breech ; x3do:DEF 'tube1' ; x3do:rotation ( 1 0 0 -0.84 ) ; x3do:translation ( 0 2.45 -1 ) . :Transform_2_10_2_1_2_1_3_1_1_1_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :tube1 ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_1_1_1_1_1, :shinyPiece ; x3do:translation ( 0 -2.5 0 ) . :Shape_2_10_2_1_2_1_3_1_1_1_1_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_1_1_1 ; x3do:hasGeometry :tube ; x3do:hasAppearance :camiPaint-USE-16 . :tube a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_1_1_1 ; x3do:DEF 'tube' ; x3do:crossSection ( -1 0 -0.9 0.435889894354067 -0.8 0.6 -0.7 0.714142842854285 -0.6 0.8 -0.5 0.866025403784439 -0.4 0.916515138991168 -0.3 0.953939201416946 -0.2 0.979795897113271 -0.1 0.99498743710662 0 1 0.1 0.99498743710662 0.2 0.979795897113271 0.3 0.953939201416946 0.4 0.916515138991168 0.5 0.866025403784439 0.6 0.8 0.7 0.714142842854285 0.8 0.6 0.9 0.435889894354067 1 0 0.9 -0.435889894354067 0.8 -0.6 0.7 -0.714142842854285 0.6 -0.8 0.5 -0.866025403784439 0.4 -0.916515138991168 0.3 -0.953939201416946 0.2 -0.979795897113271 0.1 -0.99498743710662 0 -1 -0.1 -0.99498743710662 -0.2 -0.979795897113271 -0.3 -0.953939201416946 -0.4 -0.916515138991168 -0.5 -0.866025403784439 -0.6 -0.8 -0.7 -0.714142842854285 -0.8 -0.6 -0.9 -0.435889894354067 -1 0 ) ; x3do:scale ( .2 .2 .2 .2 .18 .18 .18 .18 .2 .2 ) ; x3do:spine ( 0 0 0 0 3.5 0 0 3.6 0 0 4.7 0 0 5.2 0 ) . :camiPaint-USE-16 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_1_1_1 ; owl:sameAs :camiPaint . # DEF matching this USE :shinyPiece a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_1_1_1 ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_1_1_1_1_2_1 ; x3do:DEF 'shinyPiece' ; x3do:translation ( 0 3 0 ) . :Shape_2_10_2_1_2_1_3_1_1_1_1_1_2_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :shinyPiece ; x3do:hasGeometry :Cylinder_2_10_2_1_2_1_3_1_1_1_1_1_2_1_1 ; x3do:hasAppearance :shiny . :Cylinder_2_10_2_1_2_1_3_1_1_1_1_1_2_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_1_1_2_1 ; x3do:height 1.1 ; x3do:radius .205 . :shiny a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_1_1_2_1 ; x3do:hasMaterial :Material_2_10_2_1_2_1_3_1_1_1_1_1_2_1_2_1 ; x3do:DEF 'shiny' . :Material_2_10_2_1_2_1_3_1_1_1_1_1_2_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :shiny ; x3do:diffuseColor ( .7 .7 .7 ) . :breech a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :tube1 ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_1_1_1_2_1 ; x3do:DEF 'breech' ; x3do:translation ( 0 -2.5 0 ) . :Shape_2_10_2_1_2_1_3_1_1_1_1_2_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :breech ; x3do:hasGeometry :Cylinder_2_10_2_1_2_1_3_1_1_1_1_2_1_1 ; x3do:hasAppearance :shiny-USE-1 . :Cylinder_2_10_2_1_2_1_3_1_1_1_1_2_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_1_2_1 ; x3do:height .1 ; x3do:radius .2 . :shiny-USE-1 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_1_2_1 ; owl:sameAs :shiny . # DEF matching this USE :muzzle_break a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :recoilMover ; x3do:hasChildren :Transform_2_10_2_1_2_1_3_1_1_1_2_1, :Transform_2_10_2_1_2_1_3_1_1_1_2_2, :Transform_2_10_2_1_2_1_3_1_1_1_2_3, :Transform_2_10_2_1_2_1_3_1_1_1_2_4 ; x3do:DEF 'muzzle_break' ; x3do:translation ( 0 .05 0 ) . :Transform_2_10_2_1_2_1_3_1_1_1_2_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :muzzle_break ; x3do:hasChildren :Transform_2_10_2_1_2_1_3_1_1_1_2_1_1 ; x3do:rotation ( 1 0 0 .75 ) ; x3do:translation ( .25 4.48 -3.6 ) . :Transform_2_10_2_1_2_1_3_1_1_1_2_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_1_2_1 ; x3do:hasChildren :Transform_2_10_2_1_2_1_3_1_1_1_2_1_1_1 ; x3do:rotation ( 0 0 1 1.57 ) . :Transform_2_10_2_1_2_1_3_1_1_1_2_1_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_1_2_1_1 ; x3do:hasChildren :muzzleBreak ; x3do:rotation ( 1 0 0 3.14 ) ; x3do:scale ( 1.6 .7 .85 ) . :muzzleBreak a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_1_2_1_1_1 ; x3do:hasGeometry :Extrusion_2_10_2_1_2_1_3_1_1_1_2_1_1_1_1_1 ; x3do:hasAppearance :camiPaint-USE-17 ; x3do:DEF 'muzzleBreak' . :Extrusion_2_10_2_1_2_1_3_1_1_1_2_1_1_1_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :muzzleBreak ; x3do:crossSection ( 0 0 3 0 3 -3 2.8 -3.2 2.3 -3.7 2 -4 1 -4 .8 -3.8 .3 -3.3 0 -3 0 0 ) ; x3do:scale ( .25 .25 ) ; x3do:spine ( 0 0 0 .25 0 0 ) . :camiPaint-USE-17 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :muzzleBreak ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_1_2_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :muzzle_break ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_1_1_2_2_1 ; x3do:rotation ( 1 0 0 .75 ) ; x3do:translation ( .25 4.4 -3.2 ) . :Shape_2_10_2_1_2_1_3_1_1_1_2_2_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_1_2_2 ; x3do:hasGeometry :Box_2_10_2_1_2_1_3_1_1_1_2_2_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_2_1_3_1_1_1_2_2_1_2 . :Box_2_10_2_1_2_1_3_1_1_1_2_2_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_2_2_1 ; x3do:size ( .01 .3 .4 ) . :Appearance_2_10_2_1_2_1_3_1_1_1_2_2_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_2_2_1 ; x3do:hasMaterial :Material_2_10_2_1_2_1_3_1_1_1_2_2_1_2_1 . :Material_2_10_2_1_2_1_3_1_1_1_2_2_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_2_1_3_1_1_1_2_2_1_2 ; x3do:diffuseColor ( .1 .1 .1 ) . :Transform_2_10_2_1_2_1_3_1_1_1_2_3 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :muzzle_break ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_1_1_2_3_1 ; x3do:rotation ( 1 0 0 .75 ) ; x3do:translation ( -0.225 4.4 -3.2 ) . :Shape_2_10_2_1_2_1_3_1_1_1_2_3_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_1_2_3 ; x3do:hasGeometry :Box_2_10_2_1_2_1_3_1_1_1_2_3_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_2_1_3_1_1_1_2_3_1_2 . :Box_2_10_2_1_2_1_3_1_1_1_2_3_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_2_3_1 ; x3do:size ( .01 .3 .4 ) . :Appearance_2_10_2_1_2_1_3_1_1_1_2_3_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_2_3_1 ; x3do:hasMaterial :Material_2_10_2_1_2_1_3_1_1_1_2_3_1_2_1 . :Material_2_10_2_1_2_1_3_1_1_1_2_3_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_2_1_3_1_1_1_2_3_1_2 ; x3do:diffuseColor ( .1 .1 .1 ) . :Transform_2_10_2_1_2_1_3_1_1_1_2_4 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :muzzle_break ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_1_1_2_4_1 ; x3do:rotation ( 1 0 0 -0.84 ) ; x3do:translation ( 0 4.64 -3.45 ) . :Shape_2_10_2_1_2_1_3_1_1_1_2_4_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_1_2_4 ; x3do:hasGeometry :Cylinder_2_10_2_1_2_1_3_1_1_1_2_4_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_2_1_3_1_1_1_2_4_1_2 . :Cylinder_2_10_2_1_2_1_3_1_1_1_2_4_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_2_4_1 ; x3do:height .02 ; x3do:radius .17 . :Appearance_2_10_2_1_2_1_3_1_1_1_2_4_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_1_2_4_1 ; x3do:hasMaterial :Material_2_10_2_1_2_1_3_1_1_1_2_4_1_2_1 . :Material_2_10_2_1_2_1_3_1_1_1_2_4_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_2_1_3_1_1_1_2_4_1_2 ; x3do:diffuseColor ( .1 .1 .1 ) . :sideBars a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :recoilTransform ; x3do:hasChildren :rightSideBar, :leftSideBar1, :lTravelLockAnchor, :travelLockAnchor, :Transform_2_10_2_1_2_1_3_1_1_2_5, :Transform_2_10_2_1_2_1_3_1_1_2_6 ; x3do:DEF 'sideBars' ; x3do:translation ( 0 -0.2 0 ) . :rightSideBar a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :sideBars ; x3do:hasChildren :sideBar ; x3do:DEF 'rightSideBar' ; x3do:rotation ( 1 0 0 .75 ) ; x3do:translation ( .45 1.9 -0.250 ) . :sideBar a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :rightSideBar ; x3do:hasGeometry :Box_2_10_2_1_2_1_3_1_1_2_1_1_1 ; x3do:hasAppearance :camiPaint-USE-18 ; x3do:DEF 'sideBar' . :Box_2_10_2_1_2_1_3_1_1_2_1_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :sideBar ; x3do:size ( .2 .2 2.2 ) . :camiPaint-USE-18 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :sideBar ; owl:sameAs :camiPaint . # DEF matching this USE :leftSideBar1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :sideBars ; x3do:hasChildren :sideBar-USE-1 ; x3do:DEF 'leftSideBar1' ; x3do:rotation ( 1 0 0 .75 ) ; x3do:translation ( -0.45 1.9 -0.250 ) . :sideBar-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :leftSideBar1 ; owl:sameAs :sideBar . # DEF matching this USE :lTravelLockAnchor a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :sideBars ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_1_2_3_1 ; x3do:DEF 'lTravelLockAnchor' ; x3do:rotation ( 1 0 0 -2.3 ) ; x3do:translation ( -0.55 1.7 -0.2 ) . :Shape_2_10_2_1_2_1_3_1_1_2_3_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :lTravelLockAnchor ; x3do:hasGeometry :Extrusion_2_10_2_1_2_1_3_1_1_2_3_1_1 ; x3do:hasAppearance :camiPaint-USE-19 . :Extrusion_2_10_2_1_2_1_3_1_1_2_3_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_2_3_1 ; x3do:crossSection ( 0 0 0 .15 .15 .15 .15 0 0 0 ) ; x3do:scale ( 1 .85 .75 .75 .5 .5 ) ; x3do:spine ( 0 0 0 0 .1 0 0 .2 0 ) . :camiPaint-USE-19 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_2_3_1 ; owl:sameAs :camiPaint . # DEF matching this USE :travelLockAnchor a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :sideBars ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_1_2_4_1 ; x3do:DEF 'travelLockAnchor' ; x3do:rotation ( 1 0 0 -2.3 ) ; x3do:translation ( .4 1.7 -0.2 ) . :Shape_2_10_2_1_2_1_3_1_1_2_4_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :travelLockAnchor ; x3do:hasGeometry :Extrusion_2_10_2_1_2_1_3_1_1_2_4_1_1 ; x3do:hasAppearance :camiPaint-USE-20 . :Extrusion_2_10_2_1_2_1_3_1_1_2_4_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_2_4_1 ; x3do:crossSection ( 0 0 0 .15 .15 .15 .15 0 0 0 ) ; x3do:scale ( 1 .85 .75 .75 .5 .5 ) ; x3do:spine ( 0 0 0 0 .1 0 0 .2 0 ) . :camiPaint-USE-20 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_1_2_4_1 ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_2_5 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :sideBars ; x3do:hasChildren :upperTravelLocker ; x3do:rotation ( 1 0 0 .65 ) ; x3do:translation ( .48 2.4 -1 ) . :upperTravelLocker a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_2_5 ; x3do:hasGeometry :Box_2_10_2_1_2_1_3_1_1_2_5_1_1 ; x3do:hasAppearance :camiPaint-USE-21 ; x3do:DEF 'upperTravelLocker' . :Box_2_10_2_1_2_1_3_1_1_2_5_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :upperTravelLocker ; x3do:size ( .07 .2 .04 ) . :camiPaint-USE-21 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :upperTravelLocker ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_2_6 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :sideBars ; x3do:hasChildren :upperTravelLocker-USE-1 ; x3do:rotation ( 1 0 0 .65 ) ; x3do:translation ( -0.48 2.4 -1 ) . :upperTravelLocker-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_2_6 ; owl:sameAs :upperTravelLocker . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_3 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :recoilTransform ; x3do:hasChildren :barrelCover ; x3do:rotation ( 1 0 0 -0.84 ) ; x3do:translation ( 0 1.65 -0.1 ) . :barrelCover a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_3 ; x3do:hasGeometry :Cylinder_2_10_2_1_2_1_3_1_1_3_1_1 ; x3do:hasAppearance :camiPaint-USE-22 ; x3do:DEF 'barrelCover' . :Cylinder_2_10_2_1_2_1_3_1_1_3_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :barrelCover ; x3do:height 2.5 ; x3do:radius .4 . :camiPaint-USE-22 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :barrelCover ; owl:sameAs :camiPaint . # DEF matching this USE :travelLockPiece a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :recoilTransform ; x3do:hasChildren :travelLockOrient, :travelLockOrientor, :travelLockSensor, :travelLockClock ; x3do:hasROUTE :ROUTE_2_10_2_1_2_1_3_1_1_4_5, :ROUTE_2_10_2_1_2_1_3_1_1_4_6, :ROUTE_2_10_2_1_2_1_3_1_1_4_7 ; x3do:DEF 'travelLockPiece' ; x3do:rotation ( 1 0 0 -0.76 ) ; x3do:translation ( -0.5 1.72 -0.75 ) . :travelLockOrient a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :travelLockPiece ; x3do:hasChildren :Transform_2_10_2_1_2_1_3_1_1_4_1_1, :Transform_2_10_2_1_2_1_3_1_1_4_1_2, :Transform_2_10_2_1_2_1_3_1_1_4_1_3, :Transform_2_10_2_1_2_1_3_1_1_4_1_4, :connectingCylinder, :Transform_2_10_2_1_2_1_3_1_1_4_1_6, :Transform_2_10_2_1_2_1_3_1_1_4_1_7, :Transform_2_10_2_1_2_1_3_1_1_4_1_8 ; x3do:DEF 'travelLockOrient' ; x3do:center ( 0 -0.5 0 ) ; x3do:rotation ( 1 0 0 -2.25 ) . :Transform_2_10_2_1_2_1_3_1_1_4_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :travelLockOrient ; x3do:hasChildren :travelLock . :travelLock a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_4_1_1 ; x3do:hasGeometry :Cylinder_2_10_2_1_2_1_3_1_1_4_1_1_1_1 ; x3do:hasAppearance :camiPaint-USE-23 ; x3do:DEF 'travelLock' . :Cylinder_2_10_2_1_2_1_3_1_1_4_1_1_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :travelLock ; x3do:height 1 ; x3do:radius .05 . :camiPaint-USE-23 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :travelLock ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_4_1_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :travelLockOrient ; x3do:hasChildren :travelLock-USE-1 ; x3do:translation ( 1 0 0 ) . :travelLock-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_4_1_2 ; owl:sameAs :travelLock . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_4_1_3 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :travelLockOrient ; x3do:hasChildren :travelLock-USE-2 ; x3do:rotation ( 0 0 1 .78 ) ; x3do:scale ( 1 1.38 1 ) ; x3do:translation ( .5 0 0 ) . :travelLock-USE-2 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_4_1_3 ; owl:sameAs :travelLock . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_4_1_4 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :travelLockOrient ; x3do:hasChildren :travelLock-USE-3 ; x3do:center ( 0 0 -0.705 ) ; x3do:rotation ( 0 0 1 -0.78 ) ; x3do:scale ( 1 1.38 1 ) ; x3do:translation ( .5 0 0 ) . :travelLock-USE-3 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_4_1_4 ; owl:sameAs :travelLock . # DEF matching this USE :connectingCylinder a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :travelLockOrient ; x3do:hasChildren :travelLock-USE-4 ; x3do:DEF 'connectingCylinder' ; x3do:rotation ( 0 0 1 1.57 ) ; x3do:scale ( 1 .1 1 ) ; x3do:translation ( 0 .5 0 ) . :travelLock-USE-4 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :connectingCylinder ; owl:sameAs :travelLock . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_4_1_6 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :travelLockOrient ; x3do:hasChildren :travelLock-USE-5 ; x3do:rotation ( 0 0 1 1.57 ) ; x3do:scale ( 1 .1 1 ) ; x3do:translation ( 0 -0.5 0 ) . :travelLock-USE-5 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_4_1_6 ; owl:sameAs :travelLock . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_4_1_7 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :travelLockOrient ; x3do:hasChildren :travelLock-USE-6 ; x3do:rotation ( 0 0 1 1.57 ) ; x3do:scale ( 1 .1 1 ) ; x3do:translation ( 1 .5 0 ) . :travelLock-USE-6 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_4_1_7 ; owl:sameAs :travelLock . # DEF matching this USE :Transform_2_10_2_1_2_1_3_1_1_4_1_8 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :travelLockOrient ; x3do:hasChildren :travelLock-USE-7 ; x3do:rotation ( 0 0 1 1.57 ) ; x3do:scale ( 1 .1 1 ) ; x3do:translation ( 1 -0.5 0 ) . :travelLock-USE-7 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_4_1_8 ; owl:sameAs :travelLock . # DEF matching this USE :travelLockOrientor a owl:NamedIndividual, x3do:OrientationInterpolator ; x3do:hasParent :travelLockPiece ; x3do:DEF 'travelLockOrientor' ; x3do:key ( 0 .25 .5 .75 .85 1 ) ; x3do:keyValue ( 1 0 0 -2.25 1 0 0 -1.7 1 0 0 -1.25 1 0 0 -0.75 1 0 0 -0.5 1 0 0 0 ) . :travelLockSensor a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :travelLockPiece ; x3do:DEF 'travelLockSensor' ; x3do:description 'rasies and lowers travel lock' . :travelLockClock a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :travelLockPiece ; x3do:DEF 'travelLockClock' ; x3do:cycleInterval '5' . :ROUTE_2_10_2_1_2_1_3_1_1_4_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :travelLockPiece ; x3do:fromField 'touchTime' ; x3do:fromNode 'travelLockSensor' ; x3do:toField 'set_startTime' ; x3do:toNode 'travelLockClock' . :ROUTE_2_10_2_1_2_1_3_1_1_4_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :travelLockPiece ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'travelLockClock' ; x3do:toField 'set_fraction' ; x3do:toNode 'travelLockOrientor' . :ROUTE_2_10_2_1_2_1_3_1_1_4_7 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :travelLockPiece ; x3do:fromField 'value_changed' ; x3do:fromNode 'travelLockOrientor' ; x3do:toField 'set_rotation' ; x3do:toNode 'travelLockOrient' . :theRound a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :recoilTransform ; x3do:hasChildren :theRoundSpinner, :roundPathInterpolator, :roundOrientationInterpolator, :rideTheRound ; x3do:DEF 'theRound' ; x3do:rotation ( 1 0 0 -0.77 ) ; x3do:translation ( 0 3.7 -2.5 ) . :theRoundSpinner a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :theRound ; x3do:hasChildren :Transform_2_10_2_1_2_1_3_1_1_5_1_1, :spinTimer, :roundSpinner ; x3do:DEF 'theRoundSpinner' . :Transform_2_10_2_1_2_1_3_1_1_5_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :theRoundSpinner ; x3do:hasChildren :Transform_2_10_2_1_2_1_3_1_1_5_1_1_1 . :Transform_2_10_2_1_2_1_3_1_1_5_1_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_5_1_1 ; x3do:hasChildren :artyRound ; x3do:scale ( .2 1 .2 ) . :artyRound a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_1_5_1_1_1 ; x3do:hasAppearance :camiPaint-USE-24 ; x3do:hasGeometry :Extrusion_2_10_2_1_2_1_3_1_1_5_1_1_1_1_2 ; x3do:DEF 'artyRound' . :camiPaint-USE-24 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :artyRound ; owl:sameAs :camiPaint . # DEF matching this USE :Extrusion_2_10_2_1_2_1_3_1_1_5_1_1_1_1_2 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :artyRound ; x3do:crossSection ( -1 0 -0.9 0.435889894354067 -0.8 0.6 -0.7 0.714142842854285 -0.6 0.8 -0.5 0.866025403784439 -0.4 0.916515138991168 -0.3 0.953939201416946 -0.2 0.979795897113271 -0.1 0.99498743710662 0 1 0.1 0.99498743710662 0.2 0.979795897113271 0.3 0.953939201416946 0.4 0.916515138991168 0.5 0.866025403784439 0.6 0.8 0.7 0.714142842854285 0.8 0.6 0.9 0.435889894354067 1 0 0.9 -0.435889894354067 0.8 -0.6 0.7 -0.714142842854285 0.6 -0.8 0.5 -0.866025403784439 0.4 -0.916515138991168 0.3 -0.953939201416946 0.2 -0.979795897113271 0.1 -0.99498743710662 0 -1 -0.1 -0.99498743710662 -0.2 -0.979795897113271 -0.3 -0.953939201416946 -0.4 -0.916515138991168 -0.5 -0.866025403784439 -0.6 -0.8 -0.7 -0.714142842854285 -0.8 -0.6 -0.9 -0.435889894354067 -1 0 ) ; x3do:scale ( .35 .35 .5 .5 .5 .5 .3 .3 .01 .01 ) ; x3do:spine ( 0 0 0 0 .15 0 0 .8 0 0 .9 0 0 1 0 ) . :spinTimer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :theRoundSpinner ; x3do:DEF 'spinTimer' ; x3do:cycleInterval '3' ; x3do:loop true . :roundSpinner a owl:NamedIndividual, x3do:OrientationInterpolator ; x3do:hasParent :theRoundSpinner ; x3do:DEF 'roundSpinner' ; x3do:key ( 0.0 0.25 0.50 0.75 1.0 ) ; x3do:keyValue ( 0 1 0 -1.57 0 1 0 0 0 1 0 1.57 0 1 0 3.14 0 1 0 -1.57 ) . :roundPathInterpolator a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :theRound ; x3do:DEF 'roundPathInterpolator' ; x3do:key ( 0.057 0.0858823529 0.088235294 0.117647059 0.147058824 0.176470588 0.205882353 0.235294118 0.264705882 0.294117647 0.323529412 0.352941176 0.382352941 0.411764706 0.441176471 0.470588235 0.5 0.529411765 0.558823529 0.588235294 0.617647059 0.647058824 0.676470588 0.705882353 0.735294118 0.764705882 0.794117647 0.823529412 0.852941176 0.882352941 0.911764706 0.941176471 0.970588235 ) ; x3do:keyValue ( 0 3.8 -2.6 0 30.6227766 -10 0 59.2455532 -20 0 85.86832981 -30 0 110.4911064 -40 0 133.113883 -50 0 153.7366596 -60 0 172.3594362 -70 0 188.9822128 -80 0 203.6049894 -90 0 216.227766 -100 0 226.8505426 -110 0 235.4733192 -120 0 242.0960958 -130 0 246.7188724 -140 0 249.341649 -150 0 249.9644256 -160 0 248.5872022 -170 0 245.2099788 -180 0 239.8327554 -190 0 232.455532 -200 0 223.0783086 -210 0 211.7010852 -220 0 198.3238618 -230 0 182.9466384 -240 0 165.569415 -250 0 146.1921916 -260 0 124.8149682 -270 0 101.4377448 -280 0 76.06052145 -290 0 48.68329805 -300 0 19.30607465 -310 0 -1 -320 ) . :roundOrientationInterpolator a owl:NamedIndividual, x3do:OrientationInterpolator ; x3do:hasParent :theRound ; x3do:DEF 'roundOrientationInterpolator' ; x3do:key ( 0.029411765 0.058823529 0.088235294 0.117647059 0.147058824 0.176470588 0.205882353 0.235294118 0.264705882 0.294117647 0.323529412 0.352941176 0.382352941 0.411764706 0.441176471 0.470588235 0.5 0.529411765 0.558823529 0.588235294 0.617647059 0.647058824 0.676470588 0.705882353 0.735294118 0.764705882 0.794117647 0.823529412 0.852941176 0.882352941 0.911764706 0.941176471 0.970588235 ) ; x3do:keyValue ( 1 0 0 -1.03580267483729 1 0 0 -1.07069156372618 1 0 0 -1.10558045261507 1 0 0 -1.14046934150396 1 0 0 -1.17535823039285 1 0 0 -1.21024711928174 1 0 0 -1.24513600817063 1 0 0 -1.28002489705952 1 0 0 -1.31491378594841 1 0 0 -1.34980267483729 1 0 0 -1.38469156372618 1 0 0 -1.41958045261507 1 0 0 -1.45446934150396 1 0 0 -1.48935823039285 1 0 0 -1.52424711928174 1 0 0 -1.55913600817063 1 0 0 -1.59402489705952 1 0 0 -1.6289137859484 1 0 0 -1.66380267483729 1 0 0 -1.69869156372618 1 0 0 -1.73358045261507 1 0 0 -1.76846934150396 1 0 0 -1.80335823039285 1 0 0 -1.83824711928174 1 0 0 -1.87313600817063 1 0 0 -1.90802489705952 1 0 0 -1.9429137859484 1 0 0 -1.97780267483729 1 0 0 -2.01269156372618 1 0 0 -2.04758045261507 1 0 0 -2.08246934150396 1 0 0 -2.11735823039285 1 0 0 -2.15224711928174 ) . :rideTheRound a owl:NamedIndividual, x3do:Viewpoint ; x3do:hasParent :theRound ; x3do:DEF 'rideTheRound' ; x3do:description 'ride the round' ; x3do:orientation ( 1 0 0 .45 ) ; x3do:position ( 0 -5 10 ) . :RECOILTIMER a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :recoilTransform ; x3do:DEF 'RECOILTIMER' ; x3do:cycleInterval '5' . :recoil a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :recoilTransform ; x3do:DEF 'recoil' ; x3do:key ( 0 .2 .4 .6 .8 1 ) ; x3do:keyValue ( 0 0 0 0 -0.20 .25 0 -0.40 .5 0 -0.20 .25 0 -0.10 .15 0 0 0 ) . :ROUTE_2_10_2_1_2_1_3_1_1_8 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :recoilTransform ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'RECOILTIMER' ; x3do:toField 'set_fraction' ; x3do:toNode 'recoil' . :ROUTE_2_10_2_1_2_1_3_1_1_9 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :recoilTransform ; x3do:fromField 'value_changed' ; x3do:fromNode 'recoil' ; x3do:toField 'set_translation' ; x3do:toNode 'recoilMover' . :shotEffects a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :barrel ; x3do:hasChildren :hotGas, :Transform_2_10_2_1_2_1_3_1_2_2 ; x3do:DEF 'shotEffects' ; x3do:rotation ( 1 0 0 1.57 ) ; x3do:translation ( -4.7 0 -3.5 ) . :hotGas a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :shotEffects ; x3do:hasChildren :Group_2_10_2_1_2_1_3_1_2_1_1 ; x3do:DEF 'hotGas' ; x3do:rotation ( 0 0 1 -0.76 ) ; x3do:translation ( -0.3 -0.3 0 ) . :Group_2_10_2_1_2_1_3_1_2_1_1 a owl:NamedIndividual, x3do:Group ; x3do:hasParent :hotGas ; x3do:hasChildren :BallTransform, :BALLSIZE, :BOOMCLOCK . :BallTransform a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Group_2_10_2_1_2_1_3_1_2_1_1 ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_2_1_1_1_1 ; x3do:DEF 'BallTransform' ; x3do:scale ( .000001 .0000001 .0000001 ) . :Shape_2_10_2_1_2_1_3_1_2_1_1_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :BallTransform ; x3do:hasGeometry :EXPSHAPE ; x3do:hasAppearance :Appearance_2_10_2_1_2_1_3_1_2_1_1_1_1_2 . :EXPSHAPE a owl:NamedIndividual, x3do:Sphere ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_2_1_1_1_1 ; x3do:DEF 'EXPSHAPE' ; x3do:radius 25 . :Appearance_2_10_2_1_2_1_3_1_2_1_1_1_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_2_1_1_1_1 ; x3do:hasTexture :explosion . :explosion a owl:NamedIndividual, x3do:ImageTexture ; x3do:hasParent :Appearance_2_10_2_1_2_1_3_1_2_1_1_1_1_2 ; x3do:DEF 'explosion' ; x3do:url '"explosion.png" "https://savage.nps.edu/Savage/GroundVehicles/T72M/explosion.png" "https://savage.nps.edu/Savage/Weapons/Missiles/explosion.png"' . :BALLSIZE a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Group_2_10_2_1_2_1_3_1_2_1_1 ; x3do:DEF 'BALLSIZE' ; x3do:key ( 0.0 0.1 0.2 .3 .4 .5 .6 .7 .8 .9 1.0 ) ; x3do:keyValue ( 0 0 0 .003 .001 .003 .006 .002 .006 .01 .003 .01 .015 .006 .015 .02 .02 .02 .01 .01 .01 .006 .006 .006 .003 .003 .003 0 0 0 0 0 0 ) . :BOOMCLOCK a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :Group_2_10_2_1_2_1_3_1_2_1_1 ; x3do:DEF 'BOOMCLOCK' ; x3do:cycleInterval '.85' . :Transform_2_10_2_1_2_1_3_1_2_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :shotEffects ; x3do:hasChildren :BoomTransform ; x3do:hasROUTE :ROUTE_2_10_2_1_2_1_3_1_2_2_2, :ROUTE_2_10_2_1_2_1_3_1_2_2_3, :ROUTE_2_10_2_1_2_1_3_1_2_2_4, :ROUTE_2_10_2_1_2_1_3_1_2_2_5, :ROUTE_2_10_2_1_2_1_3_1_2_2_6, :ROUTE_2_10_2_1_2_1_3_1_2_2_7 ; x3do:rotation ( 0 0 1 -0.76 ) . :BoomTransform a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_2_2 ; x3do:hasChildren :Shape_2_10_2_1_2_1_3_1_2_2_1_1, :TransparencyInterp, :ScaleInterp, :BoomTimer ; x3do:DEF 'BoomTransform' ; x3do:scale ( 0.0001 0.00001 0.00001 ) ; x3do:translation ( 0.0 0 0.0 ) . :Shape_2_10_2_1_2_1_3_1_2_2_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :BoomTransform ; x3do:hasGeometry :Extrusion_2_10_2_1_2_1_3_1_2_2_1_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_2_1_3_1_2_2_1_1_2 . :Extrusion_2_10_2_1_2_1_3_1_2_2_1_1_1 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_2_2_1_1 ; x3do:beginCap false ; x3do:creaseAngle 1.57 ; x3do:crossSection ( 1.0 0.0 0.92 -0.38 0.71 -0.71 0.38 -0.92 0.0 -1.0 -0.38 -0.92 -0.71 -0.71 -0.92 -0.38 -1.0 -0.0 -0.92 0.38 -0.71 0.71 -0.38 0.92 0.0 1.0 0.38 0.92 0.71 0.71 0.92 0.38 1.0 0.0 ) ; x3do:endCap false ; x3do:spine ( 2.0 0.0 0.0 1.85 0.0 0.77 1.41 0.0 1.41 0.77 0.0 1.85 0.0 0.0 2.0 -0.77 0.0 1.85 -1.41 0.0 1.41 -1.85 0.0 0.77 -2.0 0.0 0.0 -1.85 0.0 -0.77 -1.41 0.0 -1.41 -0.77 0.0 -1.85 0.0 0.0 -2.0 0.77 0.0 -1.85 1.41 0.0 -1.41 1.85 0.0 -0.77 2.0 0.0 0.0 ) . :Appearance_2_10_2_1_2_1_3_1_2_2_1_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_10_2_1_2_1_3_1_2_2_1_1 ; x3do:hasMaterial :BoomMaterial ; x3do:hasTexture :ImageTexture_2_10_2_1_2_1_3_1_2_2_1_1_2_2 . :BoomMaterial a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_2_1_3_1_2_2_1_1_2 ; x3do:DEF 'BoomMaterial' . :ImageTexture_2_10_2_1_2_1_3_1_2_2_1_1_2_2 a owl:NamedIndividual, x3do:ImageTexture ; x3do:hasParent :Appearance_2_10_2_1_2_1_3_1_2_2_1_1_2 ; x3do:url '"Boom1.jpg" "https://savage.nps.edu/Savage/GroundVehicles/T72M/Boom1.jpg" "https://savage.nps.edu/Savage/ShipsMilitary/FrigateYavuzTurkey/Boom1.jpg"' . :TransparencyInterp a owl:NamedIndividual, x3do:ScalarInterpolator ; x3do:hasParent :BoomTransform ; x3do:DEF 'TransparencyInterp' ; x3do:key ( 0 0.04 0.1 0.7 1.0 ) ; x3do:keyValue ( 1.0 0.2 0.3 1.0 1.0 ) . :ScaleInterp a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :BoomTransform ; x3do:DEF 'ScaleInterp' ; x3do:key ( 0 0.04 0.1 0.7 1.0 ) ; x3do:keyValue ( 0.00001 0.00001 0.00001 0.05 0.4 0.05 0.4 0.6 0.4 0.5 0.9 0.5 0.00001 0.0001 0.00001 ) . :BoomTimer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :BoomTransform ; x3do:DEF 'BoomTimer' ; x3do:cycleInterval '5.0' . :ROUTE_2_10_2_1_2_1_3_1_2_2_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_2_2 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'BOOMCLOCK' ; x3do:toField 'set_fraction' ; x3do:toNode 'BALLSIZE' . :ROUTE_2_10_2_1_2_1_3_1_2_2_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_2_2 ; x3do:fromField 'value_changed' ; x3do:fromNode 'BALLSIZE' ; x3do:toField 'set_scale' ; x3do:toNode 'BallTransform' . :ROUTE_2_10_2_1_2_1_3_1_2_2_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_2_2 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'BoomTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'ScaleInterp' . :ROUTE_2_10_2_1_2_1_3_1_2_2_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_2_2 ; x3do:fromField 'value_changed' ; x3do:fromNode 'ScaleInterp' ; x3do:toField 'set_scale' ; x3do:toNode 'BoomTransform' . :ROUTE_2_10_2_1_2_1_3_1_2_2_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_2_2 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'BoomTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'TransparencyInterp' . :ROUTE_2_10_2_1_2_1_3_1_2_2_7 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Transform_2_10_2_1_2_1_3_1_2_2 ; x3do:fromField 'value_changed' ; x3do:fromNode 'TransparencyInterp' ; x3do:toField 'set_transparency' ; x3do:toNode 'BoomMaterial' . :elevMechMover1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :barrelMover1 ; x3do:hasChildren :Transform_2_10_2_1_2_1_4_1 ; x3do:DEF 'elevMechMover1' . :Transform_2_10_2_1_2_1_4_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :elevMechMover1 ; x3do:hasChildren :Transform_2_10_2_1_2_1_4_1_1 . :Transform_2_10_2_1_2_1_4_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_4_1 ; x3do:hasChildren :Transform_2_10_2_1_2_1_4_1_1_1, :Transform_2_10_2_1_2_1_4_1_1_2 ; x3do:rotation ( 0 0 1 1.57 ) . :Transform_2_10_2_1_2_1_4_1_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_4_1_1 ; x3do:hasChildren :elevatingMech1, :Transform_2_10_2_1_2_1_4_1_1_1_2 ; x3do:rotation ( 1 0 0 -0.25 ) ; x3do:translation ( .45 1.7 -0.3 ) . :elevatingMech1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_4_1_1_1 ; x3do:hasGeometry :Cylinder_2_10_2_1_2_1_4_1_1_1_1_1 ; x3do:hasAppearance :camiPaint-USE-25 ; x3do:DEF 'elevatingMech1' . :Cylinder_2_10_2_1_2_1_4_1_1_1_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :elevatingMech1 ; x3do:height 1.3 ; x3do:radius .08 . :camiPaint-USE-25 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :elevatingMech1 ; owl:sameAs :camiPaint . # DEF matching this USE :Transform_2_10_2_1_2_1_4_1_1_1_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_4_1_1_1 ; x3do:hasChildren :lowerElevMechExtender ; x3do:translation ( 0 -1 0 ) . :lowerElevMechExtender a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_4_1_1_1_2 ; x3do:hasGeometry :Cylinder_2_10_2_1_2_1_4_1_1_1_2_1_1 ; x3do:hasAppearance :Appearance_2_10_2_1_2_1_4_1_1_1_2_1_2 ; x3do:DEF 'lowerElevMechExtender' . :Cylinder_2_10_2_1_2_1_4_1_1_1_2_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :lowerElevMechExtender ; x3do:height 1 ; x3do:radius .070 . :Appearance_2_10_2_1_2_1_4_1_1_1_2_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :lowerElevMechExtender ; x3do:hasMaterial :Material_2_10_2_1_2_1_4_1_1_1_2_1_2_1 . :Material_2_10_2_1_2_1_4_1_1_1_2_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_10_2_1_2_1_4_1_1_1_2_1_2 ; x3do:diffuseColor ( .7 .7 .7 ) . :Transform_2_10_2_1_2_1_4_1_1_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_4_1_1 ; x3do:hasChildren :elevatingMech1-USE-1, :Transform_2_10_2_1_2_1_4_1_1_2_2 ; x3do:rotation ( 1 0 0 -0.25 ) ; x3do:translation ( -0.45 1.7 -0.3 ) . :elevatingMech1-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_4_1_1_2 ; owl:sameAs :elevatingMech1 . # DEF matching this USE :Transform_2_10_2_1_2_1_4_1_1_2_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_10_2_1_2_1_4_1_1_2 ; x3do:hasChildren :lowerElevMechExtender-USE-1 ; x3do:translation ( 0 -1 0 ) . :lowerElevMechExtender-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_10_2_1_2_1_4_1_1_2_2 ; owl:sameAs :lowerElevMechExtender . # DEF matching this USE :upperCylinderMover a owl:NamedIndividual, x3do:Script ; x3do:hasParent :barrelGroup ; x3do:hasField :field_2_10_2_1_2_2_1, :field_2_10_2_1_2_2_2, :field_2_10_2_1_2_2_3, :field_2_10_2_1_2_2_4 ; x3do:DEF 'upperCylinderMover' ; x3do:sourceCode """ ecmascript: function barrelRotation (value, eventTime ) { angle = value[3]; outputAngle = .75 * angle; upperRotation = new SFRotation ( 0, 1, 0, outputAngle); extendCylinder = new SFVec3f ( 0, .22 + (-.7 * angle), 0); shrinkCylinder = new SFVec3f (1, 1.02 * (.85 - angle), 1); } """ . :field_2_10_2_1_2_2_1 a owl:NamedIndividual, x3do:field ; x3do:hasParent :upperCylinderMover ; x3do:accessType 'inputOnly' ; x3do:name 'barrelRotation' ; x3do:type 'SFRotation' . :field_2_10_2_1_2_2_2 a owl:NamedIndividual, x3do:field ; x3do:hasParent :upperCylinderMover ; x3do:accessType 'outputOnly' ; x3do:name 'upperRotation' ; x3do:type 'SFRotation' . :field_2_10_2_1_2_2_3 a owl:NamedIndividual, x3do:field ; x3do:hasParent :upperCylinderMover ; x3do:accessType 'outputOnly' ; x3do:name 'shrinkCylinder' ; x3do:type 'SFVec3f' . :field_2_10_2_1_2_2_4 a owl:NamedIndividual, x3do:field ; x3do:hasParent :upperCylinderMover ; x3do:accessType 'outputOnly' ; x3do:name 'extendCylinder' ; x3do:type 'SFVec3f' . :ROUTE_2_10_2_1_2_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :barrelGroup ; x3do:fromField 'rotation_changed' ; x3do:fromNode 'tubeSensor' ; x3do:toField 'barrelRotation' ; x3do:toNode 'upperCylinderMover' . :ROUTE_2_10_2_1_2_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :barrelGroup ; x3do:fromField 'upperRotation' ; x3do:fromNode 'upperCylinderMover' ; x3do:toField 'set_rotation' ; x3do:toNode 'ruc' . :ROUTE_2_10_2_1_2_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :barrelGroup ; x3do:fromField 'extendCylinder' ; x3do:fromNode 'upperCylinderMover' ; x3do:toField 'set_translation' ; x3do:toNode 'shrinkCylinder' . :ROUTE_2_10_2_1_2_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :barrelGroup ; x3do:fromField 'shrinkCylinder' ; x3do:fromNode 'upperCylinderMover' ; x3do:toField 'set_scale' ; x3do:toNode 'shrinkCylinder' . :ROUTE_2_10_2_1_2_7 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :barrelGroup ; x3do:fromField 'extendCylinder' ; x3do:fromNode 'upperCylinderMover' ; x3do:toField 'set_translation' ; x3do:toNode 'shrinkCylinderR' . :ROUTE_2_10_2_1_2_8 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :barrelGroup ; x3do:fromField 'shrinkCylinder' ; x3do:fromNode 'upperCylinderMover' ; x3do:toField 'set_scale' ; x3do:toNode 'shrinkCylinderR' . :carriage_sensor a owl:NamedIndividual, x3do:CylinderSensor ; x3do:hasParent :rotateUpperCarriage ; x3do:DEF 'carriage_sensor' ; x3do:description 'sensor for upper carriage deflection' ; x3do:maxAngle .90 ; x3do:minAngle -0.90 . :ROUTE_2_10_2_1_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :rotateUpperCarriage ; x3do:fromField 'rotation_changed' ; x3do:fromNode 'carriage_sensor' ; x3do:toField 'set_rotation' ; x3do:toNode 'rotateUpperCarriage' . :Background_2_11 a owl:NamedIndividual, x3do:Background ; x3do:hasParent :Scene ; x3do:backUrl '"sky2.jpg" "https://savage.nps.edu/Savage/Weapons/Guns/sky2.jpg"' ; x3do:frontUrl '"sky2.jpg" "https://savage.nps.edu/Savage/Weapons/Guns/sky2.jpg"' ; x3do:leftUrl '"sky2.jpg" "https://savage.nps.edu/Savage/Weapons/Guns/sky2.jpg"' ; x3do:rightUrl '"sky2.jpg" "https://savage.nps.edu/Savage/Weapons/Guns/sky2.jpg"' ; x3do:topUrl '"sky2.jpg" "https://savage.nps.edu/Savage/Weapons/Guns/sky2.jpg"' . :target a owl:NamedIndividual, x3do:Viewpoint ; x3do:hasParent :Scene ; x3do:DEF 'target' ; x3do:description 'as seen from target' ; x3do:orientation ( 0 0.995 -0.097 3.14 ) ; x3do:position ( 0 10 -372 ) . :theGround a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Scene ; x3do:hasChildren :Transform_2_13_1 ; x3do:DEF 'theGround' ; x3do:translation ( 0 -1.5 0 ) . :Transform_2_13_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :theGround ; x3do:hasChildren :Inline_2_13_1_1 ; x3do:scale ( 100 .3 100 ) . :Inline_2_13_1_1 a owl:NamedIndividual, x3do:Inline ; x3do:hasParent :Transform_2_13_1 ; x3do:url '"../../../Vrml2Sourcebook/Chapter14-ElevationGrid/Figure14.5ElevationGridTerrain.x3d" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter14-ElevationGrid/Figure14.5ElevationGridTerrain.x3d" "../../../Vrml2Sourcebook/Chapter14-ElevationGrid/Figure14.5ElevationGridTerrain.wrl" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter14-ElevationGrid/Figure14.5ElevationGridTerrain.wrl"' . :ROUTE_2_14 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'isOver' ; x3do:fromNode 'wheelSensor' ; x3do:toField 'set_enabled' ; x3do:toNode 'CLOCK' . :ROUTE_2_15 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'CLOCK' ; x3do:toField 'set_fraction' ; x3do:toNode 'wheelInterpolator' . :ROUTE_2_16 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'value_changed' ; x3do:fromNode 'wheelInterpolator' ; x3do:toField 'set_rotation' ; x3do:toNode 'leftWheel1' . :fireTheRound a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Scene ; x3do:hasChildren :fireMe, :shootRound, :clock3 ; x3do:DEF 'fireTheRound' ; x3do:translation ( 5 3 -5 ) . :fireMe a owl:NamedIndividual, x3do:Billboard ; x3do:hasParent :fireTheRound ; x3do:hasChildren :Transform_2_17_1_1, :Shape_2_17_1_2 ; x3do:DEF 'fireMe' . :Transform_2_17_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :fireMe ; x3do:hasChildren :Shape_2_17_1_1_1 ; x3do:translation ( -1 -0.35 0 ) . :Shape_2_17_1_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_17_1_1 ; x3do:hasGeometry :Text_2_17_1_1_1_1 ; x3do:hasAppearance :Appearance_2_17_1_1_1_2 . :Text_2_17_1_1_1_1 a owl:NamedIndividual, x3do:Text ; x3do:hasParent :Shape_2_17_1_1_1 ; x3do:hasFontStyle :FontStyle_2_17_1_1_1_1_1 ; x3do:string '"FIRE!"' . :FontStyle_2_17_1_1_1_1_1 a owl:NamedIndividual, x3do:FontStyle ; x3do:hasParent :Text_2_17_1_1_1_1 ; x3do:justify '"MIDDLE" "MIDDLE"' . :Appearance_2_17_1_1_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_17_1_1_1 ; x3do:hasMaterial :Material_2_17_1_1_1_2_1 . :Material_2_17_1_1_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_17_1_1_1_2 ; x3do:emissiveColor ( .9 .9 .9 ) . :Shape_2_17_1_2 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :fireMe ; x3do:hasGeometry :sign ; x3do:hasAppearance :Appearance_2_17_1_2_2 . :sign a owl:NamedIndividual, x3do:Box ; x3do:hasParent :Shape_2_17_1_2 ; x3do:DEF 'sign' ; x3do:size ( 4 2 .2 ) . :Appearance_2_17_1_2_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_17_1_2 ; x3do:hasMaterial :Material_2_17_1_2_2_1 ; x3do:hasTexture :camo-USE-1 . :Material_2_17_1_2_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_17_1_2_2 ; x3do:transparency .6 . :camo-USE-1 a owl:NamedIndividual, x3do:ImageTexture ; x3do:hasParent :Appearance_2_17_1_2_2 ; owl:sameAs :camo . # DEF matching this USE :shootRound a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :fireTheRound ; x3do:DEF 'shootRound' ; x3do:description 'touch muzzlebreak to shoot round' . :clock3 a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :fireTheRound ; x3do:DEF 'clock3' ; x3do:cycleInterval '15' . :targetSphere a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Scene ; x3do:hasChildren :Transform_2_18_1, :explosionSounds ; x3do:hasROUTE :ROUTE_2_18_3 ; x3do:DEF 'targetSphere' ; x3do:translation ( 0 0 -320 ) . :Transform_2_18_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :targetSphere ; x3do:hasChildren :Shape_2_18_1_1, :explosionsoundsensor . :Shape_2_18_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_18_1 ; x3do:hasGeometry :Box_2_18_1_1_1 ; x3do:hasAppearance :camiPaint-USE-26 . :Box_2_18_1_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :Shape_2_18_1_1 ; x3do:size ( 10 1 10 ) . :camiPaint-USE-26 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_18_1_1 ; owl:sameAs :camiPaint . # DEF matching this USE :explosionsoundsensor a owl:NamedIndividual, x3do:ProximitySensor ; x3do:hasParent :Transform_2_18_1 ; x3do:DEF 'explosionsoundsensor' ; x3do:size ( 200 400 300 ) . :explosionSounds a owl:NamedIndividual, x3do:Sound ; x3do:hasParent :targetSphere ; x3do:hasSource :explosionSound ; x3do:DEF 'explosionSounds' ; x3do:maxBack 100 ; x3do:maxFront 100 ; x3do:minBack .01 ; x3do:minFront .01 . :explosionSound a owl:NamedIndividual, x3do:AudioClip ; x3do:hasParent :explosionSounds ; x3do:DEF 'explosionSound' ; x3do:description 'explosion sound' ; x3do:url '"ShellExplode.au" "https://savage.nps.edu/Savage/Weapons/Guns/ShellExplode.au"' . :ROUTE_2_18_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :targetSphere ; x3do:fromField 'enterTime' ; x3do:fromNode 'explosionsoundsensor' ; x3do:toField 'startTime' ; x3do:toNode 'explosionSound' . :Transform_2_19 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Scene ; x3do:hasChildren :artyRound-USE-1 ; x3do:scale ( .2 1 .2 ) ; x3do:translation ( 5 0 0 ) . :artyRound-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_19 ; owl:sameAs :artyRound . # DEF matching this USE :Transform_2_20 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Scene ; x3do:hasChildren :artyRound-USE-2 ; x3do:scale ( .2 1 .2 ) ; x3do:translation ( 5.2 0 0 ) . :artyRound-USE-2 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_20 ; owl:sameAs :artyRound . # DEF matching this USE :Transform_2_21 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Scene ; x3do:hasChildren :artyRound-USE-3 ; x3do:scale ( .2 1 .2 ) ; x3do:translation ( 5.4 0 0 ) . :artyRound-USE-3 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_21 ; owl:sameAs :artyRound . # DEF matching this USE :Transform_2_22 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Scene . :ROUTE_2_23 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'touchTime' ; x3do:fromNode 'shootRound' ; x3do:toField 'set_startTime' ; x3do:toNode 'BoomTimer' . :ROUTE_2_24 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'touchTime' ; x3do:fromNode 'shootRound' ; x3do:toField 'set_startTime' ; x3do:toNode 'RECOILTIMER' . :ROUTE_2_25 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'touchTime' ; x3do:fromNode 'shootRound' ; x3do:toField 'set_startTime' ; x3do:toNode 'BOOMCLOCK' . :ROUTE_2_26 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'touchTime' ; x3do:fromNode 'shootRound' ; x3do:toField 'set_startTime' ; x3do:toNode 'clock3' . :ROUTE_2_27 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'touchTime' ; x3do:fromNode 'shootRound' ; x3do:toField 'startTime' ; x3do:toNode 'CannonFireSound' . :ROUTE_2_28 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'clock3' ; x3do:toField 'set_fraction' ; x3do:toNode 'roundPathInterpolator' . :ROUTE_2_29 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'clock3' ; x3do:toField 'set_fraction' ; x3do:toNode 'roundOrientationInterpolator' . :ROUTE_2_30 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'value_changed' ; x3do:fromNode 'roundPathInterpolator' ; x3do:toField 'set_translation' ; x3do:toNode 'theRound' . :ROUTE_2_31 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'value_changed' ; x3do:fromNode 'roundOrientationInterpolator' ; x3do:toField 'set_rotation' ; x3do:toNode 'theRound' . :ROUTE_2_32 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'touchTime' ; x3do:fromNode 'shootRound' ; x3do:toField 'set_startTime' ; x3do:toNode 'spinTimer' . :ROUTE_2_33 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'spinTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'roundSpinner' . :ROUTE_2_34 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Scene ; x3do:fromField 'value_changed' ; x3do:fromNode 'roundSpinner' ; x3do:toField 'set_rotation' ; x3do:toNode 'theRoundSpinner' .