<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Immersive'  version='3.3 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-3.3.xsd ' >
<head>
<meta name='titlecontent=' ExecutionModel.x3d '/>
<meta name='descriptioncontent='X3D encodings example: execution model demonstrated. Click ball to see script-generated text appear.'/>
<meta name='creatorcontent='Don Brutzman and Joe Williams'/>
<meta name='createdcontent='1 June 2002'/>
<meta name='modifiedcontent='28 October 2019'/>
<meta name='specificationSectioncontent=' X3D encodings, ISO/IEC 19776-1.3, Part 1: XML encoding, Annex C.19 Execution model'/>
<meta name='specificationUrlcontent=' https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/examples.html#ExecutionModel '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/X3dSpecifications/ExecutionModel.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: Collector, Result, Script1, Script2, Script3, Script4, Script5, Script6, Script7, TS

Index for Viewpoint node: Viewpoint_1
-->
<Scene>
<WorldInfo title='ExecutionModel.x3d'/>
<!-- ROUTE information for TS node:  [from touchTime to Script1.touchTime ] -->
<TouchSensor DEF='TSdescription='click to animate'/>

<field name='touchTimetype='SFTimeaccessType='inputOnly'/>
<field name='toScript2type='SFBoolaccessType='outputOnly'/>
<field name='toScript3type='SFBoolaccessType='outputOnly'/>
<field name='stringtype='SFStringaccessType='outputOnly'/>
<![CDATA[
      
ecmascript:
      function touchTime() {
        toScript2 = true;
      }
      function eventsProcessed() {
        string = 'Script1.eventsProcessed';
        toScript3 = true;
      }

    
]]>
</Script>
<field name='fromScript1type='SFBoolaccessType='inputOnly'/>
<field name='toScript4type='SFBoolaccessType='outputOnly'/>
<field name='stringtype='SFStringaccessType='outputOnly'/>
<![CDATA[
      
ecmascript:
      function fromScript1() {
      }
      function eventsProcessed() {
        string = 'Script2.eventsProcessed';
        toScript4 = true;
      }

    
]]>
</Script>
<field name='fromScript1type='SFBoolaccessType='inputOnly'/>
<field name='toScript5type='SFBoolaccessType='outputOnly'/>
<field name='toScript6type='SFBoolaccessType='outputOnly'/>
<field name='stringtype='SFStringaccessType='outputOnly'/>
<![CDATA[
      
ecmascript:
      function fromScript1() {
        toScript5 = true;
      }
      function eventsProcessed() {
        string = 'Script3.eventsProcessed';
        toScript6 = true;
      }

    
]]>
</Script>
<!-- ROUTE information for Script4 node:  [from Script2.toScript4 to fromScript2 ] -->
<Script DEF='Script4'>
<field name='fromScript2type='SFBoolaccessType='inputOnly'/>
<![CDATA[
      
ecmascript:
      function fromScript2() {
      }

    
]]>
</Script>
<!-- ROUTE information for Script5 node:  [from Script3.toScript5 to fromScript3 ] -->
<Script DEF='Script5'>
<field name='fromScript3type='SFBoolaccessType='inputOnly'/>
<![CDATA[
      
ecmascript:
       function fromScript3() {
      }

    
]]>
</Script>
<field name='fromScript3type='SFBoolaccessType='inputOnly'/>
<field name='toScript7type='SFBoolaccessType='outputOnly'/>
<field name='stringtype='SFStringaccessType='outputOnly'/>
<![CDATA[
      
ecmascript:
      function fromScript3() {
        toScript7 = true;
      }
      function eventsProcessed() {
        string = 'Script6.eventsProcessed';
      }

    
]]>
</Script>
<!-- ROUTE information for Script7 node:  [from Script6.toScript7 to fromScript6 ] -->
<Script DEF='Script7'>
<field name='fromScript6type='SFBoolaccessType='inputOnly'/>
<![CDATA[
      
ecmascript:
      function fromScript6 () {
      }

    
]]>
</Script>
<!-- Display the results -->
<field name='stringtype='MFStringaccessType='outputOnly'/>
<field name='fromStringtype='SFStringaccessType='inputOnly'/>
<![CDATA[
      
ecmascript:
      function initialize() {
        string[0] = 'Event Sequence:';
      }
      function fromString(s) {
        i = string.length;
        string[i] = ' ( ' + i + ' ) ' + s + ' occurred';
      }

    
]]>
</Script>
<Transform translation='0 2 0'>
<Shape>
<Appearance>
<Material diffuseColor='0 0.6 0'/>
</Appearance>
<Sphere/>
</Shape>
</Transform>
<Shape>
<!-- ROUTE information for Result node:  [from Collector.string to string ] -->
<Text DEF='Result'/>

<Appearance>
<Material diffuseColor='0.101961 0.839216 1'/>
</Appearance>
</Shape>
<Viewpoint description='Execution model exampleposition='7 -1 18'/>
< ROUTE  fromNode=' TS' fromField='touchTime' toNode=' Script1' toField='touchTime'/>
< ROUTE  fromNode=' Script1' fromField='toScript2' toNode=' Script2' toField='fromScript1'/>
< ROUTE  fromNode=' Script1' fromField='toScript3' toNode=' Script3' toField='fromScript1'/>
< ROUTE  fromNode=' Script2' fromField='toScript4' toNode=' Script4' toField='fromScript2'/>
< ROUTE  fromNode=' Script3' fromField='toScript5' toNode=' Script5' toField='fromScript3'/>
< ROUTE  fromNode=' Script3' fromField='toScript6' toNode=' Script6' toField='fromScript3'/>
< ROUTE  fromNode=' Script6' fromField='toScript7' toNode=' Script7' toField='fromScript6'/>
< ROUTE  fromNode=' Script1' fromField='string' toNode=' Collector' toField='fromString'/>
< ROUTE  fromNode=' Script2' fromField='string' toNode=' Collector' toField='fromString'/>
< ROUTE  fromNode=' Script3' fromField='string' toNode=' Collector' toField='fromString'/>
< ROUTE  fromNode=' Script6' fromField='string' toNode=' Collector' toField='fromString'/>
< ROUTE  fromNode=' Collector' fromField='string' toNode=' Result' toField='string'/>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: Collector, Result, Script1, Script2, Script3, Script4, Script5, Script6, Script7, TS

Index for Viewpoint node: Viewpoint_1
-->

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

TS
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
Script1
Script
touchTime
SFTime

 
 
then
Script1
Script
string
SFString

ROUTE
event to
(2)
Collector
Script
fromString
SFString

 
 
then
Collector
Script
string
MFString

ROUTE
event to
(3)
Result
Text
string
MFString
 
 
 
then
Script1
Script
toScript2
SFBool

ROUTE
event to
(2)
Script2
Script
fromScript1
SFBool

 
 
then
Script2
Script
string
SFString

ROUTE
event to
(3)
Collector
Script
fromString
SFString

 
 
then
Collector
Script
string
MFString

ROUTE
event to
(4)
Result
Text
string
MFString
 
 
 
then
Script2
Script
toScript4
SFBool

ROUTE
event to
(3)
Script4
Script
fromScript2
SFBool
 
 
 
then
Script1
Script
toScript3
SFBool

ROUTE
event to
(2)
Script3
Script
fromScript1
SFBool

 
 
then
Script3
Script
string
SFString

ROUTE
event to
(3)
Collector
Script
fromString
SFString

 
 
then
Collector
Script
string
MFString

ROUTE
event to
(4)
Result
Text
string
MFString
 
 
 
then
Script3
Script
toScript5
SFBool

ROUTE
event to
(3)
Script5
Script
fromScript3
SFBool
 
 
 
then
Script3
Script
toScript6
SFBool

ROUTE
event to
(3)
Script6
Script
fromScript3
SFBool

 
 
then
Script6
Script
string
SFString

ROUTE
event to
(4)
Collector
Script
fromString
SFString

 
 
then
Collector
Script
string
MFString

ROUTE
event to
(5)
Result
Text
string
MFString
 
 
 
then
Script6
Script
toScript7
SFBool

ROUTE
event to
(4)
Script7
Script
fromScript6
SFBool


      Collector
Script
string
MFString

ROUTE
event to
(1)
Result
Text
string
MFString



-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/X3dSpecifications/ExecutionModelIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/X3dSpecifications/ExecutionModel.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)
-->

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