X3D Model Documentation: RadioCommunicationsPrototypes.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            <component level='1name='DIS'/>
  6            <meta name='titlecontent='RadioCommunicationsPrototypes.x3d'/>
  7            <meta name='creatorcontent='Don Brutzman and Dave Laflam'/>
  8            <meta name='createdcontent='7 December 2000'/>
  9            <meta name='modifiedcontent='20 October 2019'/>
 10            <meta name=' warning content=' under development. Need to fix url values in X3dToVrml97.xslt translation signatures, and check Savage CommunicationsAndSensors DIS examples. '/>
 11            <meta name='descriptioncontent='Prototype definitions for ReceiverPdu SignalPdu and TransmitterPdu, all of which share share RadioCommunicationsPduScriptNode class'/>
 12            <meta name='referencecontent='http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPrototypes.x3d'/>
 13            <meta name='identifiercontent='https://www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/RadioCommunicationsPrototypes.x3d'/>
 14            <meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
 15            <meta name='licensecontent='../license.html'/>
 16       </head>
<!--

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

<!-- to top Index for DEF nodes: FONT1, FONT2, FONT3, ReceiverOutput1, ReceiverOutputAssembler1, ReceiverPduGeometrySwitch, ReceiverPduReadIntervalClock, ReceiverPduScriptNode, ReceiverPduWriteIntervalClock, SignalOutput1, SignalOutput2, SignalOutputAssembler1, SignalOutputAssembler2, SignalPduGeometrySwitch, SignalPduReadIntervalClock, SignalPduScriptNode, SignalPduWriteIntervalClock, TransmitterOutput1, TransmitterOutput2, TransmitterOutput3, TransmitterOutputAssembler1, TransmitterOutputAssembler2, TransmitterOutputAssembler3, TransmitterPduGeometrySwitch, TransmitterPduReadIntervalClock, TransmitterPduScriptNode, TransmitterPduWriteIntervalClock, YellowAppearance2, YellowAppearance3

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, Viewpoint_3

Index for ProtoDeclare definitions: ReceiverPdu, SignalPdu, TransmitterPdu
-->
 17       <Scene>
 18            <!-- ============================================================ -->
 19            <WorldInfo title='RadioCommunicationsPrototypes.x3d'/>
 20            <ProtoDeclare name='ReceiverPdu'>
 21                 <ProtoInterface>
 22                      <field name='whichGeometrytype='SFInt32value='0accessType='inputOutput'
                     appinfo='set whichGeometry to -1 for no geometry 0 for text trace 1 for default geometry'/>
 23                      <field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'
                     appinfo='Bounding box center: position offset from origin of local coordinate system.'/>
 24                      <field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'
                     appinfo='Bounding box size: automatically calculated can be specified as an optimization or constraint.'/>
 25                      <!-- Initialization fields -->
 26                      <field name='readIntervaltype='SFTimevalue='0.1accessType='initializeOnly'/>
 27                      <field name='writeIntervaltype='SFTimevalue='1.0accessType='initializeOnly'/>
 28                      <field name='siteIDtype='SFInt32value='14accessType='initializeOnly'/>
 29                      <field name='applicationIDtype='SFInt32value='17accessType='initializeOnly'/>
 30                      <field name='entityIDtype='SFInt32value='9accessType='initializeOnly'/>
 31                      <field name='addresstype='SFStringvalue='224.2.181.145accessType='initializeOnly'/>
 32                      <field name='porttype='SFInt32value='62040accessType='initializeOnly'/>
 33                      <field name='multicastRelayHosttype='SFStringvalue='devo.cs.nps.navy.milaccessType='initializeOnly'/>
 34                      <field name='multicastRelayPorttype='SFInt32value='8010accessType='initializeOnly'/>
 35                      <field name='networkModetype='SFStringvalue='standAloneaccessType='inputOutput'
                     appinfo='networkMode:&#10;standAlone (ignore network but still respond to local events)&#10;networkReader (listen to network as ghost entity)&#10;networkWriter (output to network as master entity at writeInterval)'/>
 36                      <field name='isStandAlonetype='SFBoolaccessType='outputOnly'
                     appinfo='Whether networkMode standAlone (ignore network but still respond to local events) is true/false'/>
 37                      <field name='isMastertype='SFBoolaccessType='outputOnly'
                     appinfo="Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false"/>
 38                      <field name='isRemotetype='SFBoolaccessType='outputOnly'
                     appinfo="Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false"/>
 39                      <field name='rtpHeaderExpectedtype='SFBoolvalue='falseaccessType='initializeOnly'/>
 40                      <field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'
                     appinfo='whether RTP header was found prepended to DIS packet'/>
 41                      <field name='tracetype='SFBoolvalue='falseaccessType='initializeOnly'/>
 42                      <!-- Generic events -->
 43                      <field name='activetype='SFBoolaccessType='outputOnly'/>
 44                      <field name='timestamptype='SFTimeaccessType='outputOnly'/>
 45                      <!-- RadioCommunicationsFamily events -->
 46                      <field name='radioIDtype='SFInt32accessType='outputOnly'/>
 47                      <!-- ReceiverPdu fields -->
 48                      <field name='receivedPowertype='SFFloataccessType='outputOnly'/>
 49                      <field name='receiverStatetype='SFInt32accessType='outputOnly'/>
 50                      <field name='transmitterSiteIDtype='SFInt32accessType='outputOnly'/>
 51                      <field name='transmitterApplicationIDtype='SFInt32accessType='outputOnly'/>
 52                      <field name='transmitterEntityIDtype='SFInt32accessType='outputOnly'/>
 53                      <field name='transmitterRadioIDtype='SFInt32accessType='outputOnly'/>
 54                 </ProtoInterface>
 55                 <ProtoBody>
 56                      <!-- First node inside a PrototypeDeclaration is the node type of the ProtoInstance -->
 57                      <Switch DEF='ReceiverPduGeometrySwitchwhichChoice='-1'>
 58                           <IS>
 59                                <connect nodeField='whichChoiceprotoField='whichGeometry'/>
 60                           </IS>
 61                           <!-- whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry -->
 62                           <Group>
 63                                <Viewpoint description='Receiver Pdu Observerposition='0 0 15'/>
 64                                <Group>
 65                                     <Transform translation='0 6 0'>
 66                                          <Shape>
 67                                               <Text string='"Open Java Console to see PDU trace messages" "Netscape..Communicator..Tools..Java Console"'>
 68 
                                                  <!-- FontStyle FONT1 is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                                                  <FontStyle DEF='FONT1justify='"MIDDLE" "BEGIN"size='0.5'/>
 69                                               </Text>
 70                                               <Appearance>
 71                                                    <Material diffuseColor='0 0.4 0.8'/>
 72                                               </Appearance>
 73                                          </Shape>
 74                                     </Transform>
 75                                     <Transform translation='0 4.75 0'>
 76                                          <Shape>
 77                                               <Text string='"Receiver PDU values"'>
 78                                                    <FontStyle USE='FONT1'/>
 79                                               </Text>
 80                                               <Appearance>
 81                                                    <Material diffuseColor='0 0.8 0.4'/>
 82                                               </Appearance>
 83                                          </Shape>
 84                                     </Transform>
 85                                     <Transform translation='0 4 0'>
 86                                          <Shape>
 87 
                                             <!-- ROUTE information for ReceiverOutput1 node:  [from ReceiverOutputAssembler1.messageResult to string ] -->
                                             <Text DEF='ReceiverOutput1string='"Receiver output uninitialized"'>
 88                                                    <FontStyle USE='FONT1'/>
 89                                               </Text>
 90                                               <Appearance>
 91                                                    <Material diffuseColor='0.8 0.8 0'/>
 92                                               </Appearance>
 93                                          </Shape>
 94                                     </Transform>
 95                                </Group>
 96 
 97                                     <!-- surprising limit on MFString: 10 strings -->
 98                                     <field name='messageResulttype='MFStringaccessType='outputOnly'/>
 99                                     <field name='activetype='SFBoolaccessType='inputOnly'/>
100                                     <field name='timestamptype='SFTimeaccessType='inputOnly'/>
101                                     <field name='isRtpHeaderHeardtype='SFBoolaccessType='inputOnly'/>
102                                     <field name='radioIDtype='SFInt32accessType='inputOnly'/>
103                                     <field name='receivedPowertype='SFFloataccessType='inputOnly'/>
104                                     <field name='receiverStatetype='SFInt32accessType='inputOnly'/>
105                                     <field name='transmitterSiteIDtype='SFInt32accessType='inputOnly'/>
106                                     <field name='transmitterApplicationIDtype='SFInt32accessType='inputOnly'/>
107                                     <field name='transmitterEntityIDtype='SFInt32accessType='inputOnly'/>
108                                     <field name='transmitterRadioIDtype='SFInt32accessType='inputOnly'/>
  <![CDATA[
              
ecmascript:

function initialize ()
{
	value='awaiting PDU';
	messageResult  [0] = 'active=' + value;
	messageResult  [1] = 'timestamp=' + value;
	messageResult  [2] = 'isRtpHeaderHeard=' + value;
	messageResult  [3] = 'radioID=' + value;
	messageResult  [4] = 'receivedPower=' + value;
	messageResult  [5] = 'receiverState=' + value;
	messageResult  [6] = 'transmitterSiteID=' + value;
	messageResult  [7] = 'transmitterApplicationID=' + value;
	messageResult  [8] = 'transmitterEntityID=' + value;
	messageResult  [9] = 'transmitterRadioID=' + value;
}
function active 			(value, ts) { messageResult [0] = 'active=' + value; }
function timestamp			(value, ts) { messageResult [1] = 'timestamp=' + value; }
function isRtpHeaderHeard		(value, ts) { messageResult [2] = 'isRtpHeaderHeard=' + value; }
function radioID			(value, ts) { messageResult [3] = 'radioID=' + value; }
function receivedPower			(value, ts) { messageResult [4] = 'receiverPower=' + value; }
function receiverState			(value, ts) { messageResult [5] = 'receiverState=' + value; }
function transmitterSiteID		(value, ts) { messageResult [6] = 'transmitterSiteID=' + value; }
function transmitterApplicationID	(value, ts) { messageResult [7] = 'transmitterApplicationID=' + value; }
function transmitterEntityID		(value, ts) { messageResult [8] = 'transmitterEntityID=' + value; }
function transmitterRadioID 		(value, ts) { messageResult [9] = 'transmitterRadioID=' + value; }

            
]]>
110                                </Script>
111                           </Group>
112                      </Switch>
113                      <!-- The Script follows the Switch, since the first node in the file determines the node type of this prototype -->
114                      <!-- Fields in the Script are directly mapped to the PrototypeDeclare field-tag interfaces by using the IS construct -->
115                      <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) -->
116 
117                           <!-- Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu -->
118                           <field name='radioPduTypetype='SFStringvalue='ReceiverPduaccessType='initializeOnly'/>
119                           <!-- Initialization fields -->
120                           <field name='readIntervaltype='SFTimeaccessType='initializeOnly'/>
121                           <field name='writeIntervaltype='SFTimeaccessType='initializeOnly'/>
122                           <field name='siteIDtype='SFInt32accessType='initializeOnly'/>
123                           <field name='applicationIDtype='SFInt32accessType='initializeOnly'/>
124                           <field name='entityIDtype='SFInt32accessType='initializeOnly'/>
125                           <field name='addresstype='SFStringaccessType='initializeOnly'/>
126                           <field name='porttype='SFInt32accessType='initializeOnly'/>
127                           <field name='multicastRelayHosttype='SFStringaccessType='initializeOnly'/>
128                           <field name='multicastRelayPorttype='SFInt32accessType='initializeOnly'/>
129                           <field name='rtpHeaderExpectedtype='SFBoolaccessType='initializeOnly'/>
130                           <field name='tracetype='SFBoolaccessType='initializeOnly'/>
131                           <!-- Generic events -->
132                           <field name='updatetype='SFTimeaccessType='inputOnly'
                          appinfo='update is triggered by local TimeSensor clocks to allow regular read/write'/>
133                           <field name='activetype='SFBoolaccessType='outputOnly'/>
134                           <field name='timestamptype='SFTimeaccessType='outputOnly'/>
135                           <field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'/>
136                           <!-- RadioCommunicationsFamily events -->
137                           <field name='radioIDtype='SFInt32accessType='outputOnly'/>
138                           <!-- SignalPdu fields -->
139                           <field name='receivedPowertype='SFFloataccessType='outputOnly'/>
140                           <field name='receiverStatetype='SFInt32accessType='outputOnly'/>
141                           <field name='transmitterSiteIDtype='SFInt32accessType='outputOnly'/>
142                           <field name='transmitterApplicationIDtype='SFInt32accessType='outputOnly'/>
143                           <field name='transmitterEntityIDtype='SFInt32accessType='outputOnly'/>
144                           <field name='transmitterRadioIDtype='SFInt32accessType='outputOnly'/>
145                           <IS>
146                                <connect nodeField='readIntervalprotoField='readInterval'/>
147                                <connect nodeField='writeIntervalprotoField='writeInterval'/>
148                                <connect nodeField='siteIDprotoField='siteID'/>
149                                <connect nodeField='applicationIDprotoField='applicationID'/>
150                                <connect nodeField='entityIDprotoField='entityID'/>
151                                <connect nodeField='addressprotoField='address'/>
152                                <connect nodeField='portprotoField='port'/>
153                                <connect nodeField='multicastRelayHostprotoField='multicastRelayHost'/>
154                                <connect nodeField='multicastRelayPortprotoField='multicastRelayPort'/>
155                                <connect nodeField='rtpHeaderExpectedprotoField='rtpHeaderExpected'/>
156                                <connect nodeField='traceprotoField='trace'/>
157                                <connect nodeField='activeprotoField='active'/>
158                                <connect nodeField='timestampprotoField='timestamp'/>
159                                <connect nodeField='isRtpHeaderHeardprotoField='isRtpHeaderHeard'/>
160                                <connect nodeField='radioIDprotoField='radioID'/>
161                                <connect nodeField='receivedPowerprotoField='receivedPower'/>
162                                <connect nodeField='receiverStateprotoField='receiverState'/>
163                                <connect nodeField='transmitterSiteIDprotoField='transmitterSiteID'/>
164                                <connect nodeField='transmitterApplicationIDprotoField='transmitterApplicationID'/>
165                                <connect nodeField='transmitterEntityIDprotoField='transmitterEntityID'/>
166                                <connect nodeField='transmitterRadioIDprotoField='transmitterRadioID'/>
167                           </IS>
168                      </Script>
169                      <!-- Clocks stimulate the processEvents() method in the Script code, resulting in DIS PDU reads/writes. The 'update' eventIn is implicit (i.e. no corresponding Java method is needed). -->
170 
                    <!-- ROUTE information for ReceiverPduReadIntervalClock node:  [from cycleTime to ReceiverPduScriptNode.update ] -->
                    <TimeSensor DEF='ReceiverPduReadIntervalClockloop='true'/>
171 
                    <!-- ROUTE information for ReceiverPduWriteIntervalClock node:  [from cycleTime to ReceiverPduScriptNode.update ] -->
                    <TimeSensor DEF='ReceiverPduWriteIntervalClockenabled='falseloop='true'/>
172                      < ROUTE  fromNode='ReceiverPduReadIntervalClock' fromField='cycleTime' toNode='ReceiverPduScriptNode' toField='update'/>
173                      < ROUTE  fromNode='ReceiverPduWriteIntervalClock' fromField='cycleTime' toNode='ReceiverPduScriptNode' toField='update'/>
174                      <!-- These ROUTEs connect the PDU Script node to the geometryChoice=0 text output -->
175                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='active' toNode='ReceiverOutputAssembler1' toField='active'/>
176                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='timestamp' toNode='ReceiverOutputAssembler1' toField='timestamp'/>
177                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='isRtpHeaderHeard' toNode='ReceiverOutputAssembler1' toField='isRtpHeaderHeard'/>
178                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='radioID' toNode='ReceiverOutputAssembler1' toField='radioID'/>
179                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='receivedPower' toNode='ReceiverOutputAssembler1' toField='receivedPower'/>
180                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='receiverState' toNode='ReceiverOutputAssembler1' toField='receiverState'/>
181                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='transmitterSiteID' toNode='ReceiverOutputAssembler1' toField='transmitterSiteID'/>
182                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='transmitterApplicationID' toNode='ReceiverOutputAssembler1' toField='transmitterApplicationID'/>
183                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='transmitterEntityID' toNode='ReceiverOutputAssembler1' toField='transmitterEntityID'/>
184                      < ROUTE  fromNode='ReceiverPduScriptNode' fromField='transmitterRadioID' toNode='ReceiverOutputAssembler1' toField='transmitterRadioID'/>
185                      < ROUTE  fromNode='ReceiverOutputAssembler1' fromField='messageResult' toNode='ReceiverOutput1' toField='string'/>
186                      <!-- ROUTEs for further geometry representations go here -->
187                 </ProtoBody>
188            </ProtoDeclare>
189            <!-- ============================================================ -->
190            <ProtoDeclare name='SignalPdu'>
191                 <ProtoInterface>
192                      <!-- set whichGeometry to -1 for no geometry, 0 for text trace, 1 for default geometry -->
193                      <field name='whichGeometrytype='SFInt32value='0accessType='inputOutput'/>
194                      <field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'
                     appinfo='Bounding box center: position offset from origin of local coordinate system.'/>
195                      <field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'
                     appinfo='Bounding box size: automatically calculated can be specified as an optimization or constraint.'/>
196                      <!-- Initialization fields -->
197                      <field name='readIntervaltype='SFTimevalue='0.1accessType='initializeOnly'/>
198                      <field name='writeIntervaltype='SFTimevalue='1.0accessType='initializeOnly'/>
199                      <field name='siteIDtype='SFInt32value='14accessType='initializeOnly'/>
200                      <field name='applicationIDtype='SFInt32value='17accessType='initializeOnly'/>
201                      <field name='entityIDtype='SFInt32value='9accessType='initializeOnly'/>
202                      <field name='addresstype='SFStringvalue='224.2.181.145accessType='initializeOnly'/>
203                      <field name='porttype='SFInt32value='62040accessType='initializeOnly'/>
204                      <field name='multicastRelayHosttype='SFStringvalue='devo.cs.nps.navy.milaccessType='initializeOnly'/>
205                      <field name='multicastRelayPorttype='SFInt32value='8010accessType='initializeOnly'/>
206                      <field name='networkModetype='SFStringvalue='standAloneaccessType='inputOutput'
                     appinfo='networkMode:&#10;standAlone (ignore network but still respond to local events)&#10;networkReader (listen to network as ghost entity)&#10;networkWriter (output to network as master entity at writeInterval)'/>
207                      <field name='isStandAlonetype='SFBoolaccessType='outputOnly'
                     appinfo='Whether networkMode standAlone (ignore network but still respond to local events) is true/false'/>
208                      <field name='isMastertype='SFBoolaccessType='outputOnly'
                     appinfo="Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false"/>
209                      <field name='isRemotetype='SFBoolaccessType='outputOnly'
                     appinfo="Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false"/>
210                      <field name='rtpHeaderExpectedtype='SFBoolvalue='falseaccessType='initializeOnly'/>
211                      <field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'
                     appinfo='whether RTP header was found prepended to DIS packet'/>
212                      <field name='tracetype='SFBoolvalue='falseaccessType='initializeOnly'/>
213                      <!-- Generic events -->
214                      <field name='activetype='SFBoolaccessType='outputOnly'/>
215                      <field name='timestamptype='SFTimeaccessType='outputOnly'/>
216                      <!-- RadioCommunicationsFamily events -->
217                      <field name='radioIDtype='SFInt32accessType='outputOnly'/>
218                      <!-- SignalPdu fields -->
219                      <field name='encodingSchemetype='SFInt32accessType='outputOnly'/>
220                      <field name='tdlTypetype='SFInt32accessType='outputOnly'/>
221                      <field name='sampleRatetype='SFInt32accessType='outputOnly'/>
222                      <field name='samplestype='SFInt32accessType='outputOnly'/>
223                      <field name='dataLengthtype='SFInt32accessType='outputOnly'/>
224                      <field name='data00type='SFInt32accessType='outputOnly'/>
225                      <field name='data01type='SFInt32accessType='outputOnly'/>
226                      <field name='data02type='SFInt32accessType='outputOnly'/>
227                      <field name='data03type='SFInt32accessType='outputOnly'/>
228                      <field name='data04type='SFInt32accessType='outputOnly'/>
229                      <field name='data05type='SFInt32accessType='outputOnly'/>
230                      <field name='data06type='SFInt32accessType='outputOnly'/>
231                      <field name='data07type='SFInt32accessType='outputOnly'/>
232                      <field name='data08type='SFInt32accessType='outputOnly'/>
233                      <field name='data09type='SFInt32accessType='outputOnly'/>
234                      <field name='data10type='SFInt32accessType='outputOnly'/>
235                 </ProtoInterface>
236                 <ProtoBody>
237                      <!-- First node inside a PrototypeDeclaration is the node type of the ProtoInstance -->
238                      <Switch DEF='SignalPduGeometrySwitchwhichChoice='-1'>
239                           <IS>
240                                <connect nodeField='whichChoiceprotoField='whichGeometry'/>
241                           </IS>
242                           <!-- whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry -->
243                           <Group>
244                                <Viewpoint description='Signal Pdu Observerposition='0 0 15'/>
245                                <Group>
246                                     <Transform translation='0 6 0'>
247                                          <Shape>
248                                               <Text string='"Open Java Console to see PDU trace messages" "Netscape..Communicator..Tools..Java Console"'>
249 
                                                  <!-- FontStyle FONT2 is a DEF node that has 3 USE nodes: USE_1, USE_2, USE_3 -->
                                                  <FontStyle DEF='FONT2justify='"MIDDLE" "BEGIN"size='0.5'/>
250                                               </Text>
251                                               <Appearance>
252                                                    <Material diffuseColor='0 0.4 0.8'/>
253                                               </Appearance>
254                                          </Shape>
255                                     </Transform>
256                                     <Transform translation='0 4.75 0'>
257                                          <Shape>
258                                               <Text string='"Signal PDU values"'>
259                                                    <FontStyle USE='FONT2'/>
260                                               </Text>
261                                               <Appearance>
262                                                    <Material diffuseColor='0 0.8 0.4'/>
263                                               </Appearance>
264                                          </Shape>
265                                     </Transform>
266                                     <Transform translation='0 4 0'>
267                                          <Shape>
268 
                                             <!-- ROUTE information for SignalOutput1 node:  [from SignalOutputAssembler1.messageResult to string ] -->
                                             <Text DEF='SignalOutput1string='"Signal Output1 unset"'>
269                                                    <FontStyle USE='FONT2'/>
270                                               </Text>
271 
                                             <!-- Appearance YellowAppearance2 is a DEF node that has 1 USE node: USE_1 -->
                                             <Appearance DEF='YellowAppearance2'>
272                                                    <Material diffuseColor='0.8 0.8 0'/>
273                                               </Appearance>
274                                          </Shape>
275                                     </Transform>
276                                     <Transform translation='0 -1 0'>
277                                          <Shape>
278 
                                             <!-- ROUTE information for SignalOutput2 node:  [from SignalOutputAssembler2.messageResult to string ] -->
                                             <Text DEF='SignalOutput2string='"Signal Output2 unset"'>
279                                                    <FontStyle USE='FONT2'/>
280                                               </Text>
281                                               <Appearance USE='YellowAppearance2'/>
282                                          </Shape>
283                                     </Transform>
284                                </Group>
285 
286                                     <!-- surprising limit on MFString: 10 strings -->
287                                     <field name='messageResulttype='MFStringaccessType='outputOnly'/>
288                                     <field name='activetype='SFBoolaccessType='inputOnly'/>
289                                     <field name='timestamptype='SFTimeaccessType='inputOnly'/>
290                                     <field name='isRtpHeaderHeardtype='SFBoolaccessType='inputOnly'/>
291                                     <field name='radioIDtype='SFInt32accessType='inputOnly'/>
292                                     <field name='encodingSchemetype='SFInt32accessType='inputOnly'/>
293                                     <field name='tdlTypetype='SFInt32accessType='inputOnly'/>
294                                     <field name='sampleRatetype='SFInt32accessType='inputOnly'/>
295                                     <field name='samplestype='SFInt32accessType='inputOnly'/>
296                                     <field name='dataLengthtype='SFInt32accessType='inputOnly'/>
297                                     <field name='data00type='SFInt32accessType='inputOnly'/>
  <![CDATA[
              
ecmascript:

function initialize ()
{
	value='awaiting PDU';
	messageResult  [0] = 'active=' + value;
	messageResult  [1] = 'timestamp=' + value;
	messageResult  [2] = 'isRtpHeaderHeard=' + value;
	messageResult  [3] = 'radioID=' + value;
	messageResult  [4] = 'encodingScheme=' + value;
	messageResult  [5] = 'tdlType=' + value;
	messageResult  [6] = 'sampleRate=' + value;
	messageResult  [7] = 'samples=' + value;
	messageResult  [8] = 'dataLength=' + value;
	messageResult  [9] = 'data00=' + value;
}
function active 	(value, ts) { messageResult [0] = 'active=' + value; }
function timestamp	(value, ts) { messageResult [1] = 'timestamp=' + value; }
function isRtpHeaderHeard	(value, ts) { messageResult [2] = 'isRtpHeaderHeard=' + value; }
function radioID	(value, ts) { messageResult [3] = 'radioID=' + value; }
function encodingScheme	(value, ts) { messageResult [4] = 'encodingScheme=' + value; }
function tdlType	(value, ts) { messageResult [5] = 'tdlType=' + value; }
function sampleRate	(value, ts) { messageResult [6] = 'sampleRate=' + value; }
function samples	(value, ts) { messageResult [7] = 'samples=' + value; }
function dataLength	(value, ts) { messageResult [8] = 'dataLength=' + value; }
function data00  	(value, ts) { messageResult [9] = 'data00=' + value; }

            
]]>
299                                </Script>
300 
301                                     <field name='messageResulttype='MFStringaccessType='outputOnly'/>
302                                     <field name='data01type='SFInt32accessType='inputOnly'/>
303                                     <field name='data02type='SFInt32accessType='inputOnly'/>
304                                     <field name='data03type='SFInt32accessType='inputOnly'/>
305                                     <field name='data04type='SFInt32accessType='inputOnly'/>
306                                     <field name='data05type='SFInt32accessType='inputOnly'/>
307                                     <field name='data06type='SFInt32accessType='inputOnly'/>
308                                     <field name='data07type='SFInt32accessType='inputOnly'/>
309                                     <field name='data08type='SFInt32accessType='inputOnly'/>
310                                     <field name='data09type='SFInt32accessType='inputOnly'/>
311                                     <field name='data10type='SFInt32accessType='inputOnly'/>
  <![CDATA[
              
ecmascript:

function initialize ()
{
	messageResult [0] = 'data01=' + value;
	messageResult [1] = 'data02=' + value;
	messageResult [2] = 'data03=' + value;
	messageResult [3] = 'data04=' + value;
	messageResult [4] = 'data05=' + value;
	messageResult [5] = 'data06=' + value;
	messageResult [6] = 'data07=' + value;
	messageResult [7] = 'data08=' + value;
	messageResult [8] = 'data09=' + value;
	messageResult [9] = 'data10=' + value;
}
function data01 	(value, ts) { messageResult [0] = 'data01=' + value; }
function data02 	(value, ts) { messageResult [1] = 'data02=' + value; }
function data03 	(value, ts) { messageResult [2] = 'data03=' + value; }
function data04 	(value, ts) { messageResult [3] = 'data04=' + value; }
function data05 	(value, ts) { messageResult [4] = 'data05=' + value; }
function data06 	(value, ts) { messageResult [5] = 'data06=' + value; }
function data07 	(value, ts) { messageResult [6] = 'data07=' + value; }
function data08 	(value, ts) { messageResult [7] = 'data08=' + value; }
function data09 	(value, ts) { messageResult [8] = 'data09=' + value; }
function data10 	(value, ts) { messageResult [9] = 'data10=' + value; }

            
]]>
313                                </Script>
314                           </Group>
315                      </Switch>
316                      <!-- The Script follows the Switch, since the first node in the file determines the node type of this prototype -->
317                      <!-- Fields in the Script are directly mapped to the PrototypeDeclare field-tag interfaces by using the IS construct -->
318                      <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) -->
319 
                    <!-- ROUTE information for SignalPduScriptNode node:  [from SignalPduReadIntervalClock.cycleTime to update ] [from SignalPduWriteIntervalClock.cycleTime to update ] [from active to SignalOutputAssembler1.active ] [from timestamp to SignalOutputAssembler1.timestamp ] [from isRtpHeaderHeard to SignalOutputAssembler1.isRtpHeaderHeard ] [from radioID to SignalOutputAssembler1.radioID ] [from encodingScheme to SignalOutputAssembler1.encodingScheme ] [from tdlType to SignalOutputAssembler1.tdlType ] [from sampleRate to SignalOutputAssembler1.sampleRate ] [from samples to SignalOutputAssembler1.samples ] [from dataLength to SignalOutputAssembler1.dataLength ] [from data00 to SignalOutputAssembler1.data00 ] [from data01 to SignalOutputAssembler2.data01 ] [from data02 to SignalOutputAssembler2.data02 ] [from data03 to SignalOutputAssembler2.data03 ] [from data04 to SignalOutputAssembler2.data04 ] [from data05 to SignalOutputAssembler2.data05 ] [from data06 to SignalOutputAssembler2.data06 ] [from data07 to SignalOutputAssembler2.data07 ] [from data08 to SignalOutputAssembler2.data08 ] [from data09 to SignalOutputAssembler2.data09 ] [from data10 to SignalOutputAssembler2.data10 ] -->
                    <Script DEF='SignalPduScriptNodemustEvaluate='true'   url=' "RadioCommunicationsPduScriptNode.class" "http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPduScriptNode.class" '>
320                           <!-- Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu -->
321                           <field name='radioPduTypetype='SFStringvalue='SignalPduaccessType='initializeOnly'/>
322                           <!-- Initialization fields -->
323                           <field name='readIntervaltype='SFTimeaccessType='initializeOnly'/>
324                           <field name='writeIntervaltype='SFTimeaccessType='initializeOnly'/>
325                           <field name='siteIDtype='SFInt32accessType='initializeOnly'/>
326                           <field name='applicationIDtype='SFInt32accessType='initializeOnly'/>
327                           <field name='entityIDtype='SFInt32accessType='initializeOnly'/>
328                           <field name='addresstype='SFStringaccessType='initializeOnly'/>
329                           <field name='porttype='SFInt32accessType='initializeOnly'/>
330                           <field name='multicastRelayHosttype='SFStringaccessType='initializeOnly'/>
331                           <field name='multicastRelayPorttype='SFInt32accessType='initializeOnly'/>
332                           <field name='rtpHeaderExpectedtype='SFBoolaccessType='initializeOnly'/>
333                           <field name='tracetype='SFBoolaccessType='initializeOnly'/>
334                           <!-- Generic events -->
335                           <field name='updatetype='SFTimeaccessType='inputOnly'
                          appinfo='update is triggered by local TimeSensor clocks to allow regular read/write'/>
336                           <field name='activetype='SFBoolaccessType='outputOnly'/>
337                           <field name='timestamptype='SFTimeaccessType='outputOnly'/>
338                           <field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'/>
339                           <!-- RadioCommunicationsFamily events -->
340                           <field name='radioIDtype='SFInt32accessType='outputOnly'/>
341                           <!-- SignalPdu fields -->
342                           <field name='encodingSchemetype='SFInt32accessType='outputOnly'/>
343                           <field name='tdlTypetype='SFInt32accessType='outputOnly'/>
344                           <field name='sampleRatetype='SFInt32accessType='outputOnly'/>
345                           <field name='samplestype='SFInt32accessType='outputOnly'/>
346                           <field name='dataLengthtype='SFInt32accessType='outputOnly'/>
347                           <field name='data00type='SFInt32accessType='outputOnly'/>
348                           <field name='data01type='SFInt32accessType='outputOnly'/>
349                           <field name='data02type='SFInt32accessType='outputOnly'/>
350                           <field name='data03type='SFInt32accessType='outputOnly'/>
351                           <field name='data04type='SFInt32accessType='outputOnly'/>
352                           <field name='data05type='SFInt32accessType='outputOnly'/>
353                           <field name='data06type='SFInt32accessType='outputOnly'/>
354                           <field name='data07type='SFInt32accessType='outputOnly'/>
355                           <field name='data08type='SFInt32accessType='outputOnly'/>
356                           <field name='data09type='SFInt32accessType='outputOnly'/>
357                           <field name='data10type='SFInt32accessType='outputOnly'/>
358                           <IS>
359                                <connect nodeField='readIntervalprotoField='readInterval'/>
360                                <connect nodeField='writeIntervalprotoField='writeInterval'/>
361                                <connect nodeField='siteIDprotoField='siteID'/>
362                                <connect nodeField='applicationIDprotoField='applicationID'/>
363                                <connect nodeField='entityIDprotoField='entityID'/>
364                                <connect nodeField='addressprotoField='address'/>
365                                <connect nodeField='portprotoField='port'/>
366                                <connect nodeField='multicastRelayHostprotoField='multicastRelayHost'/>
367                                <connect nodeField='multicastRelayPortprotoField='multicastRelayPort'/>
368                                <connect nodeField='rtpHeaderExpectedprotoField='rtpHeaderExpected'/>
369                                <connect nodeField='traceprotoField='trace'/>
370                                <connect nodeField='activeprotoField='active'/>
371                                <connect nodeField='timestampprotoField='timestamp'/>
372                                <connect nodeField='isRtpHeaderHeardprotoField='isRtpHeaderHeard'/>
373                                <connect nodeField='radioIDprotoField='radioID'/>
374                                <connect nodeField='encodingSchemeprotoField='encodingScheme'/>
375                                <connect nodeField='tdlTypeprotoField='tdlType'/>
376                                <connect nodeField='sampleRateprotoField='sampleRate'/>
377                                <connect nodeField='samplesprotoField='samples'/>
378                                <connect nodeField='dataLengthprotoField='dataLength'/>
379                                <connect nodeField='data00protoField='data00'/>
380                                <connect nodeField='data01protoField='data01'/>
381                                <connect nodeField='data02protoField='data02'/>
382                                <connect nodeField='data03protoField='data03'/>
383                                <connect nodeField='data04protoField='data04'/>
384                                <connect nodeField='data05protoField='data05'/>
385                                <connect nodeField='data06protoField='data06'/>
386                                <connect nodeField='data07protoField='data07'/>
387                                <connect nodeField='data08protoField='data08'/>
388                                <connect nodeField='data09protoField='data09'/>
389                                <connect nodeField='data10protoField='data10'/>
390                           </IS>
391                      </Script>
392                      <!-- Clocks stimulate the processEvents() method in the Script code, resulting in DIS PDU reads/writes. The 'update' eventIn is implicit (i.e. no corresponding Java method is needed). -->
393 
                    <!-- ROUTE information for SignalPduReadIntervalClock node:  [from cycleTime to SignalPduScriptNode.update ] -->
                    <TimeSensor DEF='SignalPduReadIntervalClockloop='true'/>
394 
                    <!-- ROUTE information for SignalPduWriteIntervalClock node:  [from cycleTime to SignalPduScriptNode.update ] -->
                    <TimeSensor DEF='SignalPduWriteIntervalClockenabled='falseloop='true'/>
395                      < ROUTE  fromNode='SignalPduReadIntervalClock' fromField='cycleTime' toNode='SignalPduScriptNode' toField='update'/>
396                      < ROUTE  fromNode='SignalPduWriteIntervalClock' fromField='cycleTime' toNode='SignalPduScriptNode' toField='update'/>
397                      <!-- These ROUTEs connect the PDU Script node to the geometryChoice=0 text output -->
398                      < ROUTE  fromNode='SignalPduScriptNode' fromField='active' toNode='SignalOutputAssembler1' toField='active'/>
399                      < ROUTE  fromNode='SignalPduScriptNode' fromField='timestamp' toNode='SignalOutputAssembler1' toField='timestamp'/>
400                      < ROUTE  fromNode='SignalPduScriptNode' fromField='isRtpHeaderHeard' toNode='SignalOutputAssembler1' toField='isRtpHeaderHeard'/>
401                      < ROUTE  fromNode='SignalPduScriptNode' fromField='radioID' toNode='SignalOutputAssembler1' toField='radioID'/>
402                      < ROUTE  fromNode='SignalPduScriptNode' fromField='encodingScheme' toNode='SignalOutputAssembler1' toField='encodingScheme'/>
403                      < ROUTE  fromNode='SignalPduScriptNode' fromField='tdlType' toNode='SignalOutputAssembler1' toField='tdlType'/>
404                      < ROUTE  fromNode='SignalPduScriptNode' fromField='sampleRate' toNode='SignalOutputAssembler1' toField='sampleRate'/>
405                      < ROUTE  fromNode='SignalPduScriptNode' fromField='samples' toNode='SignalOutputAssembler1' toField='samples'/>
406                      < ROUTE  fromNode='SignalPduScriptNode' fromField='dataLength' toNode='SignalOutputAssembler1' toField='dataLength'/>
407                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data00' toNode='SignalOutputAssembler1' toField='data00'/>
408                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data01' toNode='SignalOutputAssembler2' toField='data01'/>
409                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data02' toNode='SignalOutputAssembler2' toField='data02'/>
410                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data03' toNode='SignalOutputAssembler2' toField='data03'/>
411                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data04' toNode='SignalOutputAssembler2' toField='data04'/>
412                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data05' toNode='SignalOutputAssembler2' toField='data05'/>
413                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data06' toNode='SignalOutputAssembler2' toField='data06'/>
414                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data07' toNode='SignalOutputAssembler2' toField='data07'/>
415                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data08' toNode='SignalOutputAssembler2' toField='data08'/>
416                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data09' toNode='SignalOutputAssembler2' toField='data09'/>
417                      < ROUTE  fromNode='SignalPduScriptNode' fromField='data10' toNode='SignalOutputAssembler2' toField='data10'/>
418                      < ROUTE  fromNode='SignalOutputAssembler1' fromField='messageResult' toNode='SignalOutput1' toField='string'/>
419                      < ROUTE  fromNode='SignalOutputAssembler2' fromField='messageResult' toNode='SignalOutput2' toField='string'/>
420                      <!-- ROUTEs for further geometry representations go here -->
421                 </ProtoBody>
422            </ProtoDeclare>
423            <!-- ============================================================ -->
424            <ProtoDeclare name='TransmitterPdu'>
425                 <ProtoInterface>
426                      <!-- set whichGeometry to -1 for no geometry, 0 for text trace, 1 for default geometry -->
427                      <field name='whichGeometrytype='SFInt32value='0accessType='inputOutput'/>
428                      <field name='bboxCentertype='SFVec3fvalue='0 0 0accessType='initializeOnly'
                     appinfo='Bounding box center: position offset from origin of local coordinate system.'/>
429                      <field name='bboxSizetype='SFVec3fvalue='-1 -1 -1accessType='initializeOnly'
                     appinfo='Bounding box size: automatically calculated can be specified as an optimization or constraint.'/>
430                      <!-- Initialization fields -->
431                      <field name='readIntervaltype='SFTimevalue='0.1accessType='initializeOnly'/>
432                      <field name='writeIntervaltype='SFTimevalue='1.0accessType='initializeOnly'/>
433                      <field name='siteIDtype='SFInt32value='14accessType='initializeOnly'/>
434                      <field name='applicationIDtype='SFInt32value='17accessType='initializeOnly'/>
435                      <field name='entityIDtype='SFInt32value='9accessType='initializeOnly'/>
436                      <field name='addresstype='SFStringvalue='224.2.181.145accessType='initializeOnly'/>
437                      <field name='porttype='SFInt32value='62040accessType='initializeOnly'/>
438                      <field name='multicastRelayHosttype='SFStringvalue='devo.cs.nps.navy.milaccessType='initializeOnly'/>
439                      <field name='multicastRelayPorttype='SFInt32value='8010accessType='initializeOnly'/>
440                      <field name='networkModetype='SFStringvalue='standAloneaccessType='inputOutput'
                     appinfo='networkMode:&#10;standAlone (ignore network but still respond to local events)&#10;networkReader (listen to network as ghost entity)&#10;networkWriter (output to network as master entity at writeInterval)'/>
441                      <field name='isStandAlonetype='SFBoolaccessType='outputOnly'
                     appinfo='Whether networkMode standAlone (ignore network but still respond to local events) is true/false'/>
442                      <field name='isMastertype='SFBoolaccessType='outputOnly'
                     appinfo="Whether networkMode 'networkWriter' (output to network as master entity at writeInterval) is true/false"/>
443                      <field name='isRemotetype='SFBoolaccessType='outputOnly'
                     appinfo="Whether networkMode 'networkReader' (listen to network as ghost entity) is true/false"/>
444                      <field name='rtpHeaderExpectedtype='SFBoolvalue='falseaccessType='initializeOnly'/>
445                      <field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'
                     appinfo='whether RTP header was found prepended to DIS packet'/>
446                      <field name='tracetype='SFBoolvalue='falseaccessType='initializeOnly'/>
447                      <!-- Generic events -->
448                      <field name='activetype='SFBoolaccessType='outputOnly'/>
449                      <field name='timestamptype='SFTimeaccessType='outputOnly'/>
450                      <!-- RadioCommunicationsFamily events -->
451                      <field name='radioIDtype='SFInt32accessType='outputOnly'/>
452                      <!-- TransmitterPdu fields -->
453                      <field name='antennaLocationtype='SFVec3faccessType='outputOnly'/>
454                      <field name='antennaPatternLengthtype='SFInt32accessType='outputOnly'/>
455                      <field name='antennaPatternTypetype='SFInt32accessType='outputOnly'/>
456                      <field name='cryptoKeyIDtype='SFInt32accessType='outputOnly'/>
457                      <field name='cryptoSytemtype='SFInt32accessType='outputOnly'/>
458                      <field name='frequencytype='SFInt32accessType='outputOnly'/>
459                      <field name='inputSourcetype='SFInt32accessType='outputOnly'/>
460                      <field name='lengthOfModulationParameterstype='SFInt32accessType='outputOnly'/>
461                      <field name='modulationTypeDetailtype='SFInt32accessType='outputOnly'/>
462                      <field name='modulationTypeMajortype='SFInt32accessType='outputOnly'/>
463                      <field name='modulationTypeSpreadSpectrumtype='SFInt32accessType='outputOnly'/>
464                      <field name='modulationTypeSystemtype='SFInt32accessType='outputOnly'/>
465                      <field name='powertype='SFInt32accessType='outputOnly'/>
466                      <field name='radioEntityTypeCategorytype='SFInt32accessType='outputOnly'/>
467                      <field name='radioEntityTypeCountrytype='SFInt32accessType='outputOnly'/>
468                      <field name='radioEntityTypeDomaintype='SFInt32accessType='outputOnly'/>
469                      <field name='radioEntityTypeKindtype='SFInt32accessType='outputOnly'/>
470                      <field name='radioEntityTypeNomenclaturetype='SFInt32accessType='outputOnly'/>
471                      <field name='radioEntityTypeNomenclatureVersiontype='SFInt32accessType='outputOnly'/>
472                      <field name='relativeAntennaLocationtype='SFVec3faccessType='outputOnly'/>
473                      <field name='transmitFrequencyBandwidthtype='SFInt32accessType='outputOnly'/>
474                      <field name='transmitStatetype='SFInt32accessType='outputOnly'/>
475                 </ProtoInterface>
476                 <ProtoBody>
477                      <!-- First node inside a PrototypeDeclaration is the node type of the ProtoInstance -->
478                      <Switch DEF='TransmitterPduGeometrySwitchwhichChoice='-1'>
479                           <IS>
480                                <connect nodeField='whichChoiceprotoField='whichGeometry'/>
481                           </IS>
482                           <!-- whichChoice -1 is no rendering, choice 0 is text trace, choice 1 is default geometry -->
483                           <Group>
484                                <Viewpoint description='Transmitter Pdu Observerposition='0 0 15'/>
485                                <Group>
486                                     <Transform translation='0 6 0'>
487                                          <Shape>
488                                               <Text string='"Open Java Console to see PDU trace messages" "Netscape..Communicator..Tools..Java Console"'>
489 
                                                  <!-- FontStyle FONT3 is a DEF node that has 4 USE nodes: USE_1, USE_2, USE_3, USE_4 -->
                                                  <FontStyle DEF='FONT3justify='"MIDDLE" "BEGIN"size='0.5'/>
490                                               </Text>
491                                               <Appearance>
492                                                    <Material diffuseColor='0 0.4 0.8'/>
493                                               </Appearance>
494                                          </Shape>
495                                     </Transform>
496                                     <Transform translation='0 4.75 0'>
497                                          <Shape>
498                                               <Text string='"Transmitter PDU values"'>
499                                                    <FontStyle USE='FONT3'/>
500                                               </Text>
501                                               <Appearance>
502                                                    <Material diffuseColor='0 0.8 0.4'/>
503                                               </Appearance>
504                                          </Shape>
505                                     </Transform>
506                                     <Transform translation='0 4 0'>
507                                          <Shape>
508 
                                             <!-- ROUTE information for TransmitterOutput1 node:  [from TransmitterOutputAssembler1.messageResult to string ] -->
                                             <Text DEF='TransmitterOutput1string='"Transmitter Output1 unset"'>
509                                                    <FontStyle USE='FONT3'/>
510                                               </Text>
511 
                                             <!-- Appearance YellowAppearance3 is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
                                             <Appearance DEF='YellowAppearance3'>
512                                                    <Material diffuseColor='0.8 0.8 0'/>
513                                               </Appearance>
514                                          </Shape>
515                                     </Transform>
516                                     <Transform translation='0 -1 0'>
517                                          <Shape>
518 
                                             <!-- ROUTE information for TransmitterOutput2 node:  [from TransmitterOutputAssembler2.messageResult to string ] -->
                                             <Text DEF='TransmitterOutput2string='"Transmitter Output2 unset"'>
519                                                    <FontStyle USE='FONT3'/>
520                                               </Text>
521                                               <Appearance USE='YellowAppearance3'/>
522                                          </Shape>
523                                     </Transform>
524                                     <Transform translation='0 -6 0'>
525                                          <Shape>
526 
                                             <!-- ROUTE information for TransmitterOutput3 node:  [from TransmitterOutputAssembler3.messageResult to string ] -->
                                             <Text DEF='TransmitterOutput3string='"Transmitter Output2 unset"'>
527                                                    <FontStyle USE='FONT3'/>
528                                               </Text>
529                                               <Appearance USE='YellowAppearance3'/>
530                                          </Shape>
531                                     </Transform>
532                                </Group>
533 
534                                     <!-- surprising limit on MFString: 10 strings -->
535                                     <field name='messageResulttype='MFStringaccessType='outputOnly'/>
536                                     <field name='activetype='SFBoolaccessType='inputOnly'/>
537                                     <field name='timestamptype='SFTimeaccessType='inputOnly'/>
538                                     <field name='isRtpHeaderHeardtype='SFBoolaccessType='inputOnly'/>
539                                     <field name='radioIDtype='SFInt32accessType='inputOnly'/>
540                                     <field name='antennaLocationtype='SFVec3faccessType='inputOnly'/>
541                                     <field name='antennaPatternLengthtype='SFInt32accessType='inputOnly'/>
542                                     <field name='antennaPatternTypetype='SFInt32accessType='inputOnly'/>
543                                     <field name='cryptoKeyIDtype='SFInt32accessType='inputOnly'/>
544                                     <field name='cryptoSytemtype='SFInt32accessType='inputOnly'/>
545                                     <field name='frequencytype='SFInt32accessType='inputOnly'/>
  <![CDATA[
              
ecmascript:

function initialize ()
{
	value='awaiting PDU';
	messageResult  [0] = 'active=' + value;
	messageResult  [1] = 'timestamp=' + value;
	messageResult  [2] = 'isRtpHeaderHeard=' + value;
	messageResult  [3] = 'radioID=' + value;
	messageResult  [4] = 'antennaLocation=' + value;
	messageResult  [5] = 'antennaPatternLength=' + value;
	messageResult  [6] = 'antennaPatternType=' + value;
	messageResult  [7] = 'cryptoKeyID=' + value;
	messageResult  [8] = 'cryptoSytem=' + value;
	messageResult  [9] = 'frequency=' + value;
}
function active 		(value, ts) { messageResult [0] = 'active=' + value; }
function timestamp		(value, ts) { messageResult [1] = 'timestamp=' + value; }
function isRtpHeaderHeard		(value, ts) { messageResult [2] = 'isRtpHeaderHeard=' + value; }
function radioID		(value, ts) { messageResult [3] = 'radioID=' + value; }
function antennaLocation	(value, ts) { messageResult [4] = 'antennaLocation=' + value; }
function antennaPatternLength	(value, ts) { messageResult [5] = 'antennaPatternLength=' + value; }
function antennaPatternType	(value, ts) { messageResult [6] = 'antennaPatternType=' + value; }
function cryptoKeyID		(value, ts) { messageResult [7] = 'cryptoKeyID=' + value; }
function cryptoSytem		(value, ts) { messageResult [8] = 'cryptoSytem=' + value; }
function frequency  		(value, ts) { messageResult [9] = 'frequency=' + value; }

            
]]>
547                                </Script>
548 
549                                     <field name='messageResulttype='MFStringaccessType='outputOnly'/>
550                                     <field name='inputSourcetype='SFInt32accessType='inputOnly'/>
551                                     <field name='lengthOfModulationParameterstype='SFInt32accessType='inputOnly'/>
552                                     <field name='modulationTypeDetailtype='SFInt32accessType='inputOnly'/>
553                                     <field name='modulationTypeMajortype='SFInt32accessType='inputOnly'/>
554                                     <field name='modulationTypeSpreadSpectrumtype='SFInt32accessType='inputOnly'/>
555                                     <field name='modulationTypeSystemtype='SFInt32accessType='inputOnly'/>
556                                     <field name='powertype='SFInt32accessType='inputOnly'/>
557                                     <field name='radioEntityTypeCategorytype='SFInt32accessType='inputOnly'/>
558                                     <field name='radioEntityTypeCountrytype='SFInt32accessType='inputOnly'/>
559                                     <field name='radioEntityTypeDomaintype='SFInt32accessType='inputOnly'/>
  <![CDATA[
              
ecmascript:

function initialize ()
{
	messageResult [0] = 'inputSource=' + value;
	messageResult [1] = 'lengthOfModulationParameters=' + value;
	messageResult [2] = 'modulationTypeDetail=' + value;
	messageResult [3] = 'modulationTypeMajor=' + value;
	messageResult [4] = 'modulationTypeSpreadSpectrum=' + value;
	messageResult [5] = 'modulationTypeSystem=' + value;
	messageResult [6] = 'power=' + value;
	messageResult [7] = 'radioEntityTypeCategory=' + value;
	messageResult [8] = 'radioEntityTypeCountry=' + value;
	messageResult [9] = 'radioEntityTypeDomain=' + value;
}
function inputSource 			(value, ts) { messageResult [0] = 'inputSource=' + value; }
function lengthOfModulationParameters 	(value, ts) { messageResult [1] = 'lengthOfModulationParameters=' + value; }
function modulationTypeDetail		(value, ts) { messageResult [2] = 'modulationTypeDetail=' + value; }
function modulationTypeMajor 		(value, ts) { messageResult [3] = 'modulationTypeMajor=' + value; }
function modulationTypeSpreadSpectrum 	(value, ts) { messageResult [4] = 'modulationTypeSpreadSpectrum=' + value; }
function modulationTypeSystem		(value, ts) { messageResult [5] = 'modulationTypeSystem=' + value; }
function power	 			(value, ts) { messageResult [6] = 'power=' + value; }
function radioEntityTypeCategory 	(value, ts) { messageResult [7] = 'radioEntityTypeCategory=' + value; }
function radioEntityTypeCountry 	(value, ts) { messageResult [8] = 'radioEntityTypeCountry=' + value; }
function radioEntityTypeDomain 		(value, ts) { messageResult [9] = 'radioEntityTypeDomain=' + value; }

            
]]>
561                                </Script>
562 
563                                     <field name='messageResulttype='MFStringaccessType='outputOnly'/>
564                                     <field name='radioEntityTypeKindtype='SFInt32accessType='inputOnly'/>
565                                     <field name='radioEntityTypeNomenclaturetype='SFInt32accessType='inputOnly'/>
566                                     <field name='radioEntityTypeNomenclatureVersiontype='SFInt32accessType='inputOnly'/>
567                                     <field name='relativeAntennaLocationtype='SFVec3faccessType='inputOnly'/>
568                                     <field name='transmitFrequencyBandwidthtype='SFInt32accessType='inputOnly'/>
569                                     <field name='transmitStatetype='SFInt32accessType='inputOnly'/>
  <![CDATA[
              
ecmascript:

function initialize ()
{
	messageResult [0] = 'radioEntityTypeKind=' + value;
	messageResult [1] = 'radioEntityTypeNomenclature=' + value;
	messageResult [2] = 'radioEntityTypeNomenclatureVersion=' + value;
	messageResult [3] = 'relativeAntennaLocation=' + value;
	messageResult [4] = 'transmitFrequencyBandwidth=' + value;
	messageResult [5] = 'transmitState=' + value;
}
function radioEntityTypeKind 			(value, ts) { messageResult [0] = 'radioEntityTypeKind=' + value; }
function radioEntityTypeNomenclature 		(value, ts) { messageResult [1] = 'radioEntityTypeNomenclature=' + value; }
function radioEntityTypeNomenclatureVersion 	(value, ts) { messageResult [2] = 'radioEntityTypeNomenclatureVersion=' + value; }
function relativeAntennaLocation 		(value, ts) { messageResult [3] = 'relativeAntennaLocation=' + value; }
function transmitFrequencyBandwidth		(value, ts) { messageResult [4] = 'transmitFrequencyBandwidth=' + value; }
function transmitState	 			(value, ts) { messageResult [5] = 'transmitState=' + value; }

            
]]>
571                                </Script>
572                           </Group>
573                      </Switch>
574                      <!-- The Script follows the Switch, since the first node in the file determines the node type of this prototype -->
575                      <!-- Fields in the Script are directly mapped to the PrototypeDeclare field-tag interfaces by using the IS construct -->
576                      <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) -->
577 
                    <!-- ROUTE information for TransmitterPduScriptNode node:  [from TransmitterPduReadIntervalClock.cycleTime to update ] [from TransmitterPduWriteIntervalClock.cycleTime to update ] [from active to TransmitterOutputAssembler1.active ] [from timestamp to TransmitterOutputAssembler1.timestamp ] [from isRtpHeaderHeard to TransmitterOutputAssembler1.isRtpHeaderHeard ] [from radioID to TransmitterOutputAssembler1.radioID ] [from antennaLocation to TransmitterOutputAssembler1.antennaLocation ] [from antennaPatternLength to TransmitterOutputAssembler1.antennaPatternLength ] [from antennaPatternType to TransmitterOutputAssembler1.antennaPatternType ] [from cryptoKeyID to TransmitterOutputAssembler1.cryptoKeyID ] [from cryptoSytem to TransmitterOutputAssembler1.cryptoSytem ] [from frequency to TransmitterOutputAssembler1.frequency ] [from inputSource to TransmitterOutputAssembler2.inputSource ] [from lengthOfModulationParameters to TransmitterOutputAssembler2.lengthOfModulationParameters ] [from modulationTypeDetail to TransmitterOutputAssembler2.modulationTypeDetail ] [from modulationTypeMajor to TransmitterOutputAssembler2.modulationTypeMajor ] [from modulationTypeSpreadSpectrum to TransmitterOutputAssembler2.modulationTypeSpreadSpectrum ] [from modulationTypeSystem to TransmitterOutputAssembler2.modulationTypeSystem ] [from power to TransmitterOutputAssembler2.power ] [from radioEntityTypeCategory to TransmitterOutputAssembler2.radioEntityTypeCategory ] [from radioEntityTypeCountry to TransmitterOutputAssembler2.radioEntityTypeCountry ] [from radioEntityTypeDomain to TransmitterOutputAssembler2.radioEntityTypeDomain ] [from radioEntityTypeKind to TransmitterOutputAssembler3.radioEntityTypeKind ] [from radioEntityTypeNomenclature to TransmitterOutputAssembler3.radioEntityTypeNomenclature ] [from radioEntityTypeNomenclatureVersion to TransmitterOutputAssembler3.radioEntityTypeNomenclatureVersion ] [from relativeAntennaLocation to TransmitterOutputAssembler3.relativeAntennaLocation ] [from transmitFrequencyBandwidth to TransmitterOutputAssembler3.transmitFrequencyBandwidth ] [from transmitState to TransmitterOutputAssembler3.transmitState ] -->
                    <Script DEF='TransmitterPduScriptNodemustEvaluate='true'   url=' "RadioCommunicationsPduScriptNode.class" "http://faculty.nps.edu/brutzman/vrtp/mil/navy/nps/dis/RadioCommunicationsPduScriptNode.class" '>
578                           <!-- Valid values for radioPduType are ReceiverPdu, SignalPdu and TransmitterPdu -->
579                           <field name='radioPduTypetype='SFStringvalue='TransmitterPduaccessType='initializeOnly'/>
580                           <!-- Initialization fields -->
581                           <field name='readIntervaltype='SFTimeaccessType='initializeOnly'/>
582                           <field name='writeIntervaltype='SFTimeaccessType='initializeOnly'/>
583                           <field name='siteIDtype='SFInt32accessType='initializeOnly'/>
584                           <field name='applicationIDtype='SFInt32accessType='initializeOnly'/>
585                           <field name='entityIDtype='SFInt32accessType='initializeOnly'/>
586                           <field name='addresstype='SFStringaccessType='initializeOnly'/>
587                           <field name='porttype='SFInt32accessType='initializeOnly'/>
588                           <field name='multicastRelayHosttype='SFStringaccessType='initializeOnly'/>
589                           <field name='multicastRelayPorttype='SFInt32accessType='initializeOnly'/>
590                           <field name='rtpHeaderExpectedtype='SFBoolaccessType='initializeOnly'/>
591                           <field name='isRtpHeaderHeardtype='SFBoolaccessType='outputOnly'
                          appinfo='whether RTP header was found prepended to DIS packet'/>
592                           <field name='tracetype='SFBoolaccessType='initializeOnly'/>
593                           <!-- Generic events -->
594                           <field name='updatetype='SFTimeaccessType='inputOnly'
                          appinfo='update is triggered by local TimeSensor clocks to allow regular read/write'/>
595                           <field name='activetype='SFBoolaccessType='outputOnly'/>
596                           <field name='timestamptype='SFTimeaccessType='outputOnly'/>
597                           <!-- RadioCommunicationsFamily events -->
598                           <field name='radioIDtype='SFInt32accessType='outputOnly'/>
599                           <!-- SignalPdu fields -->
600                           <field name='antennaLocationtype='SFVec3faccessType='outputOnly'/>
601                           <field name='antennaPatternLengthtype='SFInt32accessType='outputOnly'/>
602                           <field name='antennaPatternTypetype='SFInt32accessType='outputOnly'/>
603                           <field name='cryptoKeyIDtype='SFInt32accessType='outputOnly'/>
604                           <field name='cryptoSytemtype='SFInt32accessType='outputOnly'/>
605                           <field name='frequencytype='SFInt32accessType='outputOnly'/>
606                           <field name='inputSourcetype='SFInt32accessType='outputOnly'/>
607                           <field name='lengthOfModulationParameterstype='SFInt32accessType='outputOnly'/>
608                           <field name='modulationTypeDetailtype='SFInt32accessType='outputOnly'/>
609                           <field name='modulationTypeMajortype='SFInt32accessType='outputOnly'/>
610                           <field name='modulationTypeSpreadSpectrumtype='SFInt32accessType='outputOnly'/>
611                           <field name='modulationTypeSystemtype='SFInt32accessType='outputOnly'/>
612                           <field name='powertype='SFInt32accessType='outputOnly'/>
613                           <field name='radioEntityTypeCategorytype='SFInt32accessType='outputOnly'/>
614                           <field name='radioEntityTypeCountrytype='SFInt32accessType='outputOnly'/>
615                           <field name='radioEntityTypeDomaintype='SFInt32accessType='outputOnly'/>
616                           <field name='radioEntityTypeKindtype='SFInt32accessType='outputOnly'/>
617                           <field name='radioEntityTypeNomenclaturetype='SFInt32accessType='outputOnly'/>
618                           <field name='radioEntityTypeNomenclatureVersiontype='SFInt32accessType='outputOnly'/>
619                           <field name='relativeAntennaLocationtype='SFVec3faccessType='outputOnly'/>
620                           <field name='transmitFrequencyBandwidthtype='SFInt32accessType='outputOnly'/>
621                           <field name='transmitStatetype='SFInt32accessType='outputOnly'/>
622                           <IS>
623                                <connect nodeField='readIntervalprotoField='readInterval'/>
624                                <connect nodeField='writeIntervalprotoField='writeInterval'/>
625                                <connect nodeField='siteIDprotoField='siteID'/>
626                                <connect nodeField='applicationIDprotoField='applicationID'/>
627                                <connect nodeField='entityIDprotoField='entityID'/>
628                                <connect nodeField='addressprotoField='address'/>
629                                <connect nodeField='portprotoField='port'/>
630                                <connect nodeField='multicastRelayHostprotoField='multicastRelayHost'/>
631                                <connect nodeField='multicastRelayPortprotoField='multicastRelayPort'/>
632                                <connect nodeField='rtpHeaderExpectedprotoField='rtpHeaderExpected'/>
633                                <connect nodeField='traceprotoField='trace'/>
634                                <connect nodeField='activeprotoField='active'/>
635                                <connect nodeField='timestampprotoField='timestamp'/>
636                                <connect nodeField='isRtpHeaderHeardprotoField='isRtpHeaderHeard'/>
637                                <connect nodeField='radioIDprotoField='radioID'/>
638                                <connect nodeField='antennaLocationprotoField='antennaLocation'/>
639                                <connect nodeField='antennaPatternLengthprotoField='antennaPatternLength'/>
640                                <connect nodeField='antennaPatternTypeprotoField='antennaPatternType'/>
641                                <connect nodeField='cryptoKeyIDprotoField='cryptoKeyID'/>
642                                <connect nodeField='cryptoSytemprotoField='cryptoSytem'/>
643                                <connect nodeField='frequencyprotoField='frequency'/>
644                                <connect nodeField='inputSourceprotoField='inputSource'/>
645                                <connect nodeField='lengthOfModulationParametersprotoField='lengthOfModulationParameters'/>
646                                <connect nodeField='modulationTypeDetailprotoField='modulationTypeDetail'/>
647                                <connect nodeField='modulationTypeMajorprotoField='modulationTypeMajor'/>
648                                <connect nodeField='modulationTypeSpreadSpectrumprotoField='modulationTypeSpreadSpectrum'/>
649                                <connect nodeField='modulationTypeSystemprotoField='modulationTypeSystem'/>
650                                <connect nodeField='powerprotoField='power'/>
651                                <connect nodeField='radioEntityTypeCategoryprotoField='radioEntityTypeCategory'/>
652                                <connect nodeField='radioEntityTypeCountryprotoField='radioEntityTypeCountry'/>
653                                <connect nodeField='radioEntityTypeDomainprotoField='radioEntityTypeDomain'/>
654                                <connect nodeField='radioEntityTypeKindprotoField='radioEntityTypeKind'/>
655                                <connect nodeField='radioEntityTypeNomenclatureprotoField='radioEntityTypeNomenclature'/>
656                                <connect nodeField='radioEntityTypeNomenclatureVersionprotoField='radioEntityTypeNomenclatureVersion'/>
657                                <connect nodeField='relativeAntennaLocationprotoField='relativeAntennaLocation'/>
658                                <connect nodeField='transmitFrequencyBandwidthprotoField='transmitFrequencyBandwidth'/>
659                                <connect nodeField='transmitStateprotoField='transmitState'/>
660                           </IS>
661                      </Script>
662                      <!-- Clocks stimulate the processEvents() method in the Script code, resulting in DIS PDU reads/writes. The 'update' eventIn is implicit (i.e. no corresponding Java method is needed). -->
663 
                    <!-- ROUTE information for TransmitterPduReadIntervalClock node:  [from cycleTime to TransmitterPduScriptNode.update ] -->
                    <TimeSensor DEF='TransmitterPduReadIntervalClockloop='true'/>
664 
                    <!-- ROUTE information for TransmitterPduWriteIntervalClock node:  [from cycleTime to TransmitterPduScriptNode.update ] -->
                    <TimeSensor DEF='TransmitterPduWriteIntervalClockenabled='falseloop='true'/>
665                      < ROUTE  fromNode='TransmitterPduReadIntervalClock' fromField='cycleTime' toNode='TransmitterPduScriptNode' toField='update'/>
666                      < ROUTE  fromNode='TransmitterPduWriteIntervalClock' fromField='cycleTime' toNode='TransmitterPduScriptNode' toField='update'/>
667                      <!-- These ROUTEs connect the PDU Script node to the geometryChoice=0 text output -->
668                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='active' toNode='TransmitterOutputAssembler1' toField='active'/>
669                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='timestamp' toNode='TransmitterOutputAssembler1' toField='timestamp'/>
670                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='isRtpHeaderHeard' toNode='TransmitterOutputAssembler1' toField='isRtpHeaderHeard'/>
671                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='radioID' toNode='TransmitterOutputAssembler1' toField='radioID'/>
672                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='antennaLocation' toNode='TransmitterOutputAssembler1' toField='antennaLocation'/>
673                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='antennaPatternLength' toNode='TransmitterOutputAssembler1' toField='antennaPatternLength'/>
674                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='antennaPatternType' toNode='TransmitterOutputAssembler1' toField='antennaPatternType'/>
675                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='cryptoKeyID' toNode='TransmitterOutputAssembler1' toField='cryptoKeyID'/>
676                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='cryptoSytem' toNode='TransmitterOutputAssembler1' toField='cryptoSytem'/>
677                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='frequency' toNode='TransmitterOutputAssembler1' toField='frequency'/>
678                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='inputSource' toNode='TransmitterOutputAssembler2' toField='inputSource'/>
679                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='lengthOfModulationParameters' toNode='TransmitterOutputAssembler2' toField='lengthOfModulationParameters'/>
680                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='modulationTypeDetail' toNode='TransmitterOutputAssembler2' toField='modulationTypeDetail'/>
681                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='modulationTypeMajor' toNode='TransmitterOutputAssembler2' toField='modulationTypeMajor'/>
682                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='modulationTypeSpreadSpectrum' toNode='TransmitterOutputAssembler2' toField='modulationTypeSpreadSpectrum'/>
683                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='modulationTypeSystem' toNode='TransmitterOutputAssembler2' toField='modulationTypeSystem'/>
684                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='power' toNode='TransmitterOutputAssembler2' toField='power'/>
685                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='radioEntityTypeCategory' toNode='TransmitterOutputAssembler2' toField='radioEntityTypeCategory'/>
686                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='radioEntityTypeCountry' toNode='TransmitterOutputAssembler2' toField='radioEntityTypeCountry'/>
687                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='radioEntityTypeDomain' toNode='TransmitterOutputAssembler2' toField='radioEntityTypeDomain'/>
688                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='radioEntityTypeKind' toNode='TransmitterOutputAssembler3' toField='radioEntityTypeKind'/>
689                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='radioEntityTypeNomenclature' toNode='TransmitterOutputAssembler3' toField='radioEntityTypeNomenclature'/>
690                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='radioEntityTypeNomenclatureVersion' toNode='TransmitterOutputAssembler3' toField='radioEntityTypeNomenclatureVersion'/>
691                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='relativeAntennaLocation' toNode='TransmitterOutputAssembler3' toField='relativeAntennaLocation'/>
692                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='transmitFrequencyBandwidth' toNode='TransmitterOutputAssembler3' toField='transmitFrequencyBandwidth'/>
693                      < ROUTE  fromNode='TransmitterPduScriptNode' fromField='transmitState' toNode='TransmitterOutputAssembler3' toField='transmitState'/>
694                      < ROUTE  fromNode='TransmitterOutputAssembler1' fromField='messageResult' toNode='TransmitterOutput1' toField='string'/>
695                      < ROUTE  fromNode='TransmitterOutputAssembler2' fromField='messageResult' toNode='TransmitterOutput2' toField='string'/>
696                      < ROUTE  fromNode='TransmitterOutputAssembler3' fromField='messageResult' toNode='TransmitterOutput3' toField='string'/>
697                      <!-- ROUTEs for further geometry representations go here -->
698                 </ProtoBody>
699            </ProtoDeclare>
700            <!-- ============================================================ -->
701            <!-- Default content -->
702            <Group>
703                 <Transform translation='-15 15 0'>
704                      <ProtoInstance name='ReceiverPdu'/>
705                 </Transform>
706                 <Transform translation='-15 -15 0'>
707                      <ReceiverPdu receivedPower='0.0containerField='children'/>
708                 </Transform>
709                 <Transform translation='0 15 0'>
710                      <ProtoInstance name='SignalPdu'/>
711                 </Transform>
712                 <Transform translation='0 -15 0'>
713                      <SignalPdu containerField='children'/>
714                 </Transform>
715                 <Transform translation='15 15 0'>
716                      <ProtoInstance name='TransmitterPdu'/>
717                 </Transform>
718                 <Transform translation='15 -15 0'>
719                      <TransmitterPdu relativeAntennaLocation='0 0 0transmitFrequencyBandwidth='0.0containerField='children'/>
720                 </Transform>
721            </Group>
722       </Scene>
723  </X3D>
<!--

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

<!-- to top Index for DEF nodes: FONT1, FONT2, FONT3, ReceiverOutput1, ReceiverOutputAssembler1, ReceiverPduGeometrySwitch, ReceiverPduReadIntervalClock, ReceiverPduScriptNode, ReceiverPduWriteIntervalClock, SignalOutput1, SignalOutput2, SignalOutputAssembler1, SignalOutputAssembler2, SignalPduGeometrySwitch, SignalPduReadIntervalClock, SignalPduScriptNode, SignalPduWriteIntervalClock, TransmitterOutput1, TransmitterOutput2, TransmitterOutput3, TransmitterOutputAssembler1, TransmitterOutputAssembler2, TransmitterOutputAssembler3, TransmitterPduGeometrySwitch, TransmitterPduReadIntervalClock, TransmitterPduScriptNode, TransmitterPduWriteIntervalClock, YellowAppearance2, YellowAppearance3

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, Viewpoint_3

Index for ProtoDeclare definitions: ReceiverPdu, SignalPdu, TransmitterPdu
-->
X3D Tooltips element index: Appearance, component, connect, field, FontStyle, Group, head, IS, Material, meta, ProtoBody, ProtoDeclare, ProtoInstance, ProtoInterface, ReceiverPdu, ROUTE, Scene, Script, Shape, SignalPdu, Switch, Text, TimeSensor, Transform, TransmitterPdu, Viewpoint, WorldInfo, X3D, accessType and type, XML data types, field types

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

ReceiverPduReadIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
ReceiverPduScriptNode
Script
update
SFTime

ReceiverPduWriteIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
ReceiverPduScriptNode
Script
update
SFTime

SignalPduReadIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
SignalPduScriptNode
Script
update
SFTime

SignalPduWriteIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
SignalPduScriptNode
Script
update
SFTime

TransmitterPduReadIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
TransmitterPduScriptNode
Script
update
SFTime

TransmitterPduWriteIntervalClock
TimeSensor
cycleTime
SFTime

ROUTE
event to
(1)
TransmitterPduScriptNode
Script
update
SFTime

      ReceiverOutputAssembler1
Script
messageResult
MFString

ROUTE
event to
(1)
ReceiverOutput1
Text
string
MFString

      SignalOutputAssembler1
Script
messageResult
MFString

ROUTE
event to
(1)
SignalOutput1
Text
string
MFString

      SignalOutputAssembler2
Script
messageResult
MFString

ROUTE
event to
(1)
SignalOutput2
Text
string
MFString

      TransmitterOutputAssembler1
Script
messageResult
MFString

ROUTE
event to
(1)
TransmitterOutput1
Text
string
MFString

      TransmitterOutputAssembler2
Script
messageResult
MFString

ROUTE
event to
(1)
TransmitterOutput2
Text
string
MFString

      TransmitterOutputAssembler3
Script
messageResult
MFString

ROUTE
event to
(1)
TransmitterOutput3
Text
string
MFString


ProtoInstance
ReceiverPdu
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. 


ProtoInstance
SignalPdu
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. 


ProtoInstance
TransmitterPdu
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://www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/RadioCommunicationsPrototypesIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/DistributedInteractiveSimulation/RadioCommunicationsPrototypes.x3d -->

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

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