Script-and-inputOutputField.x3d
From Web3D.org
<?xml version="1.0" encoding="UTF-8"?>
<X3D profile='Full' >
<Scene DEF='scene'>
<Viewpoint position='20 0 40'/>
<Shape>
<Text DEF='text' string='"Initialize called: FALSE" "readFoo() called: FALSE" "foo value send: FALSE" "foo function called: FALSE" "set_foo function called: FALSE" "foo_changed function called: FALSE"'/>
</Shape>
<Script DEF='s1' directOutput='true'>
<field accessType='initializeOnly' name='text' type='SFNode'>
<Text USE='text'/>
</field>
<field accessType='inputOutput' name='foo' type='SFFloat' value='5'/>
<field accessType='inputOnly' name='readFoo' type='SFTime'/><![CDATA[ecmascript:
//-----------------------------
function initialize (value) {
line = 'Initialized called: TRUE; foo value: ' + foo;
text.string[0] = line;
}
//-----------------------------
function readFoo (value) {
text.string[1] = 'readFoo called: TRUE, value: ' + foo;
}
//-----------------------------
function foo (value) {
text.string[3] = 'foo function called: TRUE; ' + value;
}
//-----------------------------
function set_foo (value) {
text.string[4] = 'set_foo function called: TRUE; ' + value;
}
//-----------------------------
function foo_changed (value) {
text.string[5] = 'foo_changed function called: TRUE; ' + value;
}
]]>
</Script>
<TimeSensor DEF='ts' cycleInterval='3' loop='true'/>
<Script DEF='s2' directOutput='true'>
<field accessType='initializeOnly' name='text' type='SFNode'>
<Text USE='text'/>
</field>
<field accessType='inputOnly' name='fooCatcher' type='SFFloat'/><![CDATA[ecmascript:
//-----------------------
function fooCatcher (value) {
text.string[2] = 'Foo value send: TRUE; value: ' + value;
}
]]>
</Script>
<ROUTE fromNode='ts' fromField='fraction_changed' toNode='s1' toField='set_foo'/>
<ROUTE fromNode='ts' fromField='cycleTime' toNode='s1' toField='readFoo'/>
<ROUTE fromNode='s1' fromField='foo_changed' toNode='s2' toField='fooCatcher'/>
</Scene>
</X3D>