<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
<![CDATA[
ecmascript: function initialize () { enabled = ClockNode.enabled; tracePrint ('initialize() enabled=' + enabled); if (enabled) { isActive = true; // isLoaded event only sent upon completion progress = 0.0; tracePrintEvents (); timeOut = ClockNode.cycleInterval; tracePrint ('timeOut=' + timeOut); if (timeOut <= 0.0) // instantaneous, no loop { isActive = false; isLoaded = true; progress = 1.0; loadTime = timestamp; tracePrintEvents (); } } } function fraction (value, timestamp) { enabled = ClockNode.enabled; if (enabled) tracePrint ('progress=' + value + ', priorFraction=' + priorFraction); // use priorFraction to check for looping, then stop loop if (enabled && ((value >=1) || (value < priorFraction))) { isActive = false; isLoaded = true; loadTime = timestamp; progress = 1; tracePrintEvents (); tracePrint ('complete'); loopStart = true; } else progress= value; // output event priorFraction = progress; } function set_watchList (value, timestamp) { watchList = value; } function tracePrintEvents () { tracePrint ('isActive=' + isActive); tracePrint ('isLoaded=' + isLoaded); tracePrint ('loadTime=' + loadTime); tracePrint ('progress=' + progress); } function tracePrint (outputString) { if (traceEnabled) Browser.println ('[LoadSensor]' + outputString); } function alwaysPrint (outputString) { Browser.println ('[LoadSensor]' + outputString); }
]]>
Event Graph ROUTE Table entries with 3 ROUTE connections total, showing X3D event-model relationships for this scene.
Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.
The following
ROUTE
begins an event-routing loop! Loop occurs at nodeDepth=3.
ROUTE Clock.fraction_changed TO LoadSensorScript.fraction |
||||||||||
Clock
TimeSensor fraction_changed SFFloat |
LoadSensorScript
Script fraction SFFloat |
then |
LoadSensorScript
Script isActive SFBool |
Clock
TimeSensor enabled SFBool |
then |
Clock
TimeSensor fraction_changed SFFloat |
LoadSensorScript
Script fraction SFFloat |
|||
then |
LoadSensorScript
Script loopStart SFFloat |
Clock
TimeSensor startTime SFTime |
then |
Clock
TimeSensor fraction_changed SFFloat |
LoadSensorScript
Script fraction SFFloat |
The following
ROUTE
begins an event-routing loop! Loop occurs at nodeDepth=3.
ROUTE LoadSensorScript.loopStart TO Clock.startTime |
||||||||||
LoadSensorScript
Script loopStart SFFloat |
Clock
TimeSensor startTime SFTime |
then |
Clock
TimeSensor fraction_changed SFFloat |
LoadSensorScript
Script fraction SFFloat |
then |
LoadSensorScript
Script isActive SFBool |
Clock
TimeSensor enabled SFBool |
|||
then |
LoadSensorScript
Script loopStart SFFloat |
Clock
TimeSensor startTime SFTime |
||||||||
LoadSensorScript
Script isActive SFBool |
Clock
TimeSensor enabled SFBool |
then |
Clock
TimeSensor fraction_changed SFFloat |
LoadSensorScript
Script fraction SFFloat |
then |
LoadSensorScript
Script isActive SFBool |
Clock
TimeSensor enabled SFBool |
|||
then |
LoadSensorScript
Script loopStart SFFloat |
Clock
TimeSensor startTime SFTime |
<!--
Online at
https://www.web3d.org/x3d/content/examples/Basic/development/LoadSensorPrototypeIndex.html
-->
<!--
Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/development/LoadSensorPrototype.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)
<ProtoDeclare
name='ProtoName'>
<field
name='fieldName'/> </ProtoDeclare>
-->
<!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->