X3D Model Documentation: Sail.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2 
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
  3  <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'>
  4       <head>
  5            <meta name='titlecontent='Sail.x3d'/>
  6            <meta name='descriptioncontent='Sail of 688 Submarine with masts up'/>
  7            <meta name='creatorcontent='LT Ken Curtin'/>
  8            <meta name='createdcontent='4 August 2003'/>
  9            <meta name='modifiedcontent='28 November 2019'/>
 10            <meta name='referencecontent='http://www.fas.org/man/dod-101/sys/ship/ssn-688.htm'/>
 11            <meta name='referencecontent='http://www.combatindex.com/store/3d/ssn688_model.html'/>
 12            <meta name='subjectcontent='Submarine, 688, Sail'/>
 13            <meta name='identifiercontent='https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Sail.x3d'/>
 14            <meta name='generatorcontent='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
 15            <meta name='licensecontent='../../license.html'/>
 16       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top 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 node: Viewpoint_1

Index for ExternProtoDeclare definition: HeadsUpDisplay
-->
 17       <Scene>
 18            <WorldInfo title='Sail.x3d'/>
 19            <ExternProtoDeclare name='HeadsUpDisplay'   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" '>
 20                 <field name='childrentype='MFNodeaccessType='inputOutput'
                appinfo='Displayed subscene positioned as a HUD.'/>
 21                 <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.'/>
 22                 <field name='locationOffsettype='SFVec3faccessType='initializeOnly'
                appinfo='Modified screen location and distance (for size).'/>
 23                 <field name='traceEnabledtype='SFBoolaccessType='initializeOnly'
                appinfo='Enable/disable console output for troubleshooting.'/>
 24            </ExternProtoDeclare>
 25 
 26 
 27            <Viewpoint description='StbdSideSailorientation='0.351 0.933 -0.077 0.2902position='4.3 5.4 17.8'/>
 28            <Transform>
 29                 <Transform DEF='Bridgetranslation='2.62 5.52 0'>
 30                      <Shape>
 31                           <Box size='.966 .1 1.04'/>
 32 
                         <!-- Appearance Gray is a DEF node that has 4 USE nodes: USE_1, USE_2, USE_3, USE_4 -->
                         <Appearance DEF='Gray'>
 33                                <Material diffuseColor='.8 .8 .8shininess='.8'/>
 34                           </Appearance>
 35                      </Shape>
 36                 </Transform>
 37                 <Group DEF='RadarGroup'>
 38 
                    <!-- 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'>
 39                           <Transform DEF='RadarToptranslation='1.74 7.52 -.276'>
 40                                <Shape>
 41                                     <Box size='.276 .25 1.104'/>
 42 
                                   <!-- Appearance Black is a DEF node that has 5 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5 -->
                                   <Appearance DEF='Black'>
 43                                          <Material diffuseColor='.1 .1 .1'/>
 44                                     </Appearance>
 45                                </Shape>
 46                           </Transform>
 47                           <Transform DEF='Radartranslation='1.74 6.52 -.276'>
 48                                <Shape>
 49                                     <Cylinder radius='.1'/>
 50                                     <Appearance USE='Gray'/>
 51                                </Shape>
 52                           </Transform>
 53 
                         <!-- ROUTE information for MoveRadarTouch node:  [from touchTime to RadarTimer.set_startTime ] -->
                         <TouchSensor DEF='MoveRadarTouchdescription='Touch Sensor to cycle radar'/>
 54                           <Group DEF='MoveRadarUpAndDown'>
 55 
                              <!-- ROUTE information for RadarTimer node:  [from MoveRadarTouch.touchTime to set_startTime ] [from fraction_changed to RadarUpAndDown.set_fraction ] -->
                              <TimeSensor DEF='RadarTimercycleInterval='8'/>
 56                                < ROUTE  fromNode='MoveRadarTouch' fromField='touchTime' toNode='RadarTimer' toField='set_startTime'/>
 57 
                              <!-- 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'/>
 58                                < ROUTE  fromNode='RadarTimer' fromField='fraction_changed' toNode='RadarUpAndDown' toField='set_fraction'/>
 59                                < ROUTE  fromNode='RadarUpAndDown' fromField='value_changed' toNode='MoveRadar' toField='set_translation'/>
 60                           </Group>
 61                           <Group DEF='MoveRadarUp'>
 62 
                              <!-- 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'/>
 63                                < ROUTE  fromNode='UpTimer' fromField='fraction_changed' toNode='RadarUp' toField='set_fraction'/>
 64                                < ROUTE  fromNode='RadarUp' fromField='value_changed' toNode='MoveRadar' toField='set_translation'/>
 65                           </Group>
 66                           <Group DEF='MoveRadarDown'>
 67 
                              <!-- 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'/>
 68                                < ROUTE  fromNode='DownTimer' fromField='fraction_changed' toNode='RadarDown' toField='set_fraction'/>
 69                                < ROUTE  fromNode='RadarDown' fromField='value_changed' toNode='MoveRadar' toField='set_translation'/>
 70                           </Group>
 71                      </Transform>
 72                 </Group>
 73                 <Group DEF='Periscopes'>
 74 
                    <!-- 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'>
 75 
                         <!-- ROUTE information for MoveScope1Sensor node:  [from touchTime to Scope1Timer.set_startTime ] -->
                         <TouchSensor DEF='MoveScope1Sensordescription='Sensor to cycle #1 Scope'/>
 76 
                         <!-- ROUTE information for Scope1Timer node:  [from MoveScope1Sensor.touchTime to set_startTime ] [from fraction_changed to Scope1UpAndDown.set_fraction ] -->
                         <TimeSensor DEF='Scope1TimercycleInterval='4'/>
 77                           < ROUTE  fromNode='MoveScope1Sensor' fromField='touchTime' toNode='Scope1Timer' toField='set_startTime'/>
 78 
                         <!-- 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'/>
 79                           < ROUTE  fromNode='Scope1Timer' fromField='fraction_changed' toNode='Scope1UpAndDown' toField='set_fraction'/>
 80                           < ROUTE  fromNode='Scope1UpAndDown' fromField='value_changed' toNode='MoveScope1' toField='set_translation'/>
 81                           <Transform DEF='No1Scopetranslation='-.483 6.9 .414'>
 82 
                              <!-- Shape Scope is a DEF node that has 1 USE node: USE_1 -->
                              <Shape DEF='Scope'>
 83                                     <Cylinder height='13.8radius='.05'/>
 84                                     <Appearance USE='Gray'/>
 85                                </Shape>
 86                                <Transform scale='1.5 1 1'>
 87 
                                   <!-- Shape ScopeFairing is a DEF node that has 1 USE node: USE_1 -->
                                   <Shape DEF='ScopeFairing'>
 88                                          <Cylinder height='7radius='.1'/>
 89                                          <Appearance>
 90 
                                             <!-- Material SeaFoamGreen is a DEF node that has 1 USE node: USE_1 -->
                                             <Material DEF='SeaFoamGreendiffuseColor='.6 1 .8'/>
 91                                          </Appearance>
 92                                     </Shape>
 93                                </Transform>
 94                           </Transform>
 95                           <Group DEF='Move1ScopeUp'>
 96 
                              <!-- 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'/>
 97                                < ROUTE  fromNode='UpTimer' fromField='fraction_changed' toNode='Scope1Up' toField='set_fraction'/>
 98                                < ROUTE  fromNode='Scope1Up' fromField='value_changed' toNode='MoveScope1' toField='set_translation'/>
 99                           </Group>
100                           <Group DEF='Move1ScopeDown'>
101 
                              <!-- 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'/>
102                                < ROUTE  fromNode='DownTimer' fromField='fraction_changed' toNode='Scope1Down' toField='set_fraction'/>
103                                < ROUTE  fromNode='Scope1Down' fromField='value_changed' toNode='MoveScope1' toField='set_translation'/>
104                           </Group>
105                      </Transform>
106 
                    <!-- 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'>
107 
                         <!-- ROUTE information for MoveScope2Touch node:  [from touchTime to Scope2Timer.set_startTime ] -->
                         <TouchSensor DEF='MoveScope2Touchdescription='Sensor to Cycle #2 Scope'/>
108 
                         <!-- ROUTE information for Scope2Timer node:  [from MoveScope2Touch.touchTime to set_startTime ] [from fraction_changed to Scope2UpAndDown.set_fraction ] -->
                         <TimeSensor DEF='Scope2TimercycleInterval='4'/>
109                           < ROUTE  fromNode='MoveScope2Touch' fromField='touchTime' toNode='Scope2Timer' toField='set_startTime'/>
110 
                         <!-- 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'/>
111                           < ROUTE  fromNode='Scope2Timer' fromField='fraction_changed' toNode='Scope2UpAndDown' toField='set_fraction'/>
112                           < ROUTE  fromNode='Scope2UpAndDown' fromField='value_changed' toNode='MoveScope2' toField='set_translation'/>
113                           <Transform DEF='No2Scopetranslation='-.483 6.9 -.414'>
114                                <Shape USE='Scope'/>
115                                <Transform scale='1.5 1 1'>
116                                     <Shape USE='ScopeFairing'/>
117                                </Transform>
118                           </Transform>
119                           <Group DEF='Move2ScopeDown'>
120 
                              <!-- 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'/>
121                                < ROUTE  fromNode='DownTimer' fromField='fraction_changed' toNode='Scope2Down' toField='set_fraction'/>
122                                < ROUTE  fromNode='Scope2Down' fromField='value_changed' toNode='MoveScope2' toField='set_translation'/>
123                           </Group>
124                           <Group DEF='Move2ScopeUp'>
125 
                              <!-- 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'/>
126                                < ROUTE  fromNode='UpTimer' fromField='fraction_changed' toNode='Scope2Up' toField='set_fraction'/>
127                                < ROUTE  fromNode='Scope2Up' fromField='value_changed' toNode='MoveScope2' toField='set_translation'/>
128                           </Group>
129                      </Transform>
130                 </Group>
131                 <Group DEF='SnorkelMast'>
132 
                    <!-- 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'>
133 
                         <!-- ROUTE information for MoveSnorkelTouch node:  [from touchTime to Timer.set_startTime ] -->
                         <TouchSensor DEF='MoveSnorkelTouchdescription='Sensor to Cycle Snorkel Mast'/>
134 
                         <!-- ROUTE information for Timer node:  [from MoveSnorkelTouch.touchTime to set_startTime ] [from fraction_changed to UpAndDown.set_fraction ] -->
                         <TimeSensor DEF='TimercycleInterval='4'/>
135                           < ROUTE  fromNode='MoveSnorkelTouch' fromField='touchTime' toNode='Timer' toField='set_startTime'/>
136 
                         <!-- 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'/>
137                           < ROUTE  fromNode='Timer' fromField='fraction_changed' toNode='UpAndDown' toField='set_fraction'/>
138                           < ROUTE  fromNode='UpAndDown' fromField='value_changed' toNode='MoveSnorkel' toField='set_translation'/>
139                           <Transform DEF='Snorkelscale='1.3 1 1translation='-2.484 7.52 0'>
140                                <Shape>
141                                     <Cylinder height='4radius='.3'/>
142                                     <Appearance>
143                                          <Material diffuseColor='.6 .6 .6'/>
144                                     </Appearance>
145                                </Shape>
146                           </Transform>
147                           <Transform DEF='SnorkelCapscale='1.4 1.1 1.1translation='-2.484 9.52 0'>
148                                <Shape>
149                                     <Cylinder height='.6radius='.5'/>
150                                     <Appearance USE='Black'/>
151                                </Shape>
152                           </Transform>
153                           <Group DEF='MoveSnorkelUp'>
154 
                              <!-- 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'/>
155                                < ROUTE  fromNode='UpTimer' fromField='fraction_changed' toNode='SnorkelUp' toField='set_fraction'/>
156                                < ROUTE  fromNode='SnorkelUp' fromField='value_changed' toNode='MoveSnorkel' toField='set_translation'/>
157                           </Group>
158                           <Group DEF='MoveSnorkelDown'>
159 
                              <!-- 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'/>
160                                < ROUTE  fromNode='DownTimer' fromField='fraction_changed' toNode='SnorkelDown' toField='set_fraction'/>
161                                < ROUTE  fromNode='SnorkelDown' fromField='value_changed' toNode='MoveSnorkel' toField='set_translation'/>
162                           </Group>
163                      </Transform>
164                 </Group>
165                 <Group DEF='ANBRA-34'>
166 
                    <!-- 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'>
167 
                         <!-- ROUTE information for MoveBRA-34Touch node:  [from touchTime to BRA-34Timer.set_startTime ] -->
                         <TouchSensor DEF='MoveBRA-34Touchdescription='Cycles #1 Bra-34'/>
168 
                         <!-- 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'/>
169 
                         <!-- 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'/>
170                           < ROUTE  fromNode='BRA-34Timer' fromField='fraction_changed' toNode='BRA-34UpAndDown' toField='set_fraction'/>
171                           < ROUTE  fromNode='BRA-34UpAndDown' fromField='value_changed' toNode='MoveBRA-34' toField='set_translation'/>
172                           < ROUTE  fromNode='MoveBRA-34Touch' fromField='touchTime' toNode='BRA-34Timer' toField='set_startTime'/>
173                           <Transform DEF='No1BRA34translation='.552 7.4 .414'>
174                                <Transform DEF='BRA34Fairingscale='1.8 1 1'>
175 
                                   <!-- Shape BRA34FairingShape is a DEF node that has 1 USE node: USE_1 -->
                                   <Shape DEF='BRA34FairingShape'>
176                                          <Cylinder height='7radius='.13'/>
177                                          <Appearance USE='Gray'/>
178                                     </Shape>
179                                </Transform>
180                                <Transform DEF='BRA34Captranslation='0 6.95 0'>
181 
                                   <!-- Shape Cap is a DEF node that has 1 USE node: USE_1 -->
                                   <Shape DEF='Cap'>
182                                          <Cylinder height='.1radius='.08'/>
183                                          <Appearance USE='Black'/>
184                                     </Shape>
185                                </Transform>
186                                <Transform translation='0 3 0'>
187 
                                   <!-- Shape BRA34Shape is a DEF node that has 1 USE node: USE_1 -->
                                   <Shape DEF='BRA34Shape'>
188                                          <Cylinder DEF='BRA34height='7.8radius='.08'/>
189                                          <Appearance>
190                                               <Material USE='SeaFoamGreen'/>
191                                          </Appearance>
192                                     </Shape>
193                                </Transform>
194                           </Transform>
195                           <Group DEF='Move1Bra34Up'>
196 
                              <!-- 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'/>
197                                < ROUTE  fromNode='UpTimer' fromField='fraction_changed' toNode='BRA-34Up' toField='set_fraction'/>
198                                < ROUTE  fromNode='BRA-34Up' fromField='value_changed' toNode='MoveBRA-34' toField='set_translation'/>
199                           </Group>
200                           <Group DEF='Move1BRA-34lDown'>
201 
                              <!-- 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'/>
202                                < ROUTE  fromNode='DownTimer' fromField='fraction_changed' toNode='BRA-34Down' toField='set_fraction'/>
203                                < ROUTE  fromNode='BRA-34Down' fromField='value_changed' toNode='MoveBRA-34' toField='set_translation'/>
204                           </Group>
205                      </Transform>
206 
                    <!-- 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'>
207 
                         <!-- ROUTE information for Move2BRA-34Touch node:  [from touchTime to No2BRA-34Timer.set_startTime ] -->
                         <TouchSensor DEF='Move2BRA-34Touchdescription='Cycles #2 Bra-34'/>
208 
                         <!-- 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'/>
209 
                         <!-- 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'/>
210                           < ROUTE  fromNode='No2BRA-34Timer' fromField='fraction_changed' toNode='No2BRA-34UpAndDown' toField='set_fraction'/>
211                           < ROUTE  fromNode='No2BRA-34UpAndDown' fromField='value_changed' toNode='MoveBRA-34No2' toField='set_translation'/>
212                           < ROUTE  fromNode='Move2BRA-34Touch' fromField='touchTime' toNode='No2BRA-34Timer' toField='set_startTime'/>
213                           <Transform DEF='No2BRA34translation='.552 7.4 -.414'>
214                                <Transform scale='1.8 1 1'>
215                                     <Shape USE='BRA34FairingShape'/>
216                                </Transform>
217                                <Transform translation='0 6.95 0'>
218                                     <Shape USE='Cap'/>
219                                </Transform>
220                                <Transform translation='0 3 0'>
221                                     <Shape USE='BRA34Shape'/>
222                                </Transform>
223                           </Transform>
224                           <Group DEF='Move2Bra34Up'>
225 
                              <!-- 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'/>
226                                < ROUTE  fromNode='UpTimer' fromField='fraction_changed' toNode='BRA-342Up' toField='set_fraction'/>
227                                < ROUTE  fromNode='BRA-342Up' fromField='value_changed' toNode='MoveBRA-34No2' toField='set_translation'/>
228                           </Group>
229                           <Group DEF='Move2BRA-34lDown'>
230 
                              <!-- 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'/>
231                                < ROUTE  fromNode='DownTimer' fromField='fraction_changed' toNode='BRA-342Down' toField='set_fraction'/>
232                                < ROUTE  fromNode='BRA-342Down' fromField='value_changed' toNode='MoveBRA-34No2' toField='set_translation'/>
233                           </Group>
234                      </Transform>
235                 </Group>
236                 <Transform DEF='Sail'>
237                      <Shape>
238                           <Appearance USE='Black'/>
239                           <Extrusion creaseAngle='3crossSection='-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 -.207 3.726 -.552 3.312 -.69 2.76 -.759 1.38 -.966 0 -.966 -1.38 -.828 -2.76 -.69 -4.14 -.414 -5.382 0spine='0 0 0 0 5.52 0'/>
240                      </Shape>
241                 </Transform>
242                 <Transform DEF='BRD-7translation='-1.449 7.52 0'>
243 
                    <!-- 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'>
244 
                         <!-- ROUTE information for MoveBRD7Touch node:  [from touchTime to BRD7Timer.set_startTime ] -->
                         <TouchSensor DEF='MoveBRD7Touchdescription='Cycles BRD-7'/>
245 
                         <!-- ROUTE information for BRD7Timer node:  [from MoveBRD7Touch.touchTime to set_startTime ] [from fraction_changed to BRD7UpAndDown.set_fraction ] -->
                         <TimeSensor DEF='BRD7TimercycleInterval='4'/>
246                           < ROUTE  fromNode='MoveBRD7Touch' fromField='touchTime' toNode='BRD7Timer' toField='set_startTime'/>
247 
                         <!-- 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'/>
248                           < ROUTE  fromNode='BRD7Timer' fromField='fraction_changed' toNode='BRD7UpAndDown' toField='set_fraction'/>
249                           < ROUTE  fromNode='BRD7UpAndDown' fromField='value_changed' toNode='MoveBRD7' toField='set_translation'/>
250                           <Transform DEF='BRD-7Pole'>
251                                <Shape>
252                                     <Cylinder height='6radius='.1'/>
253                                     <Appearance USE='Black'/>
254                                </Shape>
255                           </Transform>
256                           <Transform DEF='BRD-7TopHattranslation='0 3 0'>
257                                <Shape>
258                                     <Cylinder height='.8radius='.5'/>
259                                     <Appearance USE='Black'/>
260                                </Shape>
261                           </Transform>
262                           <Group DEF='MoveBRD-7Up'>
263 
                              <!-- 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'/>
264                                < ROUTE  fromNode='UpTimer' fromField='fraction_changed' toNode='BRD7Up' toField='set_fraction'/>
265                                < ROUTE  fromNode='BRD7Up' fromField='value_changed' toNode='MoveBRD7' toField='set_translation'/>
266                           </Group>
267                           <Group DEF='MoveBRD-7lDown'>
268 
                              <!-- 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'/>
269                                < ROUTE  fromNode='DownTimer' fromField='fraction_changed' toNode='BRD7Down' toField='set_fraction'/>
270                                < ROUTE  fromNode='BRD7Down' fromField='value_changed' toNode='MoveBRD7' toField='set_translation'/>
271                           </Group>
272                      </Transform>
273                 </Transform>
274                 <Transform DEF='NavIDtranslation='1.449 5.52 .552'>
275 
                    <!-- 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'>
276 
                         <!-- ROUTE information for NavIDTouch node:  [from touchTime to NavIDTimer.set_startTime ] -->
                         <TouchSensor DEF='NavIDTouchdescription='Cycles NAV ID'/>
277 
                         <!-- ROUTE information for NavIDTimer node:  [from NavIDTouch.touchTime to set_startTime ] [from fraction_changed to NavIDUpAndDown.set_fraction ] -->
                         <TimeSensor DEF='NavIDTimercycleInterval='4'/>
278                           < ROUTE  fromNode='NavIDTouch' fromField='touchTime' toNode='NavIDTimer' toField='set_startTime'/>
279 
                         <!-- 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'/>
280                           < ROUTE  fromNode='NavIDTimer' fromField='fraction_changed' toNode='NavIDUpAndDown' toField='set_fraction'/>
281                           < ROUTE  fromNode='NavIDUpAndDown' fromField='value_changed' toNode='MoveNavID' toField='set_translation'/>
282                           <Transform DEF='NavIDPoletranslation='0 2 0'>
283                                <Shape>
284                                     <Cylinder height='4radius='.05'/>
285                                     <Appearance USE='Gray'/>
286                                </Shape>
287                           </Transform>
288                           <Transform DEF='NavIDLighttranslation='0 4 0'>
289                                <Shape>
290                                     <Cylinder height='.3radius='.1'/>
291                                     <Appearance>
292 
                                        <!-- ROUTE information for NavIDColor node:  [from ColorPath.value_changed to set_emissiveColor ] -->
                                        <Material DEF='NavIDColorambientIntensity='0'/>
293                                     </Appearance>
294                                </Shape>
295 
                              <!-- 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'/>
296                                < ROUTE  fromNode='ColorPath' fromField='value_changed' toNode='NavIDColor' toField='set_emissiveColor'/>
297 
                              <!-- ROUTE information for AnimationClock node:  [from fraction_changed to ColorPath.set_fraction ] -->
                              <TimeSensor DEF='AnimationClockcycleInterval='9loop='true'/>
298                                < ROUTE  fromNode='AnimationClock' fromField='fraction_changed' toNode='ColorPath' toField='set_fraction'/>
299                           </Transform>
300                           <Group DEF='MoveNavIDUp'>
301 
                              <!-- 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'/>
302                                < ROUTE  fromNode='UpTimer' fromField='fraction_changed' toNode='NavIDUp' toField='set_fraction'/>
303                                < ROUTE  fromNode='NavIDUp' fromField='value_changed' toNode='MoveNavID' toField='set_translation'/>
304                           </Group>
305                           <Group DEF='MoveNavIDlDown'>
306 
                              <!-- 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'/>
307                                < ROUTE  fromNode='DownTimer' fromField='fraction_changed' toNode='NavIDDown' toField='set_fraction'/>
308                                < ROUTE  fromNode='NavIDDown' fromField='value_changed' toNode='MoveNavID' toField='set_translation'/>
309                           </Group>
310                      </Transform>
311                 </Transform>
312                 <Transform DEF='FairwaterPlanesMainrotation='1 0 0 -1.57translation='-1.85 3.54 6'>
313 
                    <!-- ROUTE information for FairwaterPlanes node:  [from RotateFWPlanes.value_changed to set_rotation ] -->
                    <Transform DEF='FairwaterPlanescenter='3 0 0'>
314                           <Inline   url=' "Planes.x3d" "https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Planes.x3d" "Planes.wrl" "https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Planes.wrl" '/>
315 
                         <!-- ROUTE information for MoveFWPlanes node:  [from touchTime to FWPlaneTimer.set_startTime ] -->
                         <TouchSensor DEF='MoveFWPlanesdescription='Cycles FW Planes'/>
316 
                         <!-- ROUTE information for FWPlaneTimer node:  [from MoveFWPlanes.touchTime to set_startTime ] [from fraction_changed to RotateFWPlanes.set_fraction ] -->
                         <TimeSensor DEF='FWPlaneTimercycleInterval='5'/>
317                           < ROUTE  fromNode='MoveFWPlanes' fromField='touchTime' toNode='FWPlaneTimer' toField='set_startTime'/>
318 
                         <!-- 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'/>
319                           < ROUTE  fromNode='FWPlaneTimer' fromField='fraction_changed' toNode='RotateFWPlanes' toField='set_fraction'/>
320                           < ROUTE  fromNode='RotateFWPlanes' fromField='value_changed' toNode='FairwaterPlanes' toField='set_rotation'/>
321                      </Transform>
322                 </Transform>
323            </Transform>
324            <ProtoInstance name='HeadsUpDisplay'>
325                 <fieldValue name='dragChildren'>
326                      <Transform translation='0 0 -0.2'>
327                           <Shape>
328                                <Box size='5 2 0.001'/>
329                                <Appearance>
330                                     <Material diffuseColor='1 1 1transparency='1'/>
331                                </Appearance>
332                           </Shape>
333                      </Transform>
334                 </fieldValue>
335                 <fieldValue name='locationOffsetvalue='4 2 0'/>
336                 <fieldValue name='children'>
337                      <Transform>
338                           <Group DEF='SwitchGroup'>
339 
                              <!-- ROUTE information for RaiseOrLowerButton node:  [from AreMastsUp.setSwitch to whichChoice ] -->
                              <Switch DEF='RaiseOrLowerButtonwhichChoice='0'>
340                                     <Group DEF='LowerMasts'>
341 
                                        <!-- ROUTE information for ClickToLowerSensor node:  [from touchTime to DownTimer.set_startTime ] [from isActive to AreMastsUp.down ] -->
                                        <TouchSensor DEF='ClickToLowerSensordescription='Lower All Masts'/>
342                                          <Shape>
343                                               <Text string='"Click To Lower All Masts"'>
344 
                                                  <!-- FontStyle HudText is a DEF node that has 1 USE node: USE_1 -->
                                                  <FontStyle DEF='HudTextjustify='"MIDDLE" "MIDDLE"size='0.5'/>
345                                               </Text>
346                                               <Appearance>
347                                                    <Material diffuseColor='0 .8 0'/>
348                                               </Appearance>
349                                          </Shape>
350                                     </Group>
351                                     <Group DEF='RaiseMasts'>
352 
                                        <!-- ROUTE information for ClickToRaiseSensor node:  [from touchTime to UpTimer.set_startTime ] [from isActive to AreMastsUp.up ] -->
                                        <TouchSensor DEF='ClickToRaiseSensordescription='Raise ALl Masts'/>
353                                          <Shape>
354                                               <Text string='"Click To Raise All Masts"'>
355                                                    <FontStyle USE='HudText'/>
356                                               </Text>
357                                               <Appearance>
358                                                    <Material diffuseColor='1 0 0'/>
359                                               </Appearance>
360                                          </Shape>
361                                     </Group>
362                                </Switch>
363 
                              <!-- ROUTE information for AreMastsUp node:  [from ClickToLowerSensor.isActive to down ] [from ClickToRaiseSensor.isActive to up ] [from setSwitch to RaiseOrLowerButton.whichChoice ] -->
                              <Script DEF='AreMastsUp'>
364                                     <field name='uptype='SFBoolaccessType='inputOnly'/>
365                                     <field name='downtype='SFBoolaccessType='inputOnly'/>
366                                     <field name='setSwitchtype='SFInt32accessType='outputOnly'/>
  <![CDATA[
              
ecmascript:

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

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

            
]]>
368                                </Script>
369                           </Group>
370                           <Group DEF='LowerOrRaiseRouteGroup'>
371                                < ROUTE  fromNode='ClickToLowerSensor' fromField='touchTime' toNode='DownTimer' toField='set_startTime'/>
372                                < ROUTE  fromNode='ClickToRaiseSensor' fromField='touchTime' toNode='UpTimer' toField='set_startTime'/>
373                                < ROUTE  fromNode='ClickToLowerSensor' fromField='isActive' toNode='AreMastsUp' toField='down'/>
374                                < ROUTE  fromNode='ClickToRaiseSensor' fromField='isActive' toNode='AreMastsUp' toField='up'/>
375                                < ROUTE  fromNode='AreMastsUp' fromField='setSwitch' toNode='RaiseOrLowerButton' toField='whichChoice'/>
376                           </Group>
377                      </Transform>
378                 </fieldValue>
379            </ProtoInstance>
380       </Scene>
381  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top 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 node: Viewpoint_1

Index for ExternProtoDeclare definition: HeadsUpDisplay
-->
X3D Tooltips element index: Appearance, Box, ColorInterpolator, Cylinder, ExternProtoDeclare, Extrusion, field, fieldValue, FontStyle, Group, head, Inline, Material, meta, OrientationInterpolator, PositionInterpolator, ProtoInstance, ROUTE, Scene, Script, Shape, Switch, Text, TimeSensor, TouchSensor, Transform, Viewpoint, WorldInfo, X3D, accessType and type, XML data types, field types

Event Graph ROUTE Table entries with 66 ROUTE connections total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.

ClickToLowerSensor
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
DownTimer
TimeSensor
set_startTime
SFTime
then
 
 
 
DownTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
RadarDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
RadarDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveRadar
Transform
set_translation
SFVec3f
  then
 
 
 
DownTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Scope1Down
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
Scope1Down
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveScope1
Transform
set_translation
SFVec3f
  then
 
 
 
DownTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Scope2Down
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
Scope2Down
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveScope2
Transform
set_translation
SFVec3f
  then
 
 
 
DownTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
SnorkelDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
SnorkelDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveSnorkel
Transform
set_translation
SFVec3f
  then
 
 
 
DownTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
BRA-34Down
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BRA-34Down
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveBRA-34
Transform
set_translation
SFVec3f
  then
 
 
 
DownTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
BRA-342Down
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BRA-342Down
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveBRA-34No2
Transform
set_translation
SFVec3f
  then
 
 
 
DownTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
BRD7Down
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BRD7Down
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveBRD7
Transform
set_translation
SFVec3f
ClickToLowerSensor
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
AreMastsUp
Script
down
SFBool
then
 
 
 
AreMastsUp
Script
setSwitch
SFInt32

ROUTE
event to
(2)
RaiseOrLowerButton
Switch
whichChoice
SFInt32

ClickToRaiseSensor
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
UpTimer
TimeSensor
set_startTime
SFTime
then
 
 
 
UpTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
RadarUp
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
RadarUp
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveRadar
Transform
set_translation
SFVec3f
  then
 
 
 
UpTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Scope1Up
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
Scope1Up
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveScope1
Transform
set_translation
SFVec3f
  then
 
 
 
UpTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Scope2Up
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
Scope2Up
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveScope2
Transform
set_translation
SFVec3f
  then
 
 
 
UpTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
SnorkelUp
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
SnorkelUp
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveSnorkel
Transform
set_translation
SFVec3f
  then
 
 
 
UpTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
BRA-34Up
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BRA-34Up
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveBRA-34
Transform
set_translation
SFVec3f
  then
 
 
 
UpTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
BRA-342Up
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BRA-342Up
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveBRA-34No2
Transform
set_translation
SFVec3f
  then
 
 
 
UpTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
BRD7Up
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BRD7Up
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveBRD7
Transform
set_translation
SFVec3f
ClickToRaiseSensor
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
AreMastsUp
Script
up
SFBool
then
 
 
 
AreMastsUp
Script
setSwitch
SFInt32

ROUTE
event to
(2)
RaiseOrLowerButton
Switch
whichChoice
SFInt32

Move2BRA-34Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
No2BRA-34Timer
TimeSensor
set_startTime
SFTime
then
 
 
 
No2BRA-34Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
No2BRA-34UpAndDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
No2BRA-34UpAndDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveBRA-34No2
Transform
set_translation
SFVec3f

MoveBRA-34Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
BRA-34Timer
TimeSensor
set_startTime
SFTime
then
 
 
 
BRA-34Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
BRA-34UpAndDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BRA-34UpAndDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveBRA-34
Transform
set_translation
SFVec3f

MoveBRD7Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
BRD7Timer
TimeSensor
set_startTime
SFTime
then
 
 
 
BRD7Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
BRD7UpAndDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BRD7UpAndDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveBRD7
Transform
set_translation
SFVec3f

MoveFWPlanes
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
FWPlaneTimer
TimeSensor
set_startTime
SFTime
then
 
 
 
FWPlaneTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
RotateFWPlanes
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
RotateFWPlanes
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
FairwaterPlanes
Transform
set_rotation
SFRotation

MoveRadarTouch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
RadarTimer
TimeSensor
set_startTime
SFTime
then
 
 
 
RadarTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
RadarUpAndDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
RadarUpAndDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveRadar
Transform
set_translation
SFVec3f

MoveScope1Sensor
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Scope1Timer
TimeSensor
set_startTime
SFTime
then
 
 
 
Scope1Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Scope1UpAndDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
Scope1UpAndDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveScope1
Transform
set_translation
SFVec3f

MoveScope2Touch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Scope2Timer
TimeSensor
set_startTime
SFTime
then
 
 
 
Scope2Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Scope2UpAndDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
Scope2UpAndDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveScope2
Transform
set_translation
SFVec3f

MoveSnorkelTouch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Timer
TimeSensor
set_startTime
SFTime
then
 
 
 
Timer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
UpAndDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
UpAndDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveSnorkel
Transform
set_translation
SFVec3f

NavIDTouch
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
NavIDTimer
TimeSensor
set_startTime
SFTime
then
 
 
 
NavIDTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
NavIDUpAndDown
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
NavIDUpAndDown
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
MoveNavID
Transform
set_translation
SFVec3f

AnimationClock
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
ColorPath
ColorInterpolator
set_fraction
SFFloat
then
 
 
 
ColorPath
ColorInterpolator
value_changed
SFColor

ROUTE
event to
(2)
NavIDColor
Material
set_emissiveColor
SFColor


ProtoInstance
HeadsUpDisplay
No ROUTE connection found for output events from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 
Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

-->
<!-- Online at
https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/SailIndex.html -->
<!-- Version control at
https://gitlab.nps.edu/Savage/Savage/Submarines/SsnLosAngelesUnitedStates/Sail.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
    <ProtoInstance name='ProtoName'> <field name='fieldName'/> </ProtoInstance> -->

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