@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_1 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'Sail.x3d' ; x3do:name 'title' . :meta_1_2 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'Sail of 688 Submarine with masts up' ; x3do:name 'description' . :meta_1_3 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'LT Ken Curtin' ; x3do:name 'creator' . :meta_1_4 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content '4 August 2003' ; 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 'http://www.fas.org/man/dod-101/sys/ship/ssn-688.htm' ; x3do:name 'reference' . :meta_1_7 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'http://www.combatindex.com/store/3d/ssn688_model.html' ; x3do:name 'reference' . :meta_1_8 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'Submarine, 688, Sail' ; x3do:name 'subject' . :meta_1_9 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Sail.x3d' ; x3do:name 'identifier' . :meta_1_10 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content 'X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit' ; x3do:name 'generator' . :meta_1_11 a owl:NamedIndividual, x3do:meta ; x3do:hasParent :head ; x3do:content '../../license.html' ; x3do:name 'license' . :meta dcterms:title "Sail.x3d" . :meta dcterms:description "Sail of 688 Submarine with masts up" . :meta dcterms:creator "LT Ken Curtin" . :meta dcterms:created "4 August 2003" . :meta dcterms:modified "28 November 2019" . :meta dcterms:reference "http://www.fas.org/man/dod-101/sys/ship/ssn-688.htm" . :meta dcterms:reference "http://www.combatindex.com/store/3d/ssn688_model.html" . :meta dcterms:subject "Submarine, 688, Sail" . :meta dcterms:identifier "https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Sail.x3d" . :meta dcterms:generator "X3D-Edit 3.2, 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, :UpTimer, :DownTimer, :Viewpoint_2_5, :Transform_2_6, :ProtoInstance_2_7 ; x3do:hasExternProtoDeclare :ExternProtoDeclare_2_2 . :WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ; x3do:hasParent :Scene ; x3do:title 'Sail.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 ; x3do:name 'HeadsUpDisplay' ; x3do:url '"../../../X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.x3d#HeadsUpDisplay" "https://savage.nps.edu/Savage/Tools/HeadsUpDisplays/HeadsUpDisplayPrototype.x3d#HeadsUpDisplay" "../../../X3dForWebAuthors/Chapter14Prototypes/HeadsUpDisplayPrototype.wrl#HeadsUpDisplay" "https://savage.nps.edu/Savage/Tools/HeadsUpDisplays/HeadsUpDisplayPrototype.wrl#HeadsUpDisplay"' . :field_2_2_1 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'inputOutput' ; x3do:appinfo 'Displayed subscene positioned as a HUD.' ; x3do:name 'children' ; x3do:type 'MFNode' . :field_2_2_2 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'inputOutput' ; x3do:appinfo 'Additional HUD geometry which can be touched and dragged for repositioning. If this geometry goes offscreen (perhaps due to screen resizing) then it snaps back to original position.' ; x3do:name 'dragChildren' ; x3do:type 'MFNode' . :field_2_2_3 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'initializeOnly' ; x3do:appinfo 'Modified screen location and distance (for size).' ; x3do:name 'locationOffset' ; x3do:type 'SFVec3f' . :field_2_2_4 a owl:NamedIndividual, x3do:field ; x3do:hasParent :ExternProtoDeclare_2_2 ; x3do:accessType 'initializeOnly' ; x3do:appinfo 'Enable/disable console output for troubleshooting.' ; x3do:name 'traceEnabled' ; x3do:type 'SFBool' . :UpTimer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :Scene ; x3do:DEF 'UpTimer' ; x3do:cycleInterval '4' . :DownTimer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :Scene ; x3do:DEF 'DownTimer' ; x3do:cycleInterval '4' . :Viewpoint_2_5 a owl:NamedIndividual, x3do:Viewpoint ; x3do:hasParent :Scene ; x3do:description 'StbdSideSail' ; x3do:orientation ( 0.351 0.933 -0.077 0.2902 ) ; x3do:position ( 4.3 5.4 17.8 ) . :Transform_2_6 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Scene ; x3do:hasChildren :Bridge, :RadarGroup, :Periscopes, :SnorkelMast, :ANBRA-34, :Sail, :BRD-7, :NavID, :FairwaterPlanesMain . :Bridge a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_6 ; x3do:hasChildren :Shape_2_6_1_1 ; x3do:DEF 'Bridge' ; x3do:translation ( 2.62 5.52 0 ) . :Shape_2_6_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Bridge ; x3do:hasGeometry :Box_2_6_1_1_1 ; x3do:hasAppearance :Gray . :Box_2_6_1_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :Shape_2_6_1_1 ; x3do:size ( .966 .1 1.04 ) . :Gray a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_1_1 ; x3do:hasMaterial :Material_2_6_1_1_2_1 ; x3do:DEF 'Gray' . :Material_2_6_1_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Gray ; x3do:diffuseColor ( .8 .8 .8 ) ; x3do:shininess .8 . :RadarGroup a owl:NamedIndividual, x3do:Group ; x3do:hasParent :Transform_2_6 ; x3do:hasChildren :MoveRadar ; x3do:DEF 'RadarGroup' . :MoveRadar a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :RadarGroup ; x3do:hasChildren :RadarTop, :Radar, :MoveRadarTouch, :MoveRadarUpAndDown, :MoveRadarUp, :MoveRadarDown ; x3do:DEF 'MoveRadar' . :RadarTop a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveRadar ; x3do:hasChildren :Shape_2_6_2_1_1_1 ; x3do:DEF 'RadarTop' ; x3do:translation ( 1.74 7.52 -0.276 ) . :Shape_2_6_2_1_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :RadarTop ; x3do:hasGeometry :Box_2_6_2_1_1_1_1 ; x3do:hasAppearance :Black . :Box_2_6_2_1_1_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :Shape_2_6_2_1_1_1 ; x3do:size ( .276 .25 1.104 ) . :Black a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_2_1_1_1 ; x3do:hasMaterial :Material_2_6_2_1_1_1_2_1 ; x3do:DEF 'Black' . :Material_2_6_2_1_1_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Black ; x3do:diffuseColor ( .1 .1 .1 ) . :Radar a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveRadar ; x3do:hasChildren :Shape_2_6_2_1_2_1 ; x3do:DEF 'Radar' ; x3do:translation ( 1.74 6.52 -0.276 ) . :Shape_2_6_2_1_2_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Radar ; x3do:hasGeometry :Cylinder_2_6_2_1_2_1_1 ; x3do:hasAppearance :Gray-USE-1 . :Cylinder_2_6_2_1_2_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_6_2_1_2_1 ; x3do:radius .1 . :Gray-USE-1 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_2_1_2_1 ; owl:sameAs :Gray . # DEF matching this USE :MoveRadarTouch a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :MoveRadar ; x3do:DEF 'MoveRadarTouch' ; x3do:description 'Touch Sensor to cycle radar' . :MoveRadarUpAndDown a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveRadar ; x3do:hasChildren :RadarTimer, :RadarUpAndDown ; x3do:hasROUTE :ROUTE_2_6_2_1_4_2, :ROUTE_2_6_2_1_4_4, :ROUTE_2_6_2_1_4_5 ; x3do:DEF 'MoveRadarUpAndDown' . :RadarTimer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :MoveRadarUpAndDown ; x3do:DEF 'RadarTimer' ; x3do:cycleInterval '8' . :ROUTE_2_6_2_1_4_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveRadarUpAndDown ; x3do:fromField 'touchTime' ; x3do:fromNode 'MoveRadarTouch' ; x3do:toField 'set_startTime' ; x3do:toNode 'RadarTimer' . :RadarUpAndDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveRadarUpAndDown ; x3do:DEF 'RadarUpAndDown' ; x3do:key ( 0 .5 1 ) ; x3do:keyValue ( 0 0 0 0 -2.5 0 0 0 0 ) . :ROUTE_2_6_2_1_4_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveRadarUpAndDown ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'RadarTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'RadarUpAndDown' . :ROUTE_2_6_2_1_4_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveRadarUpAndDown ; x3do:fromField 'value_changed' ; x3do:fromNode 'RadarUpAndDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveRadar' . :MoveRadarUp a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveRadar ; x3do:hasChildren :RadarUp ; x3do:hasROUTE :ROUTE_2_6_2_1_5_2, :ROUTE_2_6_2_1_5_3 ; x3do:DEF 'MoveRadarUp' . :RadarUp a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveRadarUp ; x3do:DEF 'RadarUp' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 -2.5 0 0 0 0 ) . :ROUTE_2_6_2_1_5_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveRadarUp ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'UpTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'RadarUp' . :ROUTE_2_6_2_1_5_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveRadarUp ; x3do:fromField 'value_changed' ; x3do:fromNode 'RadarUp' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveRadar' . :MoveRadarDown a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveRadar ; x3do:hasChildren :RadarDown ; x3do:hasROUTE :ROUTE_2_6_2_1_6_2, :ROUTE_2_6_2_1_6_3 ; x3do:DEF 'MoveRadarDown' . :RadarDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveRadarDown ; x3do:DEF 'RadarDown' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 0 0 0 -2.5 0 ) . :ROUTE_2_6_2_1_6_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveRadarDown ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'DownTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'RadarDown' . :ROUTE_2_6_2_1_6_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveRadarDown ; x3do:fromField 'value_changed' ; x3do:fromNode 'RadarDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveRadar' . :Periscopes a owl:NamedIndividual, x3do:Group ; x3do:hasParent :Transform_2_6 ; x3do:hasChildren :MoveScope1, :MoveScope2 ; x3do:DEF 'Periscopes' . :MoveScope1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Periscopes ; x3do:hasChildren :MoveScope1Sensor, :Scope1Timer, :Scope1UpAndDown, :No1Scope, :Move1ScopeUp, :Move1ScopeDown ; x3do:hasROUTE :ROUTE_2_6_3_1_3, :ROUTE_2_6_3_1_5, :ROUTE_2_6_3_1_6 ; x3do:DEF 'MoveScope1' . :MoveScope1Sensor a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :MoveScope1 ; x3do:DEF 'MoveScope1Sensor' ; x3do:description 'Sensor to cycle #1 Scope' . :Scope1Timer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :MoveScope1 ; x3do:DEF 'Scope1Timer' ; x3do:cycleInterval '4' . :ROUTE_2_6_3_1_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveScope1 ; x3do:fromField 'touchTime' ; x3do:fromNode 'MoveScope1Sensor' ; x3do:toField 'set_startTime' ; x3do:toNode 'Scope1Timer' . :Scope1UpAndDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveScope1 ; x3do:DEF 'Scope1UpAndDown' ; x3do:key ( 0 .5 1 ) ; x3do:keyValue ( 0 0 0 0 -10 0 0 0 0 ) . :ROUTE_2_6_3_1_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveScope1 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'Scope1Timer' ; x3do:toField 'set_fraction' ; x3do:toNode 'Scope1UpAndDown' . :ROUTE_2_6_3_1_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveScope1 ; x3do:fromField 'value_changed' ; x3do:fromNode 'Scope1UpAndDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveScope1' . :No1Scope a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveScope1 ; x3do:hasChildren :Scope, :Transform_2_6_3_1_7_2 ; x3do:DEF 'No1Scope' ; x3do:translation ( -0.483 6.9 .414 ) . :Scope a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :No1Scope ; x3do:hasGeometry :Cylinder_2_6_3_1_7_1_1 ; x3do:hasAppearance :Gray-USE-2 ; x3do:DEF 'Scope' . :Cylinder_2_6_3_1_7_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Scope ; x3do:height 13.8 ; x3do:radius .05 . :Gray-USE-2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Scope ; owl:sameAs :Gray . # DEF matching this USE :Transform_2_6_3_1_7_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :No1Scope ; x3do:hasChildren :ScopeFairing ; x3do:scale ( 1.5 1 1 ) . :ScopeFairing a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_6_3_1_7_2 ; x3do:hasGeometry :Cylinder_2_6_3_1_7_2_1_1 ; x3do:hasAppearance :Appearance_2_6_3_1_7_2_1_2 ; x3do:DEF 'ScopeFairing' . :Cylinder_2_6_3_1_7_2_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :ScopeFairing ; x3do:height 7 ; x3do:radius .1 . :Appearance_2_6_3_1_7_2_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :ScopeFairing ; x3do:hasMaterial :SeaFoamGreen . :SeaFoamGreen a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_6_3_1_7_2_1_2 ; x3do:DEF 'SeaFoamGreen' ; x3do:diffuseColor ( .6 1 .8 ) . :Move1ScopeUp a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveScope1 ; x3do:hasChildren :Scope1Up ; x3do:hasROUTE :ROUTE_2_6_3_1_8_2, :ROUTE_2_6_3_1_8_3 ; x3do:DEF 'Move1ScopeUp' . :Scope1Up a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Move1ScopeUp ; x3do:DEF 'Scope1Up' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 -10 0 0 0 0 ) . :ROUTE_2_6_3_1_8_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move1ScopeUp ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'UpTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'Scope1Up' . :ROUTE_2_6_3_1_8_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move1ScopeUp ; x3do:fromField 'value_changed' ; x3do:fromNode 'Scope1Up' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveScope1' . :Move1ScopeDown a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveScope1 ; x3do:hasChildren :Scope1Down ; x3do:hasROUTE :ROUTE_2_6_3_1_9_2, :ROUTE_2_6_3_1_9_3 ; x3do:DEF 'Move1ScopeDown' . :Scope1Down a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Move1ScopeDown ; x3do:DEF 'Scope1Down' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 0 0 0 -10 0 ) . :ROUTE_2_6_3_1_9_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move1ScopeDown ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'DownTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'Scope1Down' . :ROUTE_2_6_3_1_9_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move1ScopeDown ; x3do:fromField 'value_changed' ; x3do:fromNode 'Scope1Down' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveScope1' . :MoveScope2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Periscopes ; x3do:hasChildren :MoveScope2Touch, :Scope2Timer, :Scope2UpAndDown, :No2Scope, :Move2ScopeDown, :Move2ScopeUp ; x3do:hasROUTE :ROUTE_2_6_3_2_3, :ROUTE_2_6_3_2_5, :ROUTE_2_6_3_2_6 ; x3do:DEF 'MoveScope2' . :MoveScope2Touch a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :MoveScope2 ; x3do:DEF 'MoveScope2Touch' ; x3do:description 'Sensor to Cycle #2 Scope' . :Scope2Timer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :MoveScope2 ; x3do:DEF 'Scope2Timer' ; x3do:cycleInterval '4' . :ROUTE_2_6_3_2_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveScope2 ; x3do:fromField 'touchTime' ; x3do:fromNode 'MoveScope2Touch' ; x3do:toField 'set_startTime' ; x3do:toNode 'Scope2Timer' . :Scope2UpAndDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveScope2 ; x3do:DEF 'Scope2UpAndDown' ; x3do:key ( 0 .5 1 ) ; x3do:keyValue ( 0 0 0 0 -10 0 0 0 0 ) . :ROUTE_2_6_3_2_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveScope2 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'Scope2Timer' ; x3do:toField 'set_fraction' ; x3do:toNode 'Scope2UpAndDown' . :ROUTE_2_6_3_2_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveScope2 ; x3do:fromField 'value_changed' ; x3do:fromNode 'Scope2UpAndDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveScope2' . :No2Scope a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveScope2 ; x3do:hasChildren :Scope-USE-1, :Transform_2_6_3_2_7_2 ; x3do:DEF 'No2Scope' ; x3do:translation ( -0.483 6.9 -0.414 ) . :Scope-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :No2Scope ; owl:sameAs :Scope . # DEF matching this USE :Transform_2_6_3_2_7_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :No2Scope ; x3do:hasChildren :ScopeFairing-USE-1 ; x3do:scale ( 1.5 1 1 ) . :ScopeFairing-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_6_3_2_7_2 ; owl:sameAs :ScopeFairing . # DEF matching this USE :Move2ScopeDown a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveScope2 ; x3do:hasChildren :Scope2Down ; x3do:hasROUTE :ROUTE_2_6_3_2_8_2, :ROUTE_2_6_3_2_8_3 ; x3do:DEF 'Move2ScopeDown' . :Scope2Down a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Move2ScopeDown ; x3do:DEF 'Scope2Down' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 0 0 0 -10 0 ) . :ROUTE_2_6_3_2_8_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move2ScopeDown ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'DownTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'Scope2Down' . :ROUTE_2_6_3_2_8_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move2ScopeDown ; x3do:fromField 'value_changed' ; x3do:fromNode 'Scope2Down' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveScope2' . :Move2ScopeUp a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveScope2 ; x3do:hasChildren :Scope2Up ; x3do:hasROUTE :ROUTE_2_6_3_2_9_2, :ROUTE_2_6_3_2_9_3 ; x3do:DEF 'Move2ScopeUp' . :Scope2Up a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Move2ScopeUp ; x3do:DEF 'Scope2Up' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 -10 0 0 0 0 ) . :ROUTE_2_6_3_2_9_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move2ScopeUp ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'UpTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'Scope2Up' . :ROUTE_2_6_3_2_9_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move2ScopeUp ; x3do:fromField 'value_changed' ; x3do:fromNode 'Scope2Up' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveScope2' . :SnorkelMast a owl:NamedIndividual, x3do:Group ; x3do:hasParent :Transform_2_6 ; x3do:hasChildren :MoveSnorkel ; x3do:DEF 'SnorkelMast' . :MoveSnorkel a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :SnorkelMast ; x3do:hasChildren :MoveSnorkelTouch, :Timer, :UpAndDown, :Snorkel, :SnorkelCap, :MoveSnorkelUp, :MoveSnorkelDown ; x3do:hasROUTE :ROUTE_2_6_4_1_3, :ROUTE_2_6_4_1_5, :ROUTE_2_6_4_1_6 ; x3do:DEF 'MoveSnorkel' . :MoveSnorkelTouch a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :MoveSnorkel ; x3do:DEF 'MoveSnorkelTouch' ; x3do:description 'Sensor to Cycle Snorkel Mast' . :Timer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :MoveSnorkel ; x3do:DEF 'Timer' ; x3do:cycleInterval '4' . :ROUTE_2_6_4_1_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveSnorkel ; x3do:fromField 'touchTime' ; x3do:fromNode 'MoveSnorkelTouch' ; x3do:toField 'set_startTime' ; x3do:toNode 'Timer' . :UpAndDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveSnorkel ; x3do:DEF 'UpAndDown' ; x3do:key ( 0 .5 1 ) ; x3do:keyValue ( 0 0 0 0 -5 0 0 0 0 ) . :ROUTE_2_6_4_1_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveSnorkel ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'Timer' ; x3do:toField 'set_fraction' ; x3do:toNode 'UpAndDown' . :ROUTE_2_6_4_1_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveSnorkel ; x3do:fromField 'value_changed' ; x3do:fromNode 'UpAndDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveSnorkel' . :Snorkel a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveSnorkel ; x3do:hasChildren :Shape_2_6_4_1_7_1 ; x3do:DEF 'Snorkel' ; x3do:scale ( 1.3 1 1 ) ; x3do:translation ( -2.484 7.52 0 ) . :Shape_2_6_4_1_7_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Snorkel ; x3do:hasGeometry :Cylinder_2_6_4_1_7_1_1 ; x3do:hasAppearance :Appearance_2_6_4_1_7_1_2 . :Cylinder_2_6_4_1_7_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_6_4_1_7_1 ; x3do:height 4 ; x3do:radius .3 . :Appearance_2_6_4_1_7_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_4_1_7_1 ; x3do:hasMaterial :Material_2_6_4_1_7_1_2_1 . :Material_2_6_4_1_7_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_6_4_1_7_1_2 ; x3do:diffuseColor ( .6 .6 .6 ) . :SnorkelCap a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveSnorkel ; x3do:hasChildren :Shape_2_6_4_1_8_1 ; x3do:DEF 'SnorkelCap' ; x3do:scale ( 1.4 1.1 1.1 ) ; x3do:translation ( -2.484 9.52 0 ) . :Shape_2_6_4_1_8_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :SnorkelCap ; x3do:hasGeometry :Cylinder_2_6_4_1_8_1_1 ; x3do:hasAppearance :Black-USE-1 . :Cylinder_2_6_4_1_8_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_6_4_1_8_1 ; x3do:height .6 ; x3do:radius .5 . :Black-USE-1 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_4_1_8_1 ; owl:sameAs :Black . # DEF matching this USE :MoveSnorkelUp a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveSnorkel ; x3do:hasChildren :SnorkelUp ; x3do:hasROUTE :ROUTE_2_6_4_1_9_2, :ROUTE_2_6_4_1_9_3 ; x3do:DEF 'MoveSnorkelUp' . :SnorkelUp a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveSnorkelUp ; x3do:DEF 'SnorkelUp' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 -5 0 0 0 0 ) . :ROUTE_2_6_4_1_9_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveSnorkelUp ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'UpTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'SnorkelUp' . :ROUTE_2_6_4_1_9_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveSnorkelUp ; x3do:fromField 'value_changed' ; x3do:fromNode 'SnorkelUp' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveSnorkel' . :MoveSnorkelDown a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveSnorkel ; x3do:hasChildren :SnorkelDown ; x3do:hasROUTE :ROUTE_2_6_4_1_10_2, :ROUTE_2_6_4_1_10_3 ; x3do:DEF 'MoveSnorkelDown' . :SnorkelDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveSnorkelDown ; x3do:DEF 'SnorkelDown' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 0 0 0 -5 0 ) . :ROUTE_2_6_4_1_10_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveSnorkelDown ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'DownTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'SnorkelDown' . :ROUTE_2_6_4_1_10_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveSnorkelDown ; x3do:fromField 'value_changed' ; x3do:fromNode 'SnorkelDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveSnorkel' . :ANBRA-34 a owl:NamedIndividual, x3do:Group ; x3do:hasParent :Transform_2_6 ; x3do:hasChildren :MoveBRA-34, :MoveBRA-34No2 ; x3do:DEF 'ANBRA-34' . :MoveBRA-34 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :ANBRA-34 ; x3do:hasChildren :MoveBRA-34Touch, :BRA-34Timer, :BRA-34UpAndDown, :No1BRA34, :Move1Bra34Up, :Move1BRA-34lDown ; x3do:hasROUTE :ROUTE_2_6_5_1_4, :ROUTE_2_6_5_1_5, :ROUTE_2_6_5_1_6 ; x3do:DEF 'MoveBRA-34' . :MoveBRA-34Touch a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :MoveBRA-34 ; x3do:DEF 'MoveBRA-34Touch' ; x3do:description 'Cycles #1 Bra-34' . :BRA-34Timer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :MoveBRA-34 ; x3do:DEF 'BRA-34Timer' ; x3do:cycleInterval '4' . :BRA-34UpAndDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveBRA-34 ; x3do:DEF 'BRA-34UpAndDown' ; x3do:key ( 0 .5 1 ) ; x3do:keyValue ( 0 0 0 0 -10 0 0 0 0 ) . :ROUTE_2_6_5_1_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRA-34 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'BRA-34Timer' ; x3do:toField 'set_fraction' ; x3do:toNode 'BRA-34UpAndDown' . :ROUTE_2_6_5_1_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRA-34 ; x3do:fromField 'value_changed' ; x3do:fromNode 'BRA-34UpAndDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveBRA-34' . :ROUTE_2_6_5_1_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRA-34 ; x3do:fromField 'touchTime' ; x3do:fromNode 'MoveBRA-34Touch' ; x3do:toField 'set_startTime' ; x3do:toNode 'BRA-34Timer' . :No1BRA34 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveBRA-34 ; x3do:hasChildren :BRA34Fairing, :BRA34Cap, :Transform_2_6_5_1_7_3 ; x3do:DEF 'No1BRA34' ; x3do:translation ( .552 7.4 .414 ) . :BRA34Fairing a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :No1BRA34 ; x3do:hasChildren :BRA34FairingShape ; x3do:DEF 'BRA34Fairing' ; x3do:scale ( 1.8 1 1 ) . :BRA34FairingShape a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :BRA34Fairing ; x3do:hasGeometry :Cylinder_2_6_5_1_7_1_1_1 ; x3do:hasAppearance :Gray-USE-3 ; x3do:DEF 'BRA34FairingShape' . :Cylinder_2_6_5_1_7_1_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :BRA34FairingShape ; x3do:height 7 ; x3do:radius .13 . :Gray-USE-3 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :BRA34FairingShape ; owl:sameAs :Gray . # DEF matching this USE :BRA34Cap a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :No1BRA34 ; x3do:hasChildren :Cap ; x3do:DEF 'BRA34Cap' ; x3do:translation ( 0 6.95 0 ) . :Cap a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :BRA34Cap ; x3do:hasGeometry :Cylinder_2_6_5_1_7_2_1_1 ; x3do:hasAppearance :Black-USE-2 ; x3do:DEF 'Cap' . :Cylinder_2_6_5_1_7_2_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Cap ; x3do:height .1 ; x3do:radius .08 . :Black-USE-2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Cap ; owl:sameAs :Black . # DEF matching this USE :Transform_2_6_5_1_7_3 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :No1BRA34 ; x3do:hasChildren :BRA34Shape ; x3do:translation ( 0 3 0 ) . :BRA34Shape a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_6_5_1_7_3 ; x3do:hasGeometry :BRA34 ; x3do:hasAppearance :Appearance_2_6_5_1_7_3_1_2 ; x3do:DEF 'BRA34Shape' . :BRA34 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :BRA34Shape ; x3do:DEF 'BRA34' ; x3do:height 7.8 ; x3do:radius .08 . :Appearance_2_6_5_1_7_3_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :BRA34Shape ; x3do:hasMaterial :SeaFoamGreen-USE-1 . :SeaFoamGreen-USE-1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_6_5_1_7_3_1_2 ; owl:sameAs :SeaFoamGreen . # DEF matching this USE :Move1Bra34Up a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveBRA-34 ; x3do:hasChildren :BRA-34Up ; x3do:hasROUTE :ROUTE_2_6_5_1_8_2, :ROUTE_2_6_5_1_8_3 ; x3do:DEF 'Move1Bra34Up' . :BRA-34Up a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Move1Bra34Up ; x3do:DEF 'BRA-34Up' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 -10 0 0 0 0 ) . :ROUTE_2_6_5_1_8_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move1Bra34Up ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'UpTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'BRA-34Up' . :ROUTE_2_6_5_1_8_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move1Bra34Up ; x3do:fromField 'value_changed' ; x3do:fromNode 'BRA-34Up' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveBRA-34' . :Move1BRA-34lDown a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveBRA-34 ; x3do:hasChildren :BRA-34Down ; x3do:hasROUTE :ROUTE_2_6_5_1_9_2, :ROUTE_2_6_5_1_9_3 ; x3do:DEF 'Move1BRA-34lDown' . :BRA-34Down a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Move1BRA-34lDown ; x3do:DEF 'BRA-34Down' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 0 0 0 -10 0 ) . :ROUTE_2_6_5_1_9_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move1BRA-34lDown ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'DownTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'BRA-34Down' . :ROUTE_2_6_5_1_9_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move1BRA-34lDown ; x3do:fromField 'value_changed' ; x3do:fromNode 'BRA-34Down' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveBRA-34' . :MoveBRA-34No2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :ANBRA-34 ; x3do:hasChildren :Move2BRA-34Touch, :No2BRA-34Timer, :No2BRA-34UpAndDown, :No2BRA34, :Move2Bra34Up, :Move2BRA-34lDown ; x3do:hasROUTE :ROUTE_2_6_5_2_4, :ROUTE_2_6_5_2_5, :ROUTE_2_6_5_2_6 ; x3do:DEF 'MoveBRA-34No2' . :Move2BRA-34Touch a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :MoveBRA-34No2 ; x3do:DEF 'Move2BRA-34Touch' ; x3do:description 'Cycles #2 Bra-34' . :No2BRA-34Timer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :MoveBRA-34No2 ; x3do:DEF 'No2BRA-34Timer' ; x3do:cycleInterval '4' . :No2BRA-34UpAndDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveBRA-34No2 ; x3do:DEF 'No2BRA-34UpAndDown' ; x3do:key ( 0 .5 1 ) ; x3do:keyValue ( 0 0 0 0 -10 0 0 0 0 ) . :ROUTE_2_6_5_2_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRA-34No2 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'No2BRA-34Timer' ; x3do:toField 'set_fraction' ; x3do:toNode 'No2BRA-34UpAndDown' . :ROUTE_2_6_5_2_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRA-34No2 ; x3do:fromField 'value_changed' ; x3do:fromNode 'No2BRA-34UpAndDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveBRA-34No2' . :ROUTE_2_6_5_2_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRA-34No2 ; x3do:fromField 'touchTime' ; x3do:fromNode 'Move2BRA-34Touch' ; x3do:toField 'set_startTime' ; x3do:toNode 'No2BRA-34Timer' . :No2BRA34 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveBRA-34No2 ; x3do:hasChildren :Transform_2_6_5_2_7_1, :Transform_2_6_5_2_7_2, :Transform_2_6_5_2_7_3 ; x3do:DEF 'No2BRA34' ; x3do:translation ( .552 7.4 -0.414 ) . :Transform_2_6_5_2_7_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :No2BRA34 ; x3do:hasChildren :BRA34FairingShape-USE-1 ; x3do:scale ( 1.8 1 1 ) . :BRA34FairingShape-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_6_5_2_7_1 ; owl:sameAs :BRA34FairingShape . # DEF matching this USE :Transform_2_6_5_2_7_2 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :No2BRA34 ; x3do:hasChildren :Cap-USE-1 ; x3do:translation ( 0 6.95 0 ) . :Cap-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_6_5_2_7_2 ; owl:sameAs :Cap . # DEF matching this USE :Transform_2_6_5_2_7_3 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :No2BRA34 ; x3do:hasChildren :BRA34Shape-USE-1 ; x3do:translation ( 0 3 0 ) . :BRA34Shape-USE-1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_6_5_2_7_3 ; owl:sameAs :BRA34Shape . # DEF matching this USE :Move2Bra34Up a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveBRA-34No2 ; x3do:hasChildren :BRA-342Up ; x3do:hasROUTE :ROUTE_2_6_5_2_8_2, :ROUTE_2_6_5_2_8_3 ; x3do:DEF 'Move2Bra34Up' . :BRA-342Up a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Move2Bra34Up ; x3do:DEF 'BRA-342Up' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 -10 0 0 0 0 ) . :ROUTE_2_6_5_2_8_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move2Bra34Up ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'UpTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'BRA-342Up' . :ROUTE_2_6_5_2_8_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move2Bra34Up ; x3do:fromField 'value_changed' ; x3do:fromNode 'BRA-342Up' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveBRA-34No2' . :Move2BRA-34lDown a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveBRA-34No2 ; x3do:hasChildren :BRA-342Down ; x3do:hasROUTE :ROUTE_2_6_5_2_9_2, :ROUTE_2_6_5_2_9_3 ; x3do:DEF 'Move2BRA-34lDown' . :BRA-342Down a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :Move2BRA-34lDown ; x3do:DEF 'BRA-342Down' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 0 0 0 -10 0 ) . :ROUTE_2_6_5_2_9_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move2BRA-34lDown ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'DownTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'BRA-342Down' . :ROUTE_2_6_5_2_9_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :Move2BRA-34lDown ; x3do:fromField 'value_changed' ; x3do:fromNode 'BRA-342Down' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveBRA-34No2' . :Sail a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_6 ; x3do:hasChildren :Shape_2_6_6_1 ; x3do:DEF 'Sail' . :Shape_2_6_6_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Sail ; x3do:hasAppearance :Black-USE-3 ; x3do:hasGeometry :Extrusion_2_6_6_1_2 . :Black-USE-3 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_6_1 ; owl:sameAs :Black . # DEF matching this USE :Extrusion_2_6_6_1_2 a owl:NamedIndividual, x3do:Extrusion ; x3do:hasParent :Shape_2_6_6_1 ; x3do:creaseAngle 3 ; x3do:crossSection ( -5.382 0 -4.41 .414 -2.76 .69 -1.38 .828 0 .966 1.38 .966 2.76 .759 3.312 .69 3.726 .552 4.002 .207 4.14 0 4.002 -0.207 3.726 -0.552 3.312 -0.69 2.76 -0.759 1.38 -0.966 0 -0.966 -1.38 -0.828 -2.76 -0.69 -4.14 -0.414 -5.382 0 ) ; x3do:spine ( 0 0 0 0 5.52 0 ) . :BRD-7 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_6 ; x3do:hasChildren :MoveBRD7 ; x3do:DEF 'BRD-7' ; x3do:translation ( -1.449 7.52 0 ) . :MoveBRD7 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :BRD-7 ; x3do:hasChildren :MoveBRD7Touch, :BRD7Timer, :BRD7UpAndDown, :BRD-7Pole, :BRD-7TopHat, :MoveBRD-7Up, :MoveBRD-7lDown ; x3do:hasROUTE :ROUTE_2_6_7_1_3, :ROUTE_2_6_7_1_5, :ROUTE_2_6_7_1_6 ; x3do:DEF 'MoveBRD7' . :MoveBRD7Touch a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :MoveBRD7 ; x3do:DEF 'MoveBRD7Touch' ; x3do:description 'Cycles BRD-7' . :BRD7Timer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :MoveBRD7 ; x3do:DEF 'BRD7Timer' ; x3do:cycleInterval '4' . :ROUTE_2_6_7_1_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRD7 ; x3do:fromField 'touchTime' ; x3do:fromNode 'MoveBRD7Touch' ; x3do:toField 'set_startTime' ; x3do:toNode 'BRD7Timer' . :BRD7UpAndDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveBRD7 ; x3do:DEF 'BRD7UpAndDown' ; x3do:key ( 0 .5 1 ) ; x3do:keyValue ( 0 0 0 0 -5.5 0 0 0 0 ) . :ROUTE_2_6_7_1_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRD7 ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'BRD7Timer' ; x3do:toField 'set_fraction' ; x3do:toNode 'BRD7UpAndDown' . :ROUTE_2_6_7_1_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRD7 ; x3do:fromField 'value_changed' ; x3do:fromNode 'BRD7UpAndDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveBRD7' . :BRD-7Pole a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveBRD7 ; x3do:hasChildren :Shape_2_6_7_1_7_1 ; x3do:DEF 'BRD-7Pole' . :Shape_2_6_7_1_7_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :BRD-7Pole ; x3do:hasGeometry :Cylinder_2_6_7_1_7_1_1 ; x3do:hasAppearance :Black-USE-4 . :Cylinder_2_6_7_1_7_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_6_7_1_7_1 ; x3do:height 6 ; x3do:radius .1 . :Black-USE-4 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_7_1_7_1 ; owl:sameAs :Black . # DEF matching this USE :BRD-7TopHat a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveBRD7 ; x3do:hasChildren :Shape_2_6_7_1_8_1 ; x3do:DEF 'BRD-7TopHat' ; x3do:translation ( 0 3 0 ) . :Shape_2_6_7_1_8_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :BRD-7TopHat ; x3do:hasGeometry :Cylinder_2_6_7_1_8_1_1 ; x3do:hasAppearance :Black-USE-5 . :Cylinder_2_6_7_1_8_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_6_7_1_8_1 ; x3do:height .8 ; x3do:radius .5 . :Black-USE-5 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_7_1_8_1 ; owl:sameAs :Black . # DEF matching this USE :MoveBRD-7Up a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveBRD7 ; x3do:hasChildren :BRD7Up ; x3do:hasROUTE :ROUTE_2_6_7_1_9_2, :ROUTE_2_6_7_1_9_3 ; x3do:DEF 'MoveBRD-7Up' . :BRD7Up a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveBRD-7Up ; x3do:DEF 'BRD7Up' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 -5.5 0 0 0 0 ) . :ROUTE_2_6_7_1_9_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRD-7Up ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'UpTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'BRD7Up' . :ROUTE_2_6_7_1_9_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRD-7Up ; x3do:fromField 'value_changed' ; x3do:fromNode 'BRD7Up' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveBRD7' . :MoveBRD-7lDown a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveBRD7 ; x3do:hasChildren :BRD7Down ; x3do:hasROUTE :ROUTE_2_6_7_1_10_2, :ROUTE_2_6_7_1_10_3 ; x3do:DEF 'MoveBRD-7lDown' . :BRD7Down a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveBRD-7lDown ; x3do:DEF 'BRD7Down' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 0 0 0 -5.5 0 ) . :ROUTE_2_6_7_1_10_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRD-7lDown ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'DownTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'BRD7Down' . :ROUTE_2_6_7_1_10_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveBRD-7lDown ; x3do:fromField 'value_changed' ; x3do:fromNode 'BRD7Down' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveBRD7' . :NavID a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_6 ; x3do:hasChildren :MoveNavID ; x3do:DEF 'NavID' ; x3do:translation ( 1.449 5.52 .552 ) . :MoveNavID a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :NavID ; x3do:hasChildren :NavIDTouch, :NavIDTimer, :NavIDUpAndDown, :NavIDPole, :NavIDLight, :MoveNavIDUp, :MoveNavIDlDown ; x3do:hasROUTE :ROUTE_2_6_8_1_3, :ROUTE_2_6_8_1_5, :ROUTE_2_6_8_1_6 ; x3do:DEF 'MoveNavID' . :NavIDTouch a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :MoveNavID ; x3do:DEF 'NavIDTouch' ; x3do:description 'Cycles NAV ID' . :NavIDTimer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :MoveNavID ; x3do:DEF 'NavIDTimer' ; x3do:cycleInterval '4' . :ROUTE_2_6_8_1_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveNavID ; x3do:fromField 'touchTime' ; x3do:fromNode 'NavIDTouch' ; x3do:toField 'set_startTime' ; x3do:toNode 'NavIDTimer' . :NavIDUpAndDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveNavID ; x3do:DEF 'NavIDUpAndDown' ; x3do:key ( 0 .5 1 ) ; x3do:keyValue ( 0 0 0 0 -4.2 0 0 0 0 ) . :ROUTE_2_6_8_1_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveNavID ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'NavIDTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'NavIDUpAndDown' . :ROUTE_2_6_8_1_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveNavID ; x3do:fromField 'value_changed' ; x3do:fromNode 'NavIDUpAndDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveNavID' . :NavIDPole a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveNavID ; x3do:hasChildren :Shape_2_6_8_1_7_1 ; x3do:DEF 'NavIDPole' ; x3do:translation ( 0 2 0 ) . :Shape_2_6_8_1_7_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :NavIDPole ; x3do:hasGeometry :Cylinder_2_6_8_1_7_1_1 ; x3do:hasAppearance :Gray-USE-4 . :Cylinder_2_6_8_1_7_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_6_8_1_7_1 ; x3do:height 4 ; x3do:radius .05 . :Gray-USE-4 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_8_1_7_1 ; owl:sameAs :Gray . # DEF matching this USE :NavIDLight a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :MoveNavID ; x3do:hasChildren :Shape_2_6_8_1_8_1, :ColorPath, :AnimationClock ; x3do:hasROUTE :ROUTE_2_6_8_1_8_3, :ROUTE_2_6_8_1_8_5 ; x3do:DEF 'NavIDLight' ; x3do:translation ( 0 4 0 ) . :Shape_2_6_8_1_8_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :NavIDLight ; x3do:hasGeometry :Cylinder_2_6_8_1_8_1_1 ; x3do:hasAppearance :Appearance_2_6_8_1_8_1_2 . :Cylinder_2_6_8_1_8_1_1 a owl:NamedIndividual, x3do:Cylinder ; x3do:hasParent :Shape_2_6_8_1_8_1 ; x3do:height .3 ; x3do:radius .1 . :Appearance_2_6_8_1_8_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_6_8_1_8_1 ; x3do:hasMaterial :NavIDColor . :NavIDColor a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_6_8_1_8_1_2 ; x3do:DEF 'NavIDColor' ; x3do:ambientIntensity 0 . :ColorPath a owl:NamedIndividual, x3do:ColorInterpolator ; x3do:hasParent :NavIDLight ; x3do:DEF 'ColorPath' ; x3do:key ( 0.0 .2 .250 .450 .5 .7 .750 .875 1 ) ; x3do:keyValue ( .996 .598 0 .879 .988 .996 .996 .598 0 .879 .988 .996 .996 .598 0 .879 .988 .996 .879 .988 .996 .879 .988 .996 .879 .988 .996 ) . :ROUTE_2_6_8_1_8_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :NavIDLight ; x3do:fromField 'value_changed' ; x3do:fromNode 'ColorPath' ; x3do:toField 'set_emissiveColor' ; x3do:toNode 'NavIDColor' . :AnimationClock a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :NavIDLight ; x3do:DEF 'AnimationClock' ; x3do:cycleInterval '9' ; x3do:loop true . :ROUTE_2_6_8_1_8_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :NavIDLight ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'AnimationClock' ; x3do:toField 'set_fraction' ; x3do:toNode 'ColorPath' . :MoveNavIDUp a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveNavID ; x3do:hasChildren :NavIDUp ; x3do:hasROUTE :ROUTE_2_6_8_1_9_2, :ROUTE_2_6_8_1_9_3 ; x3do:DEF 'MoveNavIDUp' . :NavIDUp a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveNavIDUp ; x3do:DEF 'NavIDUp' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 -4.2 0 0 0 0 ) . :ROUTE_2_6_8_1_9_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveNavIDUp ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'UpTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'NavIDUp' . :ROUTE_2_6_8_1_9_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveNavIDUp ; x3do:fromField 'value_changed' ; x3do:fromNode 'NavIDUp' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveNavID' . :MoveNavIDlDown a owl:NamedIndividual, x3do:Group ; x3do:hasParent :MoveNavID ; x3do:hasChildren :NavIDDown ; x3do:hasROUTE :ROUTE_2_6_8_1_10_2, :ROUTE_2_6_8_1_10_3 ; x3do:DEF 'MoveNavIDlDown' . :NavIDDown a owl:NamedIndividual, x3do:PositionInterpolator ; x3do:hasParent :MoveNavIDlDown ; x3do:DEF 'NavIDDown' ; x3do:key ( 0 1 ) ; x3do:keyValue ( 0 0 0 0 -4.2 0 ) . :ROUTE_2_6_8_1_10_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveNavIDlDown ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'DownTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'NavIDDown' . :ROUTE_2_6_8_1_10_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :MoveNavIDlDown ; x3do:fromField 'value_changed' ; x3do:fromNode 'NavIDDown' ; x3do:toField 'set_translation' ; x3do:toNode 'MoveNavID' . :FairwaterPlanesMain a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :Transform_2_6 ; x3do:hasChildren :FairwaterPlanes ; x3do:DEF 'FairwaterPlanesMain' ; x3do:rotation ( 1 0 0 -1.57 ) ; x3do:translation ( -1.85 3.54 6 ) . :FairwaterPlanes a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :FairwaterPlanesMain ; x3do:hasChildren :Inline_2_6_9_1_1, :MoveFWPlanes, :FWPlaneTimer, :RotateFWPlanes ; x3do:hasROUTE :ROUTE_2_6_9_1_4, :ROUTE_2_6_9_1_6, :ROUTE_2_6_9_1_7 ; x3do:DEF 'FairwaterPlanes' ; x3do:center ( 3 0 0 ) . :Inline_2_6_9_1_1 a owl:NamedIndividual, x3do:Inline ; x3do:hasParent :FairwaterPlanes ; x3do:url '"Planes.x3d" "https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Planes.x3d" "Planes.wrl" "https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Planes.wrl"' . :MoveFWPlanes a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :FairwaterPlanes ; x3do:DEF 'MoveFWPlanes' ; x3do:description 'Cycles FW Planes' . :FWPlaneTimer a owl:NamedIndividual, x3do:TimeSensor ; x3do:hasParent :FairwaterPlanes ; x3do:DEF 'FWPlaneTimer' ; x3do:cycleInterval '5' . :ROUTE_2_6_9_1_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :FairwaterPlanes ; x3do:fromField 'touchTime' ; x3do:fromNode 'MoveFWPlanes' ; x3do:toField 'set_startTime' ; x3do:toNode 'FWPlaneTimer' . :RotateFWPlanes a owl:NamedIndividual, x3do:OrientationInterpolator ; x3do:hasParent :FairwaterPlanes ; x3do:DEF 'RotateFWPlanes' ; x3do:key ( 0 .25 .50 .75 1.0 ) ; x3do:keyValue ( 0 1 0 0.0 0 1 0 0.52 0 1 0 0.00 0 1 0 -0.52 0 1 0 0.00 ) . :ROUTE_2_6_9_1_6 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :FairwaterPlanes ; x3do:fromField 'fraction_changed' ; x3do:fromNode 'FWPlaneTimer' ; x3do:toField 'set_fraction' ; x3do:toNode 'RotateFWPlanes' . :ROUTE_2_6_9_1_7 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :FairwaterPlanes ; x3do:fromField 'value_changed' ; x3do:fromNode 'RotateFWPlanes' ; x3do:toField 'set_rotation' ; x3do:toNode 'FairwaterPlanes' . :ProtoInstance_2_7 a owl:NamedIndividual, x3do:ProtoInstance ; x3do:hasParent :Scene ; x3do:hasFieldValue :fieldValue_2_7_1, :fieldValue_2_7_2, :fieldValue_2_7_3 ; x3do:name 'HeadsUpDisplay' . :fieldValue_2_7_1 a owl:NamedIndividual, x3do:fieldValue ; x3do:hasParent :ProtoInstance_2_7 ; x3do:hasChildren :Transform_2_7_1_1 ; x3do:name 'dragChildren' . :Transform_2_7_1_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :fieldValue_2_7_1 ; x3do:hasChildren :Shape_2_7_1_1_1 ; x3do:translation ( 0 0 -0.2 ) . :Shape_2_7_1_1_1 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :Transform_2_7_1_1 ; x3do:hasGeometry :Box_2_7_1_1_1_1 ; x3do:hasAppearance :Appearance_2_7_1_1_1_2 . :Box_2_7_1_1_1_1 a owl:NamedIndividual, x3do:Box ; x3do:hasParent :Shape_2_7_1_1_1 ; x3do:size ( 5 2 0.001 ) . :Appearance_2_7_1_1_1_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_7_1_1_1 ; x3do:hasMaterial :Material_2_7_1_1_1_2_1 . :Material_2_7_1_1_1_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_7_1_1_1_2 ; x3do:diffuseColor ( 1 1 1 ) ; x3do:transparency 1 . :fieldValue_2_7_2 a owl:NamedIndividual, x3do:fieldValue ; x3do:hasParent :ProtoInstance_2_7 ; x3do:name 'locationOffset' ; x3do:value '4 2 0' . :fieldValue_2_7_3 a owl:NamedIndividual, x3do:fieldValue ; x3do:hasParent :ProtoInstance_2_7 ; x3do:hasChildren :Transform_2_7_3_1 ; x3do:name 'children' . :Transform_2_7_3_1 a owl:NamedIndividual, x3do:Transform ; x3do:hasParent :fieldValue_2_7_3 ; x3do:hasChildren :SwitchGroup, :LowerOrRaiseRouteGroup . :SwitchGroup a owl:NamedIndividual, x3do:Group ; x3do:hasParent :Transform_2_7_3_1 ; x3do:hasChildren :RaiseOrLowerButton, :AreMastsUp ; x3do:DEF 'SwitchGroup' . :RaiseOrLowerButton a owl:NamedIndividual, x3do:Switch ; x3do:hasParent :SwitchGroup ; x3do:hasChildren :LowerMasts, :RaiseMasts ; x3do:DEF 'RaiseOrLowerButton' ; x3do:whichChoice 0 . :LowerMasts a owl:NamedIndividual, x3do:Group ; x3do:hasParent :RaiseOrLowerButton ; x3do:hasChildren :ClickToLowerSensor, :Shape_2_7_3_1_1_1_1_2 ; x3do:DEF 'LowerMasts' . :ClickToLowerSensor a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :LowerMasts ; x3do:DEF 'ClickToLowerSensor' ; x3do:description 'Lower All Masts' . :Shape_2_7_3_1_1_1_1_2 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :LowerMasts ; x3do:hasGeometry :Text_2_7_3_1_1_1_1_2_1 ; x3do:hasAppearance :Appearance_2_7_3_1_1_1_1_2_2 . :Text_2_7_3_1_1_1_1_2_1 a owl:NamedIndividual, x3do:Text ; x3do:hasParent :Shape_2_7_3_1_1_1_1_2 ; x3do:hasFontStyle :HudText ; x3do:string '"Click To Lower All Masts"' . :HudText a owl:NamedIndividual, x3do:FontStyle ; x3do:hasParent :Text_2_7_3_1_1_1_1_2_1 ; x3do:DEF 'HudText' ; x3do:justify '"MIDDLE" "MIDDLE"' ; x3do:size 0.5 . :Appearance_2_7_3_1_1_1_1_2_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_7_3_1_1_1_1_2 ; x3do:hasMaterial :Material_2_7_3_1_1_1_1_2_2_1 . :Material_2_7_3_1_1_1_1_2_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_7_3_1_1_1_1_2_2 ; x3do:diffuseColor ( 0 .8 0 ) . :RaiseMasts a owl:NamedIndividual, x3do:Group ; x3do:hasParent :RaiseOrLowerButton ; x3do:hasChildren :ClickToRaiseSensor, :Shape_2_7_3_1_1_1_2_2 ; x3do:DEF 'RaiseMasts' . :ClickToRaiseSensor a owl:NamedIndividual, x3do:TouchSensor ; x3do:hasParent :RaiseMasts ; x3do:DEF 'ClickToRaiseSensor' ; x3do:description 'Raise ALl Masts' . :Shape_2_7_3_1_1_1_2_2 a owl:NamedIndividual, x3do:Shape ; x3do:hasParent :RaiseMasts ; x3do:hasGeometry :Text_2_7_3_1_1_1_2_2_1 ; x3do:hasAppearance :Appearance_2_7_3_1_1_1_2_2_2 . :Text_2_7_3_1_1_1_2_2_1 a owl:NamedIndividual, x3do:Text ; x3do:hasParent :Shape_2_7_3_1_1_1_2_2 ; x3do:hasFontStyle :HudText-USE-1 ; x3do:string '"Click To Raise All Masts"' . :HudText-USE-1 a owl:NamedIndividual, x3do:FontStyle ; x3do:hasParent :Text_2_7_3_1_1_1_2_2_1 ; owl:sameAs :HudText . # DEF matching this USE :Appearance_2_7_3_1_1_1_2_2_2 a owl:NamedIndividual, x3do:Appearance ; x3do:hasParent :Shape_2_7_3_1_1_1_2_2 ; x3do:hasMaterial :Material_2_7_3_1_1_1_2_2_2_1 . :Material_2_7_3_1_1_1_2_2_2_1 a owl:NamedIndividual, x3do:Material ; x3do:hasParent :Appearance_2_7_3_1_1_1_2_2_2 ; x3do:diffuseColor ( 1 0 0 ) . :AreMastsUp a owl:NamedIndividual, x3do:Script ; x3do:hasParent :SwitchGroup ; x3do:hasField :field_2_7_3_1_1_2_1, :field_2_7_3_1_1_2_2, :field_2_7_3_1_1_2_3 ; x3do:DEF 'AreMastsUp' ; x3do:sourceCode """ ecmascript: function up (value, timestamp) { setSwitch = 0; } function down (value, timestamp) { setSwitch = 1; } """ . :field_2_7_3_1_1_2_1 a owl:NamedIndividual, x3do:field ; x3do:hasParent :AreMastsUp ; x3do:accessType 'inputOnly' ; x3do:name 'up' ; x3do:type 'SFBool' . :field_2_7_3_1_1_2_2 a owl:NamedIndividual, x3do:field ; x3do:hasParent :AreMastsUp ; x3do:accessType 'inputOnly' ; x3do:name 'down' ; x3do:type 'SFBool' . :field_2_7_3_1_1_2_3 a owl:NamedIndividual, x3do:field ; x3do:hasParent :AreMastsUp ; x3do:accessType 'outputOnly' ; x3do:name 'setSwitch' ; x3do:type 'SFInt32' . :LowerOrRaiseRouteGroup a owl:NamedIndividual, x3do:Group ; x3do:hasParent :Transform_2_7_3_1 ; x3do:hasROUTE :ROUTE_2_7_3_1_2_1, :ROUTE_2_7_3_1_2_2, :ROUTE_2_7_3_1_2_3, :ROUTE_2_7_3_1_2_4, :ROUTE_2_7_3_1_2_5 ; x3do:DEF 'LowerOrRaiseRouteGroup' . :ROUTE_2_7_3_1_2_1 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :LowerOrRaiseRouteGroup ; x3do:fromField 'touchTime' ; x3do:fromNode 'ClickToLowerSensor' ; x3do:toField 'set_startTime' ; x3do:toNode 'DownTimer' . :ROUTE_2_7_3_1_2_2 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :LowerOrRaiseRouteGroup ; x3do:fromField 'touchTime' ; x3do:fromNode 'ClickToRaiseSensor' ; x3do:toField 'set_startTime' ; x3do:toNode 'UpTimer' . :ROUTE_2_7_3_1_2_3 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :LowerOrRaiseRouteGroup ; x3do:fromField 'isActive' ; x3do:fromNode 'ClickToLowerSensor' ; x3do:toField 'down' ; x3do:toNode 'AreMastsUp' . :ROUTE_2_7_3_1_2_4 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :LowerOrRaiseRouteGroup ; x3do:fromField 'isActive' ; x3do:fromNode 'ClickToRaiseSensor' ; x3do:toField 'up' ; x3do:toNode 'AreMastsUp' . :ROUTE_2_7_3_1_2_5 a owl:NamedIndividual, x3do:ROUTE ; x3do:hasParent :LowerOrRaiseRouteGroup ; x3do:fromField 'setSwitch' ; x3do:fromNode 'AreMastsUp' ; x3do:toField 'whichChoice' ; x3do:toNode 'RaiseOrLowerButton' .