<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D profile='Immersive' version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-3.0.xsd '>
<head>
<meta name='titlecontent='Sail.x3d'/>
<meta name='descriptioncontent='Sail of 688 Submarine with masts up'/>
<meta name='creatorcontent='LT Ken Curtin'/>
<meta name='createdcontent='4 August 2003'/>
<meta name='modifiedcontent='28 November 2019'/>
<meta name='referencecontent=' http://www.fas.org/man/dod-101/sys/ship/ssn-688.htm '/>
<meta name='referencecontent=' http://www.combatindex.com/store/3d/ssn688_model.html '/>
<meta name='subjectcontent='Submarine, 688, Sail'/>
<meta name='identifiercontent=' https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Sail.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../../license.html'/>
</head>
<!--

Index for ExternProtoDeclare definition : HeadsUpDisplay

Index for DEF nodes : ANBRA-34, AnimationClock, AreMastsUp, Black, BRA34, BRA-342Down, BRA-342Up, BRA34Cap, BRA-34Down, BRA34Fairing, BRA34FairingShape, BRA34Shape, BRA-34Timer, BRA-34Up, BRA-34UpAndDown, BRD-7, BRD7Down, BRD-7Pole, BRD7Timer, BRD-7TopHat, BRD7Up, BRD7UpAndDown, Bridge, Cap, ClickToLowerSensor, ClickToRaiseSensor, ColorPath, DownTimer, FairwaterPlanes, FairwaterPlanesMain, FWPlaneTimer, Gray, HudText, LowerMasts, LowerOrRaiseRouteGroup, Move1BRA-34lDown, Move1Bra34Up, Move1ScopeDown, Move1ScopeUp, Move2BRA-34lDown, Move2BRA-34Touch, Move2Bra34Up, Move2ScopeDown, Move2ScopeUp, MoveBRA-34, MoveBRA-34No2, MoveBRA-34Touch, MoveBRD7, MoveBRD-7lDown, MoveBRD7Touch, MoveBRD-7Up, MoveFWPlanes, MoveNavID, MoveNavIDlDown, MoveNavIDUp, MoveRadar, MoveRadarDown, MoveRadarTouch, MoveRadarUp, MoveRadarUpAndDown, MoveScope1, MoveScope1Sensor, MoveScope2, MoveScope2Touch, MoveSnorkel, MoveSnorkelDown, MoveSnorkelTouch, MoveSnorkelUp, NavID, NavIDColor, NavIDDown, NavIDLight, NavIDPole, NavIDTimer, NavIDTouch, NavIDUp, NavIDUpAndDown, No1BRA34, No1Scope, No2BRA34, No2BRA-34Timer, No2BRA-34UpAndDown, No2Scope, Periscopes, Radar, RadarDown, RadarGroup, RadarTimer, RadarTop, RadarUp, RadarUpAndDown, RaiseMasts, RaiseOrLowerButton, RotateFWPlanes, Sail, Scope, Scope1Down, Scope1Timer, Scope1Up, Scope1UpAndDown, Scope2Down, Scope2Timer, Scope2Up, Scope2UpAndDown, ScopeFairing, SeaFoamGreen, Snorkel, SnorkelCap, SnorkelDown, SnorkelMast, SnorkelUp, SwitchGroup, Timer, UpAndDown, UpTimer

Index for Viewpoint image : Viewpoint_1
-->
<Scene>
<WorldInfo title='Sail.x3d'/>
<ExternProtoDeclare name='HeadsUpDisplay'
  url=' "HeadsUpDisplayPrototype.x3d#HeadsUpDisplay" "https://savage.nps.edu/Savage/Tools/HeadsUpDisplays/HeadsUpDisplayPrototype.x3d#HeadsUpDisplay" "HeadsUpDisplayPrototype.wrl#HeadsUpDisplay" "https://savage.nps.edu/Savage/Tools/HeadsUpDisplays/HeadsUpDisplayPrototype.wrl#HeadsUpDisplay" '>
<field name='childrentype='MFNodeaccessType='inputOutput'
 appinfo='Displayed subscene positioned as a HUD.'/>

<field name='dragChildrentype='MFNodeaccessType='inputOutput'
 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.'/>

<field name='locationOffsettype='SFVec3faccessType='initializeOnly'
 appinfo='Modified screen location and distance (for size).'/>

<field name='traceEnabledtype='SFBoolaccessType='initializeOnly'
 appinfo='Enable/disable console output for troubleshooting.'/>
</ExternProtoDeclare>
<!-- ROUTE information for UpTimer node:  [from ClickToRaiseSensor.touchTime to set_startTime ] [from fraction_changed to RadarUp.set_fraction ] [from fraction_changed to Scope1Up.set_fraction ] [from fraction_changed to Scope2Up.set_fraction ] [from fraction_changed to SnorkelUp.set_fraction ] [from fraction_changed to BRA-34Up.set_fraction ] [from fraction_changed to BRA-342Up.set_fraction ] [from fraction_changed to BRD7Up.set_fraction ] [from fraction_changed to NavIDUp.set_fraction ] -->
<TimeSensor DEF='UpTimercycleInterval='4'/>
<!-- ROUTE information for DownTimer node:  [from ClickToLowerSensor.touchTime to set_startTime ] [from fraction_changed to RadarDown.set_fraction ] [from fraction_changed to Scope1Down.set_fraction ] [from fraction_changed to Scope2Down.set_fraction ] [from fraction_changed to SnorkelDown.set_fraction ] [from fraction_changed to BRA-34Down.set_fraction ] [from fraction_changed to BRA-342Down.set_fraction ] [from fraction_changed to BRD7Down.set_fraction ] [from fraction_changed to NavIDDown.set_fraction ] -->
<TimeSensor DEF='DownTimercycleInterval='4'/>
<Viewpoint description='StbdSideSailorientation='0.351 0.933 -0.077 0.2902position='4.3 5.4 17.8'/>
<Transform>
<Transform DEF='Bridgetranslation='2.62 5.52 0'>
<Shape>
<Box size='.966 .1 1.04'/>
<Appearance DEF='Gray'>
<Material diffuseColor='.8 .8 .8shininess='.8'/>
</Appearance>
</Shape>
</Transform>
<Group DEF='RadarGroup'>
<!-- ROUTE information for MoveRadar node:  [from RadarUpAndDown.value_changed to set_translation ] [from RadarUp.value_changed to set_translation ] [from RadarDown.value_changed to set_translation ] -->
<Transform DEF='MoveRadar'>
<Transform DEF='RadarToptranslation='1.74 7.52 -.276'>
<Shape>
<Box size='.276 .25 1.104'/>
<Appearance DEF='Black'>
<Material diffuseColor='.1 .1 .1'/>
</Appearance>
</Shape>
</Transform>
<Transform DEF='Radartranslation='1.74 6.52 -.276'>
<Shape>
<Cylinder radius='.1'/>
<Appearance USE='Gray'/>
</Shape>
</Transform>
<!-- ROUTE information for MoveRadarTouch node:  [from touchTime to RadarTimer.set_startTime ] -->
<TouchSensor DEF='MoveRadarTouchdescription='Touch Sensor to cycle radar'/>
<Group DEF='MoveRadarUpAndDown'>
<!-- ROUTE information for RadarTimer node:  [from MoveRadarTouch.touchTime to set_startTime ] [from fraction_changed to RadarUpAndDown.set_fraction ] -->
<TimeSensor DEF='RadarTimercycleInterval='8'/>
<ROUTE fromNode='MoveRadarTouchfromField='touchTimetoNode='RadarTimertoField='set_startTime'/>
<!-- ROUTE information for RadarUpAndDown node:  [from RadarTimer.fraction_changed to set_fraction ] [from value_changed to MoveRadar.set_translation ] -->
<PositionInterpolator DEF='RadarUpAndDownkey='0 .5 1keyValue='0 0 0 0 -2.5 0 0 0 0'/>
<ROUTE fromNode='RadarTimerfromField='fraction_changedtoNode='RadarUpAndDowntoField='set_fraction'/>
<ROUTE fromNode='RadarUpAndDownfromField='value_changedtoNode='MoveRadartoField='set_translation'/>
</Group>
<Group DEF='MoveRadarUp'>
<!-- ROUTE information for RadarUp node:  [from UpTimer.fraction_changed to set_fraction ] [from value_changed to MoveRadar.set_translation ] -->
<PositionInterpolator DEF='RadarUpkey='0 1keyValue='0 -2.5 0 0 0 0'/>
<ROUTE fromNode='UpTimerfromField='fraction_changedtoNode='RadarUptoField='set_fraction'/>
<ROUTE fromNode='RadarUpfromField='value_changedtoNode='MoveRadartoField='set_translation'/>
</Group>
<Group DEF='MoveRadarDown'>
<!-- ROUTE information for RadarDown node:  [from DownTimer.fraction_changed to set_fraction ] [from value_changed to MoveRadar.set_translation ] -->
<PositionInterpolator DEF='RadarDownkey='0 1keyValue='0 0 0 0 -2.5 0'/>
<ROUTE fromNode='DownTimerfromField='fraction_changedtoNode='RadarDowntoField='set_fraction'/>
<ROUTE fromNode='RadarDownfromField='value_changedtoNode='MoveRadartoField='set_translation'/>
</Group>
</Transform>
</Group>
<Group DEF='Periscopes'>
<!-- ROUTE information for MoveScope1 node:  [from Scope1UpAndDown.value_changed to set_translation ] [from Scope1Up.value_changed to set_translation ] [from Scope1Down.value_changed to set_translation ] -->
<Transform DEF='MoveScope1'>
<!-- ROUTE information for MoveScope1Sensor node:  [from touchTime to Scope1Timer.set_startTime ] -->
<TouchSensor DEF='MoveScope1Sensordescription='Sensor to cycle #1 Scope'/>
<!-- ROUTE information for Scope1Timer node:  [from MoveScope1Sensor.touchTime to set_startTime ] [from fraction_changed to Scope1UpAndDown.set_fraction ] -->
<TimeSensor DEF='Scope1TimercycleInterval='4'/>
<ROUTE fromNode='MoveScope1SensorfromField='touchTimetoNode='Scope1TimertoField='set_startTime'/>
<!-- ROUTE information for Scope1UpAndDown node:  [from Scope1Timer.fraction_changed to set_fraction ] [from value_changed to MoveScope1.set_translation ] -->
<PositionInterpolator DEF='Scope1UpAndDownkey='0 .5 1keyValue='0 0 0 0 -10 0 0 0 0'/>
<ROUTE fromNode='Scope1TimerfromField='fraction_changedtoNode='Scope1UpAndDowntoField='set_fraction'/>
<ROUTE fromNode='Scope1UpAndDownfromField='value_changedtoNode='MoveScope1toField='set_translation'/>
<Transform DEF='No1Scopetranslation='-.483 6.9 .414'>
<Shape DEF='Scope'>
<Cylinder height='13.8radius='.05'/>
<Appearance USE='Gray'/>
</Shape>
<Transform scale='1.5 1 1'>
<Shape DEF='ScopeFairing'>
<Cylinder height='7radius='.1'/>
<Appearance>
<Material DEF='SeaFoamGreendiffuseColor='.6 1 .8'/>
</Appearance>
</Shape>
</Transform>
</Transform>
<Group DEF='Move1ScopeUp'>
<!-- ROUTE information for Scope1Up node:  [from UpTimer.fraction_changed to set_fraction ] [from value_changed to MoveScope1.set_translation ] -->
<PositionInterpolator DEF='Scope1Upkey='0 1keyValue='0 -10 0 0 0 0'/>
<ROUTE fromNode='UpTimerfromField='fraction_changedtoNode='Scope1UptoField='set_fraction'/>
<ROUTE fromNode='Scope1UpfromField='value_changedtoNode='MoveScope1toField='set_translation'/>
</Group>
<Group DEF='Move1ScopeDown'>
<!-- ROUTE information for Scope1Down node:  [from DownTimer.fraction_changed to set_fraction ] [from value_changed to MoveScope1.set_translation ] -->
<PositionInterpolator DEF='Scope1Downkey='0 1keyValue='0 0 0 0 -10 0'/>
<ROUTE fromNode='DownTimerfromField='fraction_changedtoNode='Scope1DowntoField='set_fraction'/>
<ROUTE fromNode='Scope1DownfromField='value_changedtoNode='MoveScope1toField='set_translation'/>
</Group>
</Transform>
<!-- ROUTE information for MoveScope2 node:  [from Scope2UpAndDown.value_changed to set_translation ] [from Scope2Down.value_changed to set_translation ] [from Scope2Up.value_changed to set_translation ] -->
<Transform DEF='MoveScope2'>
<!-- ROUTE information for MoveScope2Touch node:  [from touchTime to Scope2Timer.set_startTime ] -->
<TouchSensor DEF='MoveScope2Touchdescription='Sensor to Cycle #2 Scope'/>
<!-- ROUTE information for Scope2Timer node:  [from MoveScope2Touch.touchTime to set_startTime ] [from fraction_changed to Scope2UpAndDown.set_fraction ] -->
<TimeSensor DEF='Scope2TimercycleInterval='4'/>
<ROUTE fromNode='MoveScope2TouchfromField='touchTimetoNode='Scope2TimertoField='set_startTime'/>
<!-- ROUTE information for Scope2UpAndDown node:  [from Scope2Timer.fraction_changed to set_fraction ] [from value_changed to MoveScope2.set_translation ] -->
<PositionInterpolator DEF='Scope2UpAndDownkey='0 .5 1keyValue='0 0 0 0 -10 0 0 0 0'/>
<ROUTE fromNode='Scope2TimerfromField='fraction_changedtoNode='Scope2UpAndDowntoField='set_fraction'/>
<ROUTE fromNode='Scope2UpAndDownfromField='value_changedtoNode='MoveScope2toField='set_translation'/>
<Transform DEF='No2Scopetranslation='-.483 6.9 -.414'>
<Shape USE='Scope'/>
<Transform scale='1.5 1 1'>
<Shape USE='ScopeFairing'/>
</Transform>
</Transform>
<Group DEF='Move2ScopeDown'>
<!-- ROUTE information for Scope2Down node:  [from DownTimer.fraction_changed to set_fraction ] [from value_changed to MoveScope2.set_translation ] -->
<PositionInterpolator DEF='Scope2Downkey='0 1keyValue='0 0 0 0 -10 0'/>
<ROUTE fromNode='DownTimerfromField='fraction_changedtoNode='Scope2DowntoField='set_fraction'/>
<ROUTE fromNode='Scope2DownfromField='value_changedtoNode='MoveScope2toField='set_translation'/>
</Group>
<Group DEF='Move2ScopeUp'>
<!-- ROUTE information for Scope2Up node:  [from UpTimer.fraction_changed to set_fraction ] [from value_changed to MoveScope2.set_translation ] -->
<PositionInterpolator DEF='Scope2Upkey='0 1keyValue='0 -10 0 0 0 0'/>
<ROUTE fromNode='UpTimerfromField='fraction_changedtoNode='Scope2UptoField='set_fraction'/>
<ROUTE fromNode='Scope2UpfromField='value_changedtoNode='MoveScope2toField='set_translation'/>
</Group>
</Transform>
</Group>
<Group DEF='SnorkelMast'>
<!-- ROUTE information for MoveSnorkel node:  [from UpAndDown.value_changed to set_translation ] [from SnorkelUp.value_changed to set_translation ] [from SnorkelDown.value_changed to set_translation ] -->
<Transform DEF='MoveSnorkel'>
<!-- ROUTE information for MoveSnorkelTouch node:  [from touchTime to Timer.set_startTime ] -->
<TouchSensor DEF='MoveSnorkelTouchdescription='Sensor to Cycle Snorkel Mast'/>
<!-- ROUTE information for Timer node:  [from MoveSnorkelTouch.touchTime to set_startTime ] [from fraction_changed to UpAndDown.set_fraction ] -->
<TimeSensor DEF='TimercycleInterval='4'/>
<ROUTE fromNode='MoveSnorkelTouchfromField='touchTimetoNode='TimertoField='set_startTime'/>
<!-- ROUTE information for UpAndDown node:  [from Timer.fraction_changed to set_fraction ] [from value_changed to MoveSnorkel.set_translation ] -->
<PositionInterpolator DEF='UpAndDownkey='0 .5 1keyValue='0 0 0 0 -5 0 0 0 0'/>
<ROUTE fromNode='TimerfromField='fraction_changedtoNode='UpAndDowntoField='set_fraction'/>
<ROUTE fromNode='UpAndDownfromField='value_changedtoNode='MoveSnorkeltoField='set_translation'/>
<Transform DEF='Snorkelscale='1.3 1 1translation='-2.484 7.52 0'>
<Shape>
<Cylinder height='4radius='.3'/>
<Appearance>
<Material diffuseColor='.6 .6 .6'/>
</Appearance>
</Shape>
</Transform>
<Transform DEF='SnorkelCapscale='1.4 1.1 1.1translation='-2.484 9.52 0'>
<Shape>
<Cylinder height='.6radius='.5'/>
<Appearance USE='Black'/>
</Shape>
</Transform>
<Group DEF='MoveSnorkelUp'>
<!-- ROUTE information for SnorkelUp node:  [from UpTimer.fraction_changed to set_fraction ] [from value_changed to MoveSnorkel.set_translation ] -->
<PositionInterpolator DEF='SnorkelUpkey='0 1keyValue='0 -5 0 0 0 0'/>
<ROUTE fromNode='UpTimerfromField='fraction_changedtoNode='SnorkelUptoField='set_fraction'/>
<ROUTE fromNode='SnorkelUpfromField='value_changedtoNode='MoveSnorkeltoField='set_translation'/>
</Group>
<Group DEF='MoveSnorkelDown'>
<!-- ROUTE information for SnorkelDown node:  [from DownTimer.fraction_changed to set_fraction ] [from value_changed to MoveSnorkel.set_translation ] -->
<PositionInterpolator DEF='SnorkelDownkey='0 1keyValue='0 0 0 0 -5 0'/>
<ROUTE fromNode='DownTimerfromField='fraction_changedtoNode='SnorkelDowntoField='set_fraction'/>
<ROUTE fromNode='SnorkelDownfromField='value_changedtoNode='MoveSnorkeltoField='set_translation'/>
</Group>
</Transform>
</Group>
<Group DEF='ANBRA-34'>
<!-- ROUTE information for MoveBRA-34 node:  [from BRA-34UpAndDown.value_changed to set_translation ] [from BRA-34Up.value_changed to set_translation ] [from BRA-34Down.value_changed to set_translation ] -->
<Transform DEF='MoveBRA-34'>
<!-- ROUTE information for MoveBRA-34Touch node:  [from touchTime to BRA-34Timer.set_startTime ] -->
<TouchSensor DEF='MoveBRA-34Touchdescription='Cycles #1 Bra-34'/>
<!-- ROUTE information for BRA-34Timer node:  [from MoveBRA-34Touch.touchTime to set_startTime ] [from fraction_changed to BRA-34UpAndDown.set_fraction ] -->
<TimeSensor DEF='BRA-34TimercycleInterval='4'/>
<!-- ROUTE information for BRA-34UpAndDown node:  [from BRA-34Timer.fraction_changed to set_fraction ] [from value_changed to MoveBRA-34.set_translation ] -->
<PositionInterpolator DEF='BRA-34UpAndDownkey='0 .5 1keyValue='0 0 0 0 -10 0 0 0 0'/>
<ROUTE fromNode='BRA-34TimerfromField='fraction_changedtoNode='BRA-34UpAndDowntoField='set_fraction'/>
<ROUTE fromNode='BRA-34UpAndDownfromField='value_changedtoNode='MoveBRA-34toField='set_translation'/>
<ROUTE fromNode='MoveBRA-34TouchfromField='touchTimetoNode='BRA-34TimertoField='set_startTime'/>
<Transform DEF='No1BRA34translation='.552 7.4 .414'>
<Transform DEF='BRA34Fairingscale='1.8 1 1'>
<Shape DEF='BRA34FairingShape'>
<Cylinder height='7radius='.13'/>
<Appearance USE='Gray'/>
</Shape>
</Transform>
<Transform DEF='BRA34Captranslation='0 6.95 0'>
<Shape DEF='Cap'>
<Cylinder height='.1radius='.08'/>
<Appearance USE='Black'/>
</Shape>
</Transform>
<Transform translation='0 3 0'>
<Shape DEF='BRA34Shape'>
<Cylinder DEF='BRA34height='7.8radius='.08'/>
<Appearance>
<Material USE='SeaFoamGreen'/>
</Appearance>
</Shape>
</Transform>
</Transform>
<Group DEF='Move1Bra34Up'>
<!-- ROUTE information for BRA-34Up node:  [from UpTimer.fraction_changed to set_fraction ] [from value_changed to MoveBRA-34.set_translation ] -->
<PositionInterpolator DEF='BRA-34Upkey='0 1keyValue='0 -10 0 0 0 0'/>
<ROUTE fromNode='UpTimerfromField='fraction_changedtoNode='BRA-34UptoField='set_fraction'/>
<ROUTE fromNode='BRA-34UpfromField='value_changedtoNode='MoveBRA-34toField='set_translation'/>
</Group>
<Group DEF='Move1BRA-34lDown'>
<!-- ROUTE information for BRA-34Down node:  [from DownTimer.fraction_changed to set_fraction ] [from value_changed to MoveBRA-34.set_translation ] -->
<PositionInterpolator DEF='BRA-34Downkey='0 1keyValue='0 0 0 0 -10 0'/>
<ROUTE fromNode='DownTimerfromField='fraction_changedtoNode='BRA-34DowntoField='set_fraction'/>
<ROUTE fromNode='BRA-34DownfromField='value_changedtoNode='MoveBRA-34toField='set_translation'/>
</Group>
</Transform>
<!-- ROUTE information for MoveBRA-34No2 node:  [from No2BRA-34UpAndDown.value_changed to set_translation ] [from BRA-342Up.value_changed to set_translation ] [from BRA-342Down.value_changed to set_translation ] -->
<Transform DEF='MoveBRA-34No2'>
<!-- ROUTE information for Move2BRA-34Touch node:  [from touchTime to No2BRA-34Timer.set_startTime ] -->
<TouchSensor DEF='Move2BRA-34Touchdescription='Cycles #2 Bra-34'/>
<!-- ROUTE information for No2BRA-34Timer node:  [from Move2BRA-34Touch.touchTime to set_startTime ] [from fraction_changed to No2BRA-34UpAndDown.set_fraction ] -->
<TimeSensor DEF='No2BRA-34TimercycleInterval='4'/>
<!-- ROUTE information for No2BRA-34UpAndDown node:  [from No2BRA-34Timer.fraction_changed to set_fraction ] [from value_changed to MoveBRA-34No2.set_translation ] -->
<PositionInterpolator DEF='No2BRA-34UpAndDownkey='0 .5 1keyValue='0 0 0 0 -10 0 0 0 0'/>
<ROUTE fromNode='No2BRA-34TimerfromField='fraction_changedtoNode='No2BRA-34UpAndDowntoField='set_fraction'/>
<ROUTE fromNode='No2BRA-34UpAndDownfromField='value_changedtoNode='MoveBRA-34No2toField='set_translation'/>
<ROUTE fromNode='Move2BRA-34TouchfromField='touchTimetoNode='No2BRA-34TimertoField='set_startTime'/>
<Transform DEF='No2BRA34translation='.552 7.4 -.414'>
<Transform scale='1.8 1 1'>
<Shape USE='BRA34FairingShape'/>
</Transform>
<Transform translation='0 6.95 0'>
<Shape USE='Cap'/>
</Transform>
<Transform translation='0 3 0'>
<Shape USE='BRA34Shape'/>
</Transform>
</Transform>
<Group DEF='Move2Bra34Up'>
<!-- ROUTE information for BRA-342Up node:  [from UpTimer.fraction_changed to set_fraction ] [from value_changed to MoveBRA-34No2.set_translation ] -->
<PositionInterpolator DEF='BRA-342Upkey='0 1keyValue='0 -10 0 0 0 0'/>
<ROUTE fromNode='UpTimerfromField='fraction_changedtoNode='BRA-342UptoField='set_fraction'/>
<ROUTE fromNode='BRA-342UpfromField='value_changedtoNode='MoveBRA-34No2toField='set_translation'/>
</Group>
<Group DEF='Move2BRA-34lDown'>
<!-- ROUTE information for BRA-342Down node:  [from DownTimer.fraction_changed to set_fraction ] [from value_changed to MoveBRA-34No2.set_translation ] -->
<PositionInterpolator DEF='BRA-342Downkey='0 1keyValue='0 0 0 0 -10 0'/>
<ROUTE fromNode='DownTimerfromField='fraction_changedtoNode='BRA-342DowntoField='set_fraction'/>
<ROUTE fromNode='BRA-342DownfromField='value_changedtoNode='MoveBRA-34No2toField='set_translation'/>
</Group>
</Transform>
</Group>
<Transform DEF='Sail'> </Transform>
<Transform DEF='BRD-7translation='-1.449 7.52 0'>
<!-- ROUTE information for MoveBRD7 node:  [from BRD7UpAndDown.value_changed to set_translation ] [from BRD7Up.value_changed to set_translation ] [from BRD7Down.value_changed to set_translation ] -->
<Transform DEF='MoveBRD7'>
<!-- ROUTE information for MoveBRD7Touch node:  [from touchTime to BRD7Timer.set_startTime ] -->
<TouchSensor DEF='MoveBRD7Touchdescription='Cycles BRD-7'/>
<!-- ROUTE information for BRD7Timer node:  [from MoveBRD7Touch.touchTime to set_startTime ] [from fraction_changed to BRD7UpAndDown.set_fraction ] -->
<TimeSensor DEF='BRD7TimercycleInterval='4'/>
<ROUTE fromNode='MoveBRD7TouchfromField='touchTimetoNode='BRD7TimertoField='set_startTime'/>
<!-- ROUTE information for BRD7UpAndDown node:  [from BRD7Timer.fraction_changed to set_fraction ] [from value_changed to MoveBRD7.set_translation ] -->
<PositionInterpolator DEF='BRD7UpAndDownkey='0 .5 1keyValue='0 0 0 0 -5.5 0 0 0 0'/>
<ROUTE fromNode='BRD7TimerfromField='fraction_changedtoNode='BRD7UpAndDowntoField='set_fraction'/>
<ROUTE fromNode='BRD7UpAndDownfromField='value_changedtoNode='MoveBRD7toField='set_translation'/>
<Transform DEF='BRD-7Pole'>
<Shape>
<Cylinder height='6radius='.1'/>
<Appearance USE='Black'/>
</Shape>
</Transform>
<Transform DEF='BRD-7TopHattranslation='0 3 0'>
<Shape>
<Cylinder height='.8radius='.5'/>
<Appearance USE='Black'/>
</Shape>
</Transform>
<Group DEF='MoveBRD-7Up'>
<!-- ROUTE information for BRD7Up node:  [from UpTimer.fraction_changed to set_fraction ] [from value_changed to MoveBRD7.set_translation ] -->
<PositionInterpolator DEF='BRD7Upkey='0 1keyValue='0 -5.5 0 0 0 0'/>
<ROUTE fromNode='UpTimerfromField='fraction_changedtoNode='BRD7UptoField='set_fraction'/>
<ROUTE fromNode='BRD7UpfromField='value_changedtoNode='MoveBRD7toField='set_translation'/>
</Group>
<Group DEF='MoveBRD-7lDown'>
<!-- ROUTE information for BRD7Down node:  [from DownTimer.fraction_changed to set_fraction ] [from value_changed to MoveBRD7.set_translation ] -->
<PositionInterpolator DEF='BRD7Downkey='0 1keyValue='0 0 0 0 -5.5 0'/>
<ROUTE fromNode='DownTimerfromField='fraction_changedtoNode='BRD7DowntoField='set_fraction'/>
<ROUTE fromNode='BRD7DownfromField='value_changedtoNode='MoveBRD7toField='set_translation'/>
</Group>
</Transform>
</Transform>
<Transform DEF='NavIDtranslation='1.449 5.52 .552'>
<!-- ROUTE information for MoveNavID node:  [from NavIDUpAndDown.value_changed to set_translation ] [from NavIDUp.value_changed to set_translation ] [from NavIDDown.value_changed to set_translation ] -->
<Transform DEF='MoveNavID'>
<!-- ROUTE information for NavIDTouch node:  [from touchTime to NavIDTimer.set_startTime ] -->
<TouchSensor DEF='NavIDTouchdescription='Cycles NAV ID'/>
<!-- ROUTE information for NavIDTimer node:  [from NavIDTouch.touchTime to set_startTime ] [from fraction_changed to NavIDUpAndDown.set_fraction ] -->
<TimeSensor DEF='NavIDTimercycleInterval='4'/>
<ROUTE fromNode='NavIDTouchfromField='touchTimetoNode='NavIDTimertoField='set_startTime'/>
<!-- ROUTE information for NavIDUpAndDown node:  [from NavIDTimer.fraction_changed to set_fraction ] [from value_changed to MoveNavID.set_translation ] -->
<PositionInterpolator DEF='NavIDUpAndDownkey='0 .5 1keyValue='0 0 0 0 -4.2 0 0 0 0'/>
<ROUTE fromNode='NavIDTimerfromField='fraction_changedtoNode='NavIDUpAndDowntoField='set_fraction'/>
<ROUTE fromNode='NavIDUpAndDownfromField='value_changedtoNode='MoveNavIDtoField='set_translation'/>
<Transform DEF='NavIDPoletranslation='0 2 0'>
<Shape>
<Cylinder height='4radius='.05'/>
<Appearance USE='Gray'/>
</Shape>
</Transform>
<Transform DEF='NavIDLighttranslation='0 4 0'>
<Shape>
<Cylinder height='.3radius='.1'/>
<Appearance>
<!-- ROUTE information for NavIDColor node:  [from ColorPath.value_changed to set_emissiveColor ] -->
<Material DEF='NavIDColorambientIntensity='0'/>
</Appearance>
</Shape>
<!-- ROUTE information for ColorPath node:  [from AnimationClock.fraction_changed to set_fraction ] [from value_changed to NavIDColor.set_emissiveColor ] -->
<ColorInterpolator DEF='ColorPathkey='0.0 .2 .250 .450 .5 .7 .750 .875 1keyValue='.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 fromNode='ColorPathfromField='value_changedtoNode='NavIDColortoField='set_emissiveColor'/>
<!-- ROUTE information for AnimationClock node:  [from fraction_changed to ColorPath.set_fraction ] -->
<TimeSensor DEF='AnimationClockcycleInterval='9loop='true'/>
<ROUTE fromNode='AnimationClockfromField='fraction_changedtoNode='ColorPathtoField='set_fraction'/>
</Transform>
<Group DEF='MoveNavIDUp'>
<!-- ROUTE information for NavIDUp node:  [from UpTimer.fraction_changed to set_fraction ] [from value_changed to MoveNavID.set_translation ] -->
<PositionInterpolator DEF='NavIDUpkey='0 1keyValue='0 -4.2 0 0 0 0'/>
<ROUTE fromNode='UpTimerfromField='fraction_changedtoNode='NavIDUptoField='set_fraction'/>
<ROUTE fromNode='NavIDUpfromField='value_changedtoNode='MoveNavIDtoField='set_translation'/>
</Group>
<Group DEF='MoveNavIDlDown'>
<!-- ROUTE information for NavIDDown node:  [from DownTimer.fraction_changed to set_fraction ] [from value_changed to MoveNavID.set_translation ] -->
<PositionInterpolator DEF='NavIDDownkey='0 1keyValue='0 0 0 0 -4.2 0'/>
<ROUTE fromNode='DownTimerfromField='fraction_changedtoNode='NavIDDowntoField='set_fraction'/>
<ROUTE fromNode='NavIDDownfromField='value_changedtoNode='MoveNavIDtoField='set_translation'/>
</Group>
</Transform>
</Transform>
<Transform DEF='FairwaterPlanesMainrotation='1 0 0 -1.57translation='-1.85 3.54 6'>
<!-- ROUTE information for FairwaterPlanes node:  [from RotateFWPlanes.value_changed to set_rotation ] -->
<Transform DEF='FairwaterPlanescenter='3 0 0'>
<Inline
  url=' "Planes.x3d" "https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Planes.x3d" "Planes.wrl" "https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Planes.wrl" '/>

<!-- ROUTE information for MoveFWPlanes node:  [from touchTime to FWPlaneTimer.set_startTime ] -->
<TouchSensor DEF='MoveFWPlanesdescription='Cycles FW Planes'/>
<!-- ROUTE information for FWPlaneTimer node:  [from MoveFWPlanes.touchTime to set_startTime ] [from fraction_changed to RotateFWPlanes.set_fraction ] -->
<TimeSensor DEF='FWPlaneTimercycleInterval='5'/>
<ROUTE fromNode='MoveFWPlanesfromField='touchTimetoNode='FWPlaneTimertoField='set_startTime'/>
<!-- ROUTE information for RotateFWPlanes node:  [from FWPlaneTimer.fraction_changed to set_fraction ] [from value_changed to FairwaterPlanes.set_rotation ] -->
<OrientationInterpolator DEF='RotateFWPlaneskey='0 .25 .50 .75 1.0keyValue='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 fromNode='FWPlaneTimerfromField='fraction_changedtoNode='RotateFWPlanestoField='set_fraction'/>
<ROUTE fromNode='RotateFWPlanesfromField='value_changedtoNode='FairwaterPlanestoField='set_rotation'/>
</Transform>
</Transform>
</Transform>
<ProtoInstance name='HeadsUpDisplay'>
<fieldValue name='dragChildren'>
<Transform translation='0 0 -0.2'>
<Shape>
<Box size='5 2 0.001'/>
<Appearance>
<Material diffuseColor='1 1 1transparency='1'/>
</Appearance>
</Shape>
</Transform>
</fieldValue>
<fieldValue name='locationOffsetvalue='4 2 0'/>
<fieldValue name='children'>
<Transform>
<Group DEF='SwitchGroup'>
<!-- ROUTE information for RaiseOrLowerButton node:  [from AreMastsUp.setSwitch to whichChoice ] -->
<Switch DEF='RaiseOrLowerButtonwhichChoice='0'>
<Group DEF='LowerMasts'>
<!-- ROUTE information for ClickToLowerSensor node:  [from touchTime to DownTimer.set_startTime ] [from isActive to AreMastsUp.down ] -->
<TouchSensor DEF='ClickToLowerSensordescription='Lower All Masts'/>
<Shape>
<Text string='"Click To Lower All Masts"'>
<FontStyle DEF='HudTextjustify='"MIDDLE" "MIDDLE"size='0.5'/>
</Text>
<Appearance>
<Material diffuseColor='0 .8 0'/>
</Appearance>
</Shape>
</Group>
<Group DEF='RaiseMasts'>
<!-- ROUTE information for ClickToRaiseSensor node:  [from touchTime to UpTimer.set_startTime ] [from isActive to AreMastsUp.up ] -->
<TouchSensor DEF='ClickToRaiseSensordescription='Raise ALl Masts'/>
<Shape>
<Text string='"Click To Raise All Masts"'>
<FontStyle USE='HudText'/>
</Text>
<Appearance>
<Material diffuseColor='1 0 0'/>
</Appearance>
</Shape>
</Group>
</Switch>
<!-- ROUTE information for AreMastsUp node:  [from ClickToLowerSensor.isActive to down ] [from ClickToRaiseSensor.isActive to up ] [from setSwitch to RaiseOrLowerButton.whichChoice ] -->
<Script DEF='AreMastsUp'>
<field name='uptype='SFBoolaccessType='inputOnly'/>
<field name='downtype='SFBoolaccessType='inputOnly'/>
<field name='setSwitchtype='SFInt32accessType='outputOnly'/>
<![CDATA[
              
ecmascript:

function up (value, timestamp)
{
      setSwitch = 0;
}

function down (value, timestamp)
{
     setSwitch = 1;
}

            
]]>
</Script>
</Group>
<Group DEF='LowerOrRaiseRouteGroup'>
<ROUTE fromNode='ClickToLowerSensorfromField='touchTimetoNode='DownTimertoField='set_startTime'/>
<ROUTE fromNode='ClickToRaiseSensorfromField='touchTimetoNode='UpTimertoField='set_startTime'/>
<ROUTE fromNode='ClickToLowerSensorfromField='isActivetoNode='AreMastsUptoField='down'/>
<ROUTE fromNode='ClickToRaiseSensorfromField='isActivetoNode='AreMastsUptoField='up'/>
<ROUTE fromNode='AreMastsUpfromField='setSwitchtoNode='RaiseOrLowerButtontoField='whichChoice'/>
</Group>
</Transform>
</fieldValue>
</ProtoInstance>
</Scene>
</X3D>
<!--

Index for ExternProtoDeclare definition : HeadsUpDisplay

Index for DEF nodes : ANBRA-34, AnimationClock, AreMastsUp, Black, BRA34, BRA-342Down, BRA-342Up, BRA34Cap, BRA-34Down, BRA34Fairing, BRA34FairingShape, BRA34Shape, BRA-34Timer, BRA-34Up, BRA-34UpAndDown, BRD-7, BRD7Down, BRD-7Pole, BRD7Timer, BRD-7TopHat, BRD7Up, BRD7UpAndDown, Bridge, Cap, ClickToLowerSensor, ClickToRaiseSensor, ColorPath, DownTimer, FairwaterPlanes, FairwaterPlanesMain, FWPlaneTimer, Gray, HudText, LowerMasts, LowerOrRaiseRouteGroup, Move1BRA-34lDown, Move1Bra34Up, Move1ScopeDown, Move1ScopeUp, Move2BRA-34lDown, Move2BRA-34Touch, Move2Bra34Up, Move2ScopeDown, Move2ScopeUp, MoveBRA-34, MoveBRA-34No2, MoveBRA-34Touch, MoveBRD7, MoveBRD-7lDown, MoveBRD7Touch, MoveBRD-7Up, MoveFWPlanes, MoveNavID, MoveNavIDlDown, MoveNavIDUp, MoveRadar, MoveRadarDown, MoveRadarTouch, MoveRadarUp, MoveRadarUpAndDown, MoveScope1, MoveScope1Sensor, MoveScope2, MoveScope2Touch, MoveSnorkel, MoveSnorkelDown, MoveSnorkelTouch, MoveSnorkelUp, NavID, NavIDColor, NavIDDown, NavIDLight, NavIDPole, NavIDTimer, NavIDTouch, NavIDUp, NavIDUpAndDown, No1BRA34, No1Scope, No2BRA34, No2BRA-34Timer, No2BRA-34UpAndDown, No2Scope, Periscopes, Radar, RadarDown, RadarGroup, RadarTimer, RadarTop, RadarUp, RadarUpAndDown, RaiseMasts, RaiseOrLowerButton, RotateFWPlanes, Sail, Scope, Scope1Down, Scope1Timer, Scope1Up, Scope1UpAndDown, Scope2Down, Scope2Timer, Scope2Up, Scope2UpAndDown, ScopeFairing, SeaFoamGreen, Snorkel, SnorkelCap, SnorkelDown, SnorkelMast, SnorkelUp, SwitchGroup, Timer, UpAndDown, UpTimer

Index for Viewpoint image : Viewpoint_1
-->

<!-- Color key: <X3dNode DEF='idName' field='value'/> matches <XmlElement DEF='idName' attribute='value'/>
(Light blue background: behavior node) (Grey background: inserted documentation) (Magenta background: X3D Extensibility)
    <Prototype name='ProtoName'> <field name='fieldName'/> </Prototype> -->

<!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources and X3D Scene Authoring Hints. -->