<?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='NavigationInfoStack.x3d' name='title'/>
    <meta content='Attempt to control NavigationInfo speed and stack.' name='description'/>
    <meta content='Don Brutzman' name='creator'/>
    <meta content='13 June 2004' name='created'/>
    <meta content='28 November 2019' name='modified'/>
    <meta content='under development' name='warning'/>
    <meta content='https://www.web3d.org/x3d/content/examples/Savage/Tools/Animation/NavigationInfoStack.x3d' name='identifier'/>
    <meta content='X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo title='NavigationInfoStack.x3d'/>
    <Group DEF='NavigationInfoStackGroup'>
      <NavigationInfo DEF='NavInfoDefault'/>
      <!-- ========== -->
      <NavigationInfo DEF='NavInfo10mps' speed='10'/>
      <BooleanTrigger DEF='NavSpeed10BooleanTrigger'/>
      <ProximitySensor DEF='NavSpeed10ProximitySensor' size='200 200 200'/>
      <ROUTE fromField='triggerTrue' fromNode='NavSpeed10BooleanTrigger' toField='set_bind' toNode='NavInfo10mps'/>
      <ROUTE fromField='exitTime' fromNode='NavSpeed10ProximitySensor' toField='set_triggerTime' toNode='NavSpeed10BooleanTrigger'/>
      <!-- ========== -->
      <NavigationInfo DEF='NavInfo100mps' speed='100'/>
      <ProximitySensor DEF='NavSpeed100ProximitySensor' size='2000 2000 2000'/>
      <BooleanTrigger DEF='NavSpeed100BooleanTrigger'/>
      <ROUTE fromField='triggerTrue' fromNode='NavSpeed100BooleanTrigger' toField='set_bind' toNode='NavInfo100mps'/>
      <ROUTE fromField='exitTime' fromNode='NavSpeed100ProximitySensor' toField='set_triggerTime' toNode='NavSpeed100BooleanTrigger'/>
      <!-- ========== -->
      <NavigationInfo DEF='NavInfo1000mps' speed='1000'/>
      <ProximitySensor DEF='NavSpeed1000ProximitySensor' size='20000 20000 20000'/>
      <BooleanTrigger DEF='NavSpeed1000BooleanTrigger'/>
      <ROUTE fromField='triggerTrue' fromNode='NavSpeed1000BooleanTrigger' toField='set_bind' toNode='NavInfo1000mps'/>
      <ROUTE fromField='exitTime' fromNode='NavSpeed1000ProximitySensor' toField='set_triggerTime' toNode='NavSpeed1000BooleanTrigger'/>
      <!-- ========== -->
      <Script DEF='NavSpeedMonitorScript'>
        <field accessType='inputOnly' name='speed1Bound' type='SFBool'/>
        <field accessType='inputOnly' name='speed10Bound' type='SFBool'/>
        <field accessType='inputOnly' name='speed100Bound' type='SFBool'/>
        <field accessType='inputOnly' name='speed1000Bound' type='SFBool'/>
        <field accessType='initializeOnly' name='traceEnabled' type='SFBool' value='true'/>
        <![CDATA[
ecmascript:

function speed1Bound (value, timestamp)
{
	tracePrint ('NavInfoDefault (1 mps) bound');
}
function speed10Bound (value, timestamp)
{
	tracePrint ('NavInfo10mps bound');
}
function speed100Bound (value, timestamp)
{
	tracePrint ('NavInfo100mps bound');
}
function speed1000Bound (value, timestamp)
{
	tracePrint ('NavInfo1000mps bound');
}
function alwaysPrint (text)
{
	Browser.println ('[NavSpeedMonitorScript] ' + text);
}
function tracePrint (text)
{
	if (traceEnabled) Browser.println ('[NavSpeedMonitorScript] ' + text);
}
]]>
      </Script>
      <ROUTE fromField='isBound' fromNode='NavInfoDefault' toField='speed1Bound' toNode='NavSpeedMonitorScript'/>
      <ROUTE fromField='isBound' fromNode='NavInfo10mps' toField='speed10Bound' toNode='NavSpeedMonitorScript'/>
      <ROUTE fromField='isBound' fromNode='NavInfo100mps' toField='speed100Bound' toNode='NavSpeedMonitorScript'/>
      <ROUTE fromField='isBound' fromNode='NavInfo1000mps' toField='speed1000Bound' toNode='NavSpeedMonitorScript'/>
    </Group>
  </Scene>
</X3D>