<?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">
<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'>
  <head>
    <meta content='ECMAScriptAnnexExample2.x3d' name='title'/>
    <meta content='Don Brutzman' name='creator'/>
    <meta content='16 January 2000' name='created'/>
    <meta content='20 October 2019' name='modified'/>
    <meta content='A simple script example with no visible rendering results.' name='description'/>
    <meta content='VRML97 translation has extraneous &apos;url [ ]&apos; output.' name='error'/>
    <meta content='https://www.web3d.org/x3d/content/examples/Basic/development/ECMAScriptAnnexExample2.x3d' name='identifier'/>
    <meta content='X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo info='"Example 2, VRML 97 Annex C, ECMAScript Scripting Reference" "https://www.web3d.org/technicalinfo/specifications/vrml97/part1/javascript.html#Example" "Edits: wrapped using a Transform node for completeness, renamed duplicate url field"' title='ECMAScriptAnnexExample2.wrl'/>
    <Transform DEF='ROOT_TRANSFORM'>
      <Script DEF='Example_2' directOutput='true'>
        <field accessType='initializeOnly' name='myself' type='SFNode'>
          <Script USE='Example_2'/>
        </field>
        <field accessType='initializeOnly' name='root' type='SFNode'>
          <Transform USE='ROOT_TRANSFORM'/>
        </field>
        <field accessType='initializeOnly' name='identifier' type='MFString' value='"foo.wrl"'/>
        <field accessType='inputOnly' name='nodesLoaded' type='SFNode'/>
        <field accessType='inputOnly' name='trigger_event' type='SFBool'/>
        <![CDATA[
ecmascript:

function trigger_event(value, ts)
{
	// do something and then fetch values
	Browser.createVRMLFromURL(url, myself, 'nodesLoaded');
}
function nodesLoaded(value, timestamp)
{
	if (value.length > 5)
	{
		// do something if more than 5 nodes in this MFNode array...
	}
	root.addChildren = value;
}
// example is missing reference to the url field defined above
]]>
      </Script>
    </Transform>
  </Scene>
</X3D>