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='SeaZenith.x3d'/> |
6 | <meta name='description' content='A lightweight prototype of SeaZenith point defence gun'/> |
7 | <meta name='creator' content='Ozan APAYDIN'/> |
8 | <meta name='created' content='20 August 2001'/> |
9 | <meta name='modified' content='20 October 2019'/> |
10 | <meta name='reference' content='http://www.futura-dtp.dk/Artilleri/25mmSeaZenith.htm'/> |
11 | <meta name='identifier' content='https://savage.nps.edu/Savage/ShipsMilitary/FrigateYavuzTurkey/SeaZenith.x3d'/> |
12 | <meta name='generator' content='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/> |
13 | <meta name='license' content='../../license.html'/> |
14 | </head> |
15 | <Scene> |
16 | <!-- Script Node to update the rotation of the gun. --> |
17 | <WorldInfo title='SeaZenith.x3d'/> |
18 |
<!-- ROUTE information for RotUpdater node:
[from LRotSensor.isActive to set_LRotation
]
[from RRotSensor.isActive to set_RRotation
]
[from TopDondur.rotation to get_CurRotation
]
[from newRotation to TopDondur.set_rotation
]
-->
<Script DEF='RotUpdater'> |
19 | <!-- Variables and methods of the RotUpdater script --> |
20 | <field name='set_LRotation' type='SFBool' accessType='inputOnly'/> |
21 | <field name='set_RRotation' type='SFBool' accessType='inputOnly'/> |
22 | <field name='get_CurRotation' type='SFRotation' accessType='inputOnly'/> |
23 | <field name='isLeft' type='SFBool' value='true' accessType='initializeOnly'/> |
24 | <field name='isRight' type='SFBool' value='false' accessType='initializeOnly'/> |
25 | <field name='CurRot' type='SFRotation' value='0 1 0 0' accessType='initializeOnly'/> |
26 | <field name='newRotation' type='SFRotation' accessType='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 |
<!-- ROUTE information for ElevDescUpdater node:
[from ElevSensor.isActive to set_Elevation
]
[from DescSensor.isActive to set_Descendance
]
[from NamluDondur.rotation to get_CurOrientation
]
[from newOrientation to NamluDondur.set_rotation
]
-->
<Script DEF='ElevDescUpdater'> |
31 | <!-- Variables and methods of the ElevDescUpdater script script --> |
32 | <field name='set_Elevation' type='SFBool' accessType='inputOnly'/> |
33 | <field name='set_Descendance' type='SFBool' accessType='inputOnly'/> |
34 | <field name='get_CurOrientation' type='SFRotation' accessType='inputOnly'/> |
35 | <field name='isUp' type='SFBool' value='true' accessType='initializeOnly'/> |
36 | <field name='isDown' type='SFBool' value='false' accessType='initializeOnly'/> |
37 | <field name='CurOr' type='SFRotation' value='0 1 0 0' accessType='initializeOnly'/> |
38 | <field name='newOrientation' type='SFRotation' accessType='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='35' maxFront='35'> |
45 |
<!-- ROUTE information for FireSound node:
[from FireSensor.touchTime to set_startTime
]
-->
<AudioClip DEF='FireSound' description='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.14' scale='1.2 1.2 1.2' translation='0.0 -1.5 0.0'> |
49 | <Group DEF='GunBase'> |
50 | <Shape> |
51 | <Cylinder height='1.0'/> |
52 | |
53 | <Material diffuseColor='.7 .7 .8' shininess='.4'/> |
54 | </Appearance> |
55 | </Shape> |
56 | <Transform translation='0.0 0.4 0.0'> |
57 | <Shape DEF='Disk'> |
58 | <Cylinder height='0.1' radius='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.3' scale='1.1 1.0 1.5' translation='-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.0' translation='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='NamluSensor' description='click and drag to rotate' maxAngle='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.57' translation='1.0 2.2 0.2'> |
99 | |
100 | <Shape DEF='InNamlu'> |
101 | <Cylinder radius='0.08'/> |
102 | <Appearance> |
103 | <Material diffuseColor='.3 .3 .3' shininess='0.6'/> |
104 | </Appearance> |
105 | </Shape> |
106 | <Shape DEF='HoleNamlu'> |
107 | <Cylinder height='2.02' radius='0.06'/> |
108 | <Appearance> |
109 | <Material diffuseColor='.0 .0 .0' shininess='0.6'/> |
110 | </Appearance> |
111 | </Shape> |
112 | <Shape DEF='OutNamlu'> |
113 | <Cylinder height='1.2' radius='0.1'/> |
114 | <Appearance> |
115 | <Material diffuseColor='.4 .4 .4' shininess='.6'/> |
116 | </Appearance> |
117 | </Shape> |
118 |
<!-- ROUTE information for FireTransform node:
[from ChScale.value_changed to set_scale
]
-->
<Transform DEF='FireTransform' rotation='0.0 0.0 1.0 -3.14' scale='0.0001 0.0001 0.00001' translation='0.0 -1.35 0.0'> |
119 | <Shape DEF='FireCone'> |
120 | <Cone bottomRadius='0.05' height='0.5'/> |
121 | <Appearance> |
122 | <Material diffuseColor='0.8 0.3 0.0' shininess='0.7' specularColor='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.051' height='0.2'/> |
128 | <Appearance> |
129 | <Material diffuseColor='1.0 0.6 0.0' shininess='0.7' specularColor='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='ChScale' key='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.0' keyValue='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='fireTimer' cycleInterval='1.5'/> |
134 | </Transform> |
135 | </Transform> |
136 | </Group> |
137 | </Transform> |
138 | <Transform rotation='0.0 0.0 1.0 1.57' translation='1.0 2.2 -0.2'> |
139 | <Group USE='Namlu'/> |
140 | </Transform> |
141 | <Transform rotation='0.0 0.0 1.0 1.57' translation='1.0 1.8 -0.2'> |
142 | <Group USE='Namlu'/> |
143 | </Transform> |
144 | <Transform rotation='0.0 0.0 1.0 1.57' translation='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='TopSensor' description='click and drag to rotate' maxAngle='1.7' minAngle='-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='ButtonRotInter' key='0.0 1.0' keyValue='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='PortSideTimer' cycleInterval='3.0' enabled='false' loop='true'/> |
155 | <Transform rotation='0.0 0.0 1.0 0.3' translation='-0.1 1.0 0.0'> |
156 | <Shape> |
157 | <Cylinder height='1.5' radius='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.4' scale='1.4 1.4 1.4' translation='0 0 0.5'> |
166 | <Group DEF='GunControl'> |
167 | <Transform translation='0 0 3'> |
168 | <Group> |
169 | |
170 | <Box size='0.5 0.2 0.00001'/> |
171 | <Appearance> |
172 | <Material diffuseColor='0 1 0' transparency='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.2' spacing='0.1' style='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='FireSensor' description='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.18' spacing='0.1' style='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='LRotSensor' description='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.18' spacing='0.1' style='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='RRotSensor' description='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.18' spacing='0.1' style='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='ElevSensor' description='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.18' spacing='0.1' style='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='DescSensor' description='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 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 |
ElevDescUpdater
Script set_Descendance SFBool |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
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 |
ElevDescUpdater
Script set_Elevation SFBool |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
FireSensor
TouchSensor touchTime SFTime |
fireTimer
TimeSensor set_startTime SFTime |
then
|
fireTimer
TimeSensor fraction_changed SFFloat |
ChScale
PositionInterpolator set_fraction SFFloat |
then
|
ChScale
PositionInterpolator value_changed SFVec3f |
FireTransform
Transform set_scale SFVec3f |
FireSensor
TouchSensor touchTime SFTime |
FireSound
AudioClip set_startTime SFTime |
|||||
FireSensor
TouchSensor isActive SFBool |
PortSideTimer
TimeSensor set_enabled SFBool |
then
|
PortSideTimer
TimeSensor fraction_changed SFFloat |
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 |
RotUpdater
Script set_LRotation SFBool |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
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 |
RotUpdater
Script set_RRotation SFBool |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
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 |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
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 |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
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 |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
ElevDescUpdater
Script get_CurOrientation SFRotation |
then
|
ElevDescUpdater
Script newOrientation SFRotation |
NamluDondur
Transform set_rotation SFRotation |
then
|
NamluDondur
Transform rotation SFRotation |
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 |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
then
|
RotUpdater
Script newRotation SFRotation |
TopDondur
Transform set_rotation SFRotation |
then
|
TopDondur
Transform rotation SFRotation |
RotUpdater
Script get_CurRotation SFRotation |
<!--
Color legend: X3D terminology
<X3dNode
DEF='idName' field='value'/>
matches XML terminology
<XmlElement
DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement)
(Grey background inside box: inserted documentation)
(Magenta background: X3D Extensibility)
-->
<!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->