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='title' content='Sail.x3d'/>
  6            <meta name='description' content='Sail of 688 Submarine with masts up'/>
  7            <meta name='creator' content='LT Ken Curtin'/>
  8            <meta name='created' content='4 August 2003'/>
  9            <meta name='modified' content='28 November 2019'/>
 10            <meta name='reference' content='https://www.fas.org/man/dod-101/sys/ship/ssn-688.htm'/>
 11            <meta name='reference' content='http://www.combatindex.com/store/3d/ssn688_model.html'/>
 12            <meta name='subject' content='Submarine, 688, Sail'/>
 13            <meta name='identifier' content='https://savage.nps.edu/Savage/Submarines/SsnLosAngelesUnitedStates/Sail.x3d'/>
 14            <meta name='generator' content='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
 15            <meta name='license' content='../../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='children' type='MFNode' accessType='inputOutput'
                appinfo='Displayed subscene positioned as a HUD.'/>
 21                 <field name='dragChildren' type='MFNode' accessType='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='locationOffset' type='SFVec3f' accessType='initializeOnly'
                appinfo='Modified screen location and distance (for size).'/>
 23                 <field name='traceEnabled' type='SFBool' accessType='initializeOnly'
                appinfo='Enable/disable console output for troubleshooting.'/>
 24            </ExternProtoDeclare>
 25 
 26 
 27            <Viewpoint description='StbdSideSail' orientation='0.351 0.933 -0.077 0.2902' position='4.3 5.4 17.8'/>
 28            <Transform>
 29                 <Transform DEF='Bridge' translation='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 .8' shininess='.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='RadarTop' translation='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='Radar' translation='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='MoveRadarTouch' description='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='RadarTimer' cycleInterval='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='RadarUpAndDown' key='0 .5 1' keyValue='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='RadarUp' key='0 1' keyValue='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='RadarDown' key='0 1' keyValue='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='MoveScope1Sensor' description='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='Scope1Timer' cycleInterval='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='Scope1UpAndDown' key='0 .5 1' keyValue='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='No1Scope' translation='-.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.8' radius='.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='7' radius='.1'/>
 89                                          <Appearance>
 90 
                                             <!-- Material SeaFoamGreen is a DEF node that has 1 USE node: USE_1 -->
                                             <Material DEF='SeaFoamGreen' diffuseColor='.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='Scope1Up' key='0 1' keyValue='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='Scope1Down' key='0 1' keyValue='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='MoveScope2Touch' description='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='Scope2Timer' cycleInterval='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='Scope2UpAndDown' key='0 .5 1' keyValue='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='No2Scope' translation='-.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='Scope2Down' key='0 1' keyValue='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='Scope2Up' key='0 1' keyValue='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='MoveSnorkelTouch' description='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='Timer' cycleInterval='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='UpAndDown' key='0 .5 1' keyValue='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='Snorkel' scale='1.3 1 1' translation='-2.484 7.52 0'>
140                                <Shape>
141                                     <Cylinder height='4' radius='.3'/>
142                                     <Appearance>
143                                          <Material diffuseColor='.6 .6 .6'/>
144                                     </Appearance>
145                                </Shape>
146                           </Transform>
147                           <Transform DEF='SnorkelCap' scale='1.4 1.1 1.1' translation='-2.484 9.52 0'>
148                                <Shape>
149                                     <Cylinder height='.6' radius='.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='SnorkelUp' key='0 1' keyValue='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='SnorkelDown' key='0 1' keyValue='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-34Touch' description='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-34Timer' cycleInterval='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-34UpAndDown' key='0 .5 1' keyValue='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='No1BRA34' translation='.552 7.4 .414'>
174                                <Transform DEF='BRA34Fairing' scale='1.8 1 1'>
175 
                                   <!-- Shape BRA34FairingShape is a DEF node that has 1 USE node: USE_1 -->
                                   <Shape DEF='BRA34FairingShape'>
176                                          <Cylinder height='7' radius='.13'/>
177                                          <Appearance USE='Gray'/>
178                                     </Shape>
179                                </Transform>
180                                <Transform DEF='BRA34Cap' translation='0 6.95 0'>
181 
                                   <!-- Shape Cap is a DEF node that has 1 USE node: USE_1 -->
                                   <Shape DEF='Cap'>
182                                          <Cylinder height='.1' radius='.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='BRA34' height='7.8' radius='.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-34Up' key='0 1' keyValue='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-34Down' key='0 1' keyValue='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-34Touch' description='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-34Timer' cycleInterval='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-34UpAndDown' key='0 .5 1' keyValue='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='No2BRA34' translation='.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-342Up' key='0 1' keyValue='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-342Down' key='0 1' keyValue='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='3' 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 -.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 0' spine='0 0 0 0 5.52 0'/>
240                      </Shape>
241                 </Transform>
242                 <Transform DEF='BRD-7' translation='-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='MoveBRD7Touch' description='Cycles BRD-7'/>
245 
                         <!-- ROUTE information for BRD7Timer node:  [from MoveBRD7Touch.touchTime to set_startTime ] [from fraction_changed to BRD7UpAndDown.set_fraction ] -->
                         <TimeSensor DEF='BRD7Timer' cycleInterval='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='BRD7UpAndDown' key='0 .5 1' keyValue='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='6' radius='.1'/>
253                                     <Appearance USE='Black'/>
254                                </Shape>
255                           </Transform>
256                           <Transform DEF='BRD-7TopHat' translation='0 3 0'>
257                                <Shape>
258                                     <Cylinder height='.8' radius='.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='BRD7Up' key='0 1' keyValue='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='BRD7Down' key='0 1' keyValue='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='NavID' translation='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='NavIDTouch' description='Cycles NAV ID'/>
277 
                         <!-- ROUTE information for NavIDTimer node:  [from NavIDTouch.touchTime to set_startTime ] [from fraction_changed to NavIDUpAndDown.set_fraction ] -->
                         <TimeSensor DEF='NavIDTimer' cycleInterval='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='NavIDUpAndDown' key='0 .5 1' keyValue='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='NavIDPole' translation='0 2 0'>
283                                <Shape>
284                                     <Cylinder height='4' radius='.05'/>
285                                     <Appearance USE='Gray'/>
286                                </Shape>
287                           </Transform>
288                           <Transform DEF='NavIDLight' translation='0 4 0'>
289                                <Shape>
290                                     <Cylinder height='.3' radius='.1'/>
291                                     <Appearance>
292 
                                        <!-- ROUTE information for NavIDColor node:  [from ColorPath.value_changed to set_emissiveColor ] -->
                                        <Material DEF='NavIDColor' ambientIntensity='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='ColorPath' key='0.0 .2 .250 .450 .5 .7 .750 .875 1' 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'/>
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='AnimationClock' cycleInterval='9' loop='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='NavIDUp' key='0 1' keyValue='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='NavIDDown' key='0 1' keyValue='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='FairwaterPlanesMain' rotation='1 0 0 -1.57' translation='-1.85 3.54 6'>
313 
                    <!-- ROUTE information for FairwaterPlanes node:  [from RotateFWPlanes.value_changed to set_rotation ] -->
                    <Transform DEF='FairwaterPlanes' center='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='MoveFWPlanes' description='Cycles FW Planes'/>
316 
                         <!-- ROUTE information for FWPlaneTimer node:  [from MoveFWPlanes.touchTime to set_startTime ] [from fraction_changed to RotateFWPlanes.set_fraction ] -->
                         <TimeSensor DEF='FWPlaneTimer' cycleInterval='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='RotateFWPlanes' key='0 .25 .50 .75 1.0' 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'/>
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 1' transparency='1'/>
331                                </Appearance>
332                           </Shape>
333                      </Transform>
334                 </fieldValue>
335                 <fieldValue name='locationOffset' value='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='RaiseOrLowerButton' whichChoice='0'>
340                                     <Group DEF='LowerMasts'>
341 
                                        <!-- ROUTE information for ClickToLowerSensor node:  [from touchTime to DownTimer.set_startTime ] [from isActive to AreMastsUp.down ] -->
                                        <TouchSensor DEF='ClickToLowerSensor' description='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='HudText' justify='"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='ClickToRaiseSensor' description='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='up' type='SFBool' accessType='inputOnly'/>
365                                     <field name='down' type='SFBool' accessType='inputOnly'/>
366                                     <field name='setSwitch' type='SFInt32' accessType='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, plus documentation for accessType definitions, type definitions, XML data types, and 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

line 324
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-coding 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. -->