Script-and-inputOutputField.x3d

From Web3D.org
Revision as of 21:07, 6 August 2008 by Jbehr (Talk | contribs) (Using inputOuput Fields in scripts)

Jump to: navigation, search

Using inputOuput Fields in scripts

<?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>