<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Immersive' version='3.3' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.3.xsd'>
  <head>
    <meta content='ScriptSimpleStateEvents.x3d' name='title'/>
    <meta content='A Script node drives an animated push button that turns a light on and off.' name='description'/>
    <meta content='Leonard Daly and Don Brutzman' name='creator'/>
    <meta content='10 June 2006' name='created'/>
    <meta content='20 October 2019' name='modified'/>
    <meta content='https://X3dGraphics.com' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dResources.html' name='reference'/>
    <meta content='Copyright 2006, Daly Realism and Don Brutzman' name='rights'/>
    <meta content='X3D book, X3D graphics, X3D-Edit, http://www.x3dGraphics.com' name='subject'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter09EventUtilitiesScripting/ScriptSimpleStateEvents.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 title='ScriptSimpleStateEvents.x3d'/>
    <Background skyColor='1 1 1'/>
    <Viewpoint description='click switch to toggle light' orientation='-0.993 0.101 -0.063 1.06' position='0.06 3.63 2.29'/>
    <Transform DEF='PushBox' translation='-2 0 0'>
      <Transform DEF='ControlBox'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 .8 0'/>
          </Appearance>
          <Box size='1 .5 1'/>
        </Shape>
      </Transform>
      <Transform DEF='ControlButton' translation='0 .25 0'>
        <TouchSensor DEF='ButtonTouch' description='touch to toggle'/>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0 0'/>
          </Appearance>
          <Cylinder DEF='Button' bottom='false' height='.5' radius='.25'/>
        </Shape>
        <PositionInterpolator DEF='ButtonMover' key='0 1' keyValue='0 .25 0 0 .05 0'/>
        <TimeSensor DEF='ButtonTimer'/>
        <ROUTE fromField='touchTime' fromNode='ButtonTouch' toField='startTime' toNode='ButtonTimer'/>
        <ROUTE fromField='fraction_changed' fromNode='ButtonTimer' toField='set_fraction' toNode='ButtonMover'/>
        <ROUTE fromField='value_changed' fromNode='ButtonMover' toField='translation' toNode='ControlButton'/>
      </Transform>
    </Transform>
    <Transform DEF='Lamp' translation='1 0 0'>
      <Transform DEF='Base'>
        <Shape>
          <Appearance>
            <Material/>
          </Appearance>
          <Cylinder height='.5' radius='.25'/>
        </Shape>
      </Transform>
      <Transform DEF='Bulb' translation='0 .5 0'>
        <Shape>
          <Appearance>
            <Material DEF='LightBulbMaterial' diffuseColor='.4 .4 .4'/>
          </Appearance>
          <Sphere radius='.5'/>
        </Shape>
      </Transform>
    </Transform>
    <Script DEF='ControlScript' url='"ScriptSimpleStateEvents.js" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter09EventUtilitiesScripting/ScriptSimpleStateEvents.js"'>
      <field accessType='initializeOnly' name='buttonDown' type='SFBool' value='false'/>
      <field accessType='inputOnly' name='buttonTimerActive' type='SFBool'/>
      <field accessType='outputOnly' name='newButtonPath' type='MFVec3f'/>
      <field accessType='outputOnly' name='lightColor' type='SFColor'/>
    </Script>
    <ROUTE fromField='isActive' fromNode='ButtonTimer' toField='buttonTimerActive' toNode='ControlScript'/>
    <ROUTE fromField='newButtonPath' fromNode='ControlScript' toField='keyValue' toNode='ButtonMover'/>
    <ROUTE fromField='lightColor' fromNode='ControlScript' toField='diffuseColor' toNode='LightBulbMaterial'/>
  </Scene>
</X3D>