X3D Model Documentation: SeaZenith.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='SeaZenith.x3d'/>
  6            <meta name='descriptioncontent='A lightweight prototype of SeaZenith point defence gun'/>
  7            <meta name='creatorcontent='Ozan APAYDIN'/>
  8            <meta name='createdcontent='20 August 2001'/>
  9            <meta name='modifiedcontent='20 October 2019'/>
 10            <meta name='referencecontent='http://www.futura-dtp.dk/Artilleri/25mmSeaZenith.htm'/>
 11            <meta name='identifiercontent='https://savage.nps.edu/Savage/ShipsMilitary/FrigateYavuzTurkey/SeaZenith.x3d'/>
 12            <meta name='generatorcontent='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
 13            <meta name='licensecontent='../../license.html'/>
 14       </head>
<!--

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

<!-- to top Index for DEF nodes: ButtonRotInter, ChScale, DescSensor, Disk, ElevDescUpdater, ElevSensor, FireCone, FireSensor, FireSound, fireTimer, FireTransform, GunAp, GunBase, GunControl, GunMount, HoleNamlu, InNamlu, InnerFireCone, LRotSensor, MenuB, MountBody, MountCap, Namlu, NamluDondur, NamluGROUP, NamluSensor, OutNamlu, PortSideTimer, RotUpdater, RRotSensor, TopDondur, TopSensor
-->
 15       <Scene>
 16            <!-- Script Node to update the rotation of the gun. -->
 17            <WorldInfo title='SeaZenith.x3d'/>
 18 
 19                 <!-- Variables and methods of the RotUpdater script -->
 20                 <field name='set_LRotationtype='SFBoolaccessType='inputOnly'/>
 21                 <field name='set_RRotationtype='SFBoolaccessType='inputOnly'/>
 22                 <field name='get_CurRotationtype='SFRotationaccessType='inputOnly'/>
 23                 <field name='isLefttype='SFBoolvalue='trueaccessType='initializeOnly'/>
 24                 <field name='isRighttype='SFBoolvalue='falseaccessType='initializeOnly'/>
 25                 <field name='CurRottype='SFRotationvalue='0 1 0 0accessType='initializeOnly'/>
 26                 <field name='newRotationtype='SFRotationaccessType='outputOnly'/>
  <![CDATA[
      
ecmascript:

function initialize() {
   CurRot[0] = 0.0;
   CurRot[1] = 1.0;
   CurRot[2] = 0.0;
   CurRot[3] = 0.0;
}

function set_LRotation(bool,time) {
   isLeft  =  bool;
   isRight = !bool;
   if(isLeft) {
      generate_Rotation();
   }
}

function set_RRotation(bool,time) {
   isRight =  bool;
   isLeft  = !bool;
   if(isRight) {
      generate_Rotation();
   }
}

function get_CurRotation(cR,time) {
   CurRot = cR;
}

function generate_Rotation() {
   newRotation = CurRot;
   if(isLeft) {
      if(CurRot[3] < 1.7) {
          newRotation[3] = CurRot[3] + 0.2;
      }
   }
   
   else if(isRight) {
      if(CurRot[3] > -1.7) {
          newRotation[3] = CurRot[3] - 0.2;
      }
   }  
}

    
]]>
 28            </Script>
 29            <!-- Script node to update elevation of the gun. -->
 30 
 31                 <!-- Variables and methods of the ElevDescUpdater script script -->
 32                 <field name='set_Elevationtype='SFBoolaccessType='inputOnly'/>
 33                 <field name='set_Descendancetype='SFBoolaccessType='inputOnly'/>
 34                 <field name='get_CurOrientationtype='SFRotationaccessType='inputOnly'/>
 35                 <field name='isUptype='SFBoolvalue='trueaccessType='initializeOnly'/>
 36                 <field name='isDowntype='SFBoolvalue='falseaccessType='initializeOnly'/>
 37                 <field name='CurOrtype='SFRotationvalue='0 1 0 0accessType='initializeOnly'/>
 38                 <field name='newOrientationtype='SFRotationaccessType='outputOnly'/>
  <![CDATA[
      
ecmascript:

function initialize() {
   CurOr[0] = 0.0;
   CurOr[1] = 1.0;
   CurOr[2] = 0.0;
   CurOr[3] = 0.0;
}

function set_Elevation(bool,time) {
   isUp   =  bool;
   isDown = !bool;
   if(isUp) {
      generate_Rotation();
   }
}

function set_Descendance(bool,time) {
   isDown =  bool;
   isUp   = !bool;
   if(isDown) {
      generate_Rotation();
   }
}

function get_CurOrientation(cR,time) {
   CurOr = cR;
}

function generate_Rotation() {
   newOrientation = CurOr;
   if(isUp) {
      if(CurOr[3] < 0.45) {
          newOrientation[3] = CurOr[3] + 0.05;
      }
   }
   
   else if(isDown) {
      if(CurOr[3] > 0.05) {
          newOrientation[3] = CurOr[3] - 0.05;
      }
   }  
}

    
]]>
 40            </Script>
 41            <!-- Gun Controller - Heads up displays and touch sensors -->
 42            <Background skyColor='0.1 0.1 0.6'/>
 43            <!-- Fire sound effect. -->
 44            <Sound maxBack='35maxFront='35'>
 45 
               <!-- ROUTE information for FireSound node:  [from FireSensor.touchTime to set_startTime ] -->
               <AudioClip DEF='FireSounddescription='machine gun sound'   url=' "machngun.wav" "https://savage.nps.edu/Savage/ShipsMilitary/FrigateYavuzTurkey/machngun.wav" '/>
 46            </Sound>
 47            <!-- Modeling the gun -->
 48            <Transform rotation='0 1 0 3.14scale='1.2 1.2 1.2translation='0.0 -1.5 0.0'>
 49                 <Group DEF='GunBase'>
 50                      <Shape>
 51                           <Cylinder height='1.0'/>
 52 
                         <!-- Appearance GunAp is a DEF node that has 5 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5 -->
                         <Appearance DEF='GunAp'>
 53                                <Material diffuseColor='.7 .7 .8shininess='.4'/>
 54                           </Appearance>
 55                      </Shape>
 56                      <Transform translation='0.0 0.4 0.0'>
 57                           <Shape DEF='Disk'>
 58                                <Cylinder height='0.1radius='1.05'/>
 59                                <Appearance USE='GunAp'/>
 60                           </Shape>
 61                      </Transform>
 62                 </Group>
 63                 <!-- Mobile part of the gun (DEFLECTION) -->
 64 
               <!-- ROUTE information for TopDondur node:  [from TopSensor.rotation_changed to set_rotation ] [from RotUpdater.newRotation to set_rotation ] [from rotation to RotUpdater.get_CurRotation ] -->
               <Transform DEF='TopDondur'>
 65                      <Group DEF='GunMount'>
 66                           <Transform rotation='0.0 0.0 1.0 0.3scale='1.1 1.0 1.5translation='-0.385 1.8 0.0'>
 67                                <Shape DEF='MountBody'>
 68                                     <Cylinder radius='0.9'/>
 69                                     <Appearance USE='GunAp'/>
 70                                </Shape>
 71                                <Transform scale='1.0 0.8 1.0translation='0.0 1.0 0.0'>
 72                                     <Shape DEF='MountCap'>
 73                                          <Sphere radius='0.9'/>
 74                                          <Appearance USE='GunAp'/>
 75                                     </Shape>
 76                                </Transform>
 77                                <Transform translation='0.65 0.0 0.0'>
 78                                     <Shape>
 79                                          <Box size='0.5 1.8 0.7'/>
 80                                          <Appearance USE='GunAp'/>
 81                                     </Shape>
 82                                     <Transform translation='0.25 0.0 0.0'>
 83                                          <Shape>
 84                                               <Box size='0.1 1.8 0.5'/>
 85                                               <Appearance>
 86                                                    <Material diffuseColor='0.1 0.1 0.1'/>
 87                                               </Appearance>
 88                                          </Shape>
 89                                     </Transform>
 90                                </Transform>
 91                           </Transform>
 92                           <Transform rotation='1.0 0.0 0.0 1.57'>
 93 
                              <!-- ROUTE information for NamluSensor node:  [from rotation_changed to NamluDondur.set_rotation ] -->
                              <CylinderSensor DEF='NamluSensordescription='click and drag to rotatemaxAngle='0.45'/>
 94                                <!-- Mobile part of the gun (ELEVATION) -->
 95 
                              <!-- ROUTE information for NamluDondur node:  [from NamluSensor.rotation_changed to set_rotation ] [from ElevDescUpdater.newOrientation to set_rotation ] [from rotation to ElevDescUpdater.get_CurOrientation ] -->
                              <Transform DEF='NamluDondur'>
 96                                     <Transform rotation='1.0 0.0 0.0 -1.57'>
 97                                          <Group DEF='NamluGROUP'>
 98                                               <Transform rotation='0.0 0.0 1.0 1.57translation='1.0 2.2 0.2'>
 99 
                                                  <!-- Group Namlu is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
                                                  <Group DEF='Namlu'>
100                                                         <Shape DEF='InNamlu'>
101                                                              <Cylinder radius='0.08'/>
102                                                              <Appearance>
103                                                                   <Material diffuseColor='.3 .3 .3shininess='0.6'/>
104                                                              </Appearance>
105                                                         </Shape>
106                                                         <Shape DEF='HoleNamlu'>
107                                                              <Cylinder height='2.02radius='0.06'/>
108                                                              <Appearance>
109                                                                   <Material diffuseColor='.0 .0 .0shininess='0.6'/>
110                                                              </Appearance>
111                                                         </Shape>
112                                                         <Shape DEF='OutNamlu'>
113                                                              <Cylinder height='1.2radius='0.1'/>
114                                                              <Appearance>
115                                                                   <Material diffuseColor='.4 .4 .4shininess='.6'/>
116                                                              </Appearance>
117                                                         </Shape>
118 
                                                       <!-- ROUTE information for FireTransform node:  [from ChScale.value_changed to set_scale ] -->
                                                       <Transform DEF='FireTransformrotation='0.0 0.0 1.0 -3.14scale='0.0001 0.0001 0.00001translation='0.0 -1.35 0.0'>
119                                                              <Shape DEF='FireCone'>
120                                                                   <Cone bottomRadius='0.05height='0.5'/>
121                                                                   <Appearance>
122                                                                        <Material diffuseColor='0.8 0.3 0.0shininess='0.7specularColor='0.8 0.3 0.0'/>
123                                                                   </Appearance>
124                                                              </Shape>
125                                                              <Transform translation='0.0 -0.2 0.0'>
126                                                                   <Shape DEF='InnerFireCone'>
127                                                                        <Cone bottomRadius='0.051height='0.2'/>
128                                                                        <Appearance>
129                                                                             <Material diffuseColor='1.0 0.6 0.0shininess='0.7specularColor='1.0 0.6 0.0'/>
130                                                                        </Appearance>
131                                                                   </Shape>
132 
                                                                 <!-- ROUTE information for ChScale node:  [from fireTimer.fraction_changed to set_fraction ] [from value_changed to FireTransform.set_scale ] -->
                                                                 <PositionInterpolator DEF='ChScalekey='0.04 0.08 0.12 0.16 0.2 0.24 0.28 0.32 0.36 0.4 0.44 0.48 0.52 0.56 0.6 0.64 0.68 0.72 0.76 0.8 0.84 0.86 0.9 0.94 1.0keyValue='0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001 1.0 1.0 1.0 0.00001 0.00001 0.00001'/>
133 
                                                                 <!-- ROUTE information for fireTimer node:  [from FireSensor.touchTime to set_startTime ] [from fraction_changed to ChScale.set_fraction ] -->
                                                                 <TimeSensor DEF='fireTimercycleInterval='1.5'/>
134                                                              </Transform>
135                                                         </Transform>
136                                                    </Group>
137                                               </Transform>
138                                               <Transform rotation='0.0 0.0 1.0 1.57translation='1.0 2.2 -0.2'>
139                                                    <Group USE='Namlu'/>
140                                               </Transform>
141                                               <Transform rotation='0.0 0.0 1.0 1.57translation='1.0 1.8 -0.2'>
142                                                    <Group USE='Namlu'/>
143                                               </Transform>
144                                               <Transform rotation='0.0 0.0 1.0 1.57translation='1.0 1.8 0.2'>
145                                                    <Group USE='Namlu'/>
146                                               </Transform>
147                                          </Group>
148                                     </Transform>
149                                </Transform>
150                           </Transform>
151 
                         <!-- ROUTE information for TopSensor node:  [from rotation_changed to TopDondur.set_rotation ] -->
                         <CylinderSensor DEF='TopSensordescription='click and drag to rotatemaxAngle='1.7minAngle='-1.7'/>
152                           <!-- missing ROUTE for OrientationInterpolator, likely due to use of CylinderSensor -->
153 
                         <!-- ROUTE information for ButtonRotInter node:  [from PortSideTimer.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='ButtonRotInterkey='0.0 1.0keyValue='0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.7'/>
154 
                         <!-- ROUTE information for PortSideTimer node:  [from FireSensor.isActive to set_enabled ] [from fraction_changed to ButtonRotInter.set_fraction ] -->
                         <TimeSensor DEF='PortSideTimercycleInterval='3.0enabled='falseloop='true'/>
155                           <Transform rotation='0.0 0.0 1.0 0.3translation='-0.1 1.0 0.0'>
156                                <Shape>
157                                     <Cylinder height='1.5radius='0.7'/>
158                                     <Appearance USE='GunAp'/>
159                                </Shape>
160                           </Transform>
161                      </Group>
162                 </Transform>
163            </Transform>
164            <Transform rotation='0 1 0 1.57'>
165                 <Transform rotation='1 0 0 -1.4scale='1.4 1.4 1.4translation='0 0 0.5'>
166                      <Group DEF='GunControl'>
167                           <Transform translation='0 0 3'>
168                                <Group>
169 
                                   <!-- Shape MenuB is a DEF node that has 4 USE nodes: USE_1, USE_2, USE_3, USE_4 -->
                                   <Shape DEF='MenuB'>
170                                          <Box size='0.5 0.2 0.00001'/>
171                                          <Appearance>
172                                               <Material diffuseColor='0 1 0transparency='0.6'/>
173                                          </Appearance>
174                                     </Shape>
175                                     <Transform translation='-0.2 -0.05 0.005'>
176                                          <Shape>
177                                               <Text string='"FIRE"'>
178                                                    <FontStyle size='0.2spacing='0.1style='BOLD'/>
179                                               </Text>
180                                               <Appearance>
181                                                    <Material diffuseColor='1.0 0.0 0.0'/>
182                                               </Appearance>
183                                          </Shape>
184                                     </Transform>
185 
                                   <!-- ROUTE information for FireSensor node:  [from touchTime to fireTimer.set_startTime ] [from touchTime to FireSound.set_startTime ] [from isActive to PortSideTimer.set_enabled ] -->
                                   <TouchSensor DEF='FireSensordescription='touch to fire'/>
186                                </Group>
187                           </Transform>
188                           <Transform translation='-0.25 -0.2 3'>
189                                <Group>
190                                     <Shape USE='MenuB'/>
191                                     <Transform translation='-0.2 -0.05 0.005'>
192                                          <Shape>
193                                               <Text string='"LROT"'>
194                                                    <FontStyle size='0.18spacing='0.1style='BOLD'/>
195                                               </Text>
196                                               <Appearance>
197                                                    <Material diffuseColor='1.0 0.0 0.0'/>
198                                               </Appearance>
199                                          </Shape>
200                                     </Transform>
201 
                                   <!-- ROUTE information for LRotSensor node:  [from isActive to RotUpdater.set_LRotation ] -->
                                   <TouchSensor DEF='LRotSensordescription='touch to rotate left'/>
202                                </Group>
203                           </Transform>
204                           <Transform translation='0.25 -0.2 3'>
205                                <Group>
206                                     <Shape USE='MenuB'/>
207                                     <Transform translation='-0.2 -0.05 0.005'>
208                                          <Shape>
209                                               <Text string='"RROT"'>
210                                                    <FontStyle size='0.18spacing='0.1style='BOLD'/>
211                                               </Text>
212                                               <Appearance>
213                                                    <Material diffuseColor='1.0 0.0 0.0'/>
214                                               </Appearance>
215                                          </Shape>
216                                     </Transform>
217 
                                   <!-- ROUTE information for RRotSensor node:  [from isActive to RotUpdater.set_RRotation ] -->
                                   <TouchSensor DEF='RRotSensordescription='touch to rotate right'/>
218                                </Group>
219                           </Transform>
220                           <Transform translation='-0.25 -0.4 3'>
221                                <Group>
222                                     <Shape USE='MenuB'/>
223                                     <Transform translation='-0.2 -0.05 0.005'>
224                                          <Shape>
225                                               <Text string='"ELEV"'>
226                                                    <FontStyle size='0.18spacing='0.1style='BOLD'/>
227                                               </Text>
228                                               <Appearance>
229                                                    <Material diffuseColor='1.0 0.0 0.0'/>
230                                               </Appearance>
231                                          </Shape>
232                                     </Transform>
233 
                                   <!-- ROUTE information for ElevSensor node:  [from isActive to ElevDescUpdater.set_Elevation ] -->
                                   <TouchSensor DEF='ElevSensordescription='touch to elevate'/>
234                                </Group>
235                           </Transform>
236                           <Transform translation='0.25 -0.4 3'>
237                                <Group>
238                                     <Shape USE='MenuB'/>
239                                     <Transform translation='-0.2 -0.05 0.005'>
240                                          <Shape>
241                                               <Text string='"DESC"'>
242                                                    <FontStyle size='0.18spacing='0.1style='BOLD'/>
243                                               </Text>
244                                               <Appearance>
245                                                    <Material diffuseColor='1.0 0.0 0.0'/>
246                                               </Appearance>
247                                          </Shape>
248                                     </Transform>
249 
                                   <!-- ROUTE information for DescSensor node:  [from isActive to ElevDescUpdater.set_Descendance ] -->
                                   <TouchSensor DEF='DescSensordescription='touch to depress downward'/>
250                                </Group>
251                           </Transform>
252                      </Group>
253                 </Transform>
254            </Transform>
255            < ROUTE  fromNode='TopSensor' fromField='rotation_changed' toNode='TopDondur' toField='set_rotation'/>
256            < ROUTE  fromNode='NamluSensor' fromField='rotation_changed' toNode='NamluDondur' toField='set_rotation'/>
257            < ROUTE  fromNode='fireTimer' fromField='fraction_changed' toNode='ChScale' toField='set_fraction'/>
258            < ROUTE  fromNode='ChScale' fromField='value_changed' toNode='FireTransform' toField='set_scale'/>
259            < ROUTE  fromNode='FireSensor' fromField='touchTime' toNode='fireTimer' toField='set_startTime'/>
260            < ROUTE  fromNode='FireSensor' fromField='touchTime' toNode='FireSound' toField='set_startTime'/>
261            < ROUTE  fromNode='PortSideTimer' fromField='fraction_changed' toNode='ButtonRotInter' toField='set_fraction'/>
262            < ROUTE  fromNode='FireSensor' fromField='isActive' toNode='PortSideTimer' toField='set_enabled'/>
263            < ROUTE  fromNode='LRotSensor' fromField='isActive' toNode='RotUpdater' toField='set_LRotation'/>
264            < ROUTE  fromNode='RRotSensor' fromField='isActive' toNode='RotUpdater' toField='set_RRotation'/>
265            < ROUTE  fromNode='TopDondur' fromField='rotation' toNode='RotUpdater' toField='get_CurRotation'/>
266            < ROUTE  fromNode='RotUpdater' fromField='newRotation' toNode='TopDondur' toField='set_rotation'/>
267            < ROUTE  fromNode='ElevSensor' fromField='isActive' toNode='ElevDescUpdater' toField='set_Elevation'/>
268            < ROUTE  fromNode='DescSensor' fromField='isActive' toNode='ElevDescUpdater' toField='set_Descendance'/>
269            < ROUTE  fromNode='NamluDondur' fromField='rotation' toNode='ElevDescUpdater' toField='get_CurOrientation'/>
270            < ROUTE  fromNode='ElevDescUpdater' fromField='newOrientation' toNode='NamluDondur' toField='set_rotation'/>
271       </Scene>
272  </X3D>
<!--

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

<!-- to top Index for DEF nodes: ButtonRotInter, ChScale, DescSensor, Disk, ElevDescUpdater, ElevSensor, FireCone, FireSensor, FireSound, fireTimer, FireTransform, GunAp, GunBase, GunControl, GunMount, HoleNamlu, InNamlu, InnerFireCone, LRotSensor, MenuB, MountBody, MountCap, Namlu, NamluDondur, NamluGROUP, NamluSensor, OutNamlu, PortSideTimer, RotUpdater, RRotSensor, TopDondur, TopSensor
-->
X3D Tooltips element index: Appearance, AudioClip, Background, Box, Cone, Cylinder, CylinderSensor, field, FontStyle, Group, head, Material, meta, OrientationInterpolator, PositionInterpolator, ROUTE, Scene, Script, Shape, Sound, Sphere, Text, TimeSensor, TouchSensor, Transform, WorldInfo, X3D, accessType and type, XML data types, field types

Event Graph ROUTE Table entries with 16 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.

The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=4.
 
ROUTE ElevDescUpdater.newOrientation TO NamluDondur.set_rotation
DescSensor
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
ElevDescUpdater
Script
set_Descendance
SFBool
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(2)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(3)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(4)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(5)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(6)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(7)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(8)
NamluDondur
Transform
set_rotation
SFRotation

The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=4.
 
ROUTE ElevDescUpdater.newOrientation TO NamluDondur.set_rotation
ElevSensor
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
ElevDescUpdater
Script
set_Elevation
SFBool
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(2)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(3)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(4)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(5)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(6)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(7)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(8)
NamluDondur
Transform
set_rotation
SFRotation

FireSensor
TouchSensor
touchTime
SFTime

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

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

ROUTE
event to
(3)
FireTransform
Transform
set_scale
SFVec3f
FireSensor
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
FireSound
AudioClip
set_startTime
SFTime
FireSensor
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
PortSideTimer
TimeSensor
set_enabled
SFBool
then
 
 
 
PortSideTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
ButtonRotInter
OrientationInterpolator
set_fraction
SFFloat

The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=4.
 
ROUTE RotUpdater.newRotation TO TopDondur.set_rotation
LRotSensor
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
RotUpdater
Script
set_LRotation
SFBool
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(2)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(3)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(4)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(5)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(6)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(7)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(8)
TopDondur
Transform
set_rotation
SFRotation

The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=4.
 
ROUTE RotUpdater.newRotation TO TopDondur.set_rotation
RRotSensor
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
RotUpdater
Script
set_RRotation
SFBool
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(2)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(3)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(4)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(5)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(6)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(7)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(8)
TopDondur
Transform
set_rotation
SFRotation

     
The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=3.
 
ROUTE ElevDescUpdater.newOrientation TO NamluDondur.set_rotation
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(1)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(2)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(3)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(4)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(5)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(6)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(7)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(8)
ElevDescUpdater
Script
get_CurOrientation
SFRotation

     
The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=3.
 
ROUTE RotUpdater.newRotation TO TopDondur.set_rotation
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(1)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(2)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(3)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(4)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(5)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(6)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(7)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(8)
RotUpdater
Script
get_CurRotation
SFRotation

The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=4.
 
ROUTE NamluDondur.rotation TO ElevDescUpdater.get_CurOrientation
NamluSensor
CylinderSensor
rotation_changed
SFRotation

ROUTE
event to
(1)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(2)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(3)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(4)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(5)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(6)
ElevDescUpdater
Script
get_CurOrientation
SFRotation
then
 
 
 
ElevDescUpdater
Script
newOrientation
SFRotation

ROUTE
event to
(7)
NamluDondur
Transform
set_rotation
SFRotation
then
 
 
 
NamluDondur
Transform
rotation
SFRotation

ROUTE
event to
(8)
ElevDescUpdater
Script
get_CurOrientation
SFRotation

The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=4.
 
ROUTE TopDondur.rotation TO RotUpdater.get_CurRotation
TopSensor
CylinderSensor
rotation_changed
SFRotation

ROUTE
event to
(1)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(2)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(3)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(4)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(5)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(6)
RotUpdater
Script
get_CurRotation
SFRotation
then
 
 
 
RotUpdater
Script
newRotation
SFRotation

ROUTE
event to
(7)
TopDondur
Transform
set_rotation
SFRotation
then
 
 
 
TopDondur
Transform
rotation
SFRotation

ROUTE
event to
(8)
RotUpdater
Script
get_CurRotation
SFRotation

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/ShipsMilitary/FrigateYavuzTurkey/SeaZenithIndex.html -->
<!-- Version control at
https://gitlab.nps.edu/Savage/Savage/ShipsMilitary/FrigateYavuzTurkey/SeaZenith.x3d -->

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

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