<?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='MaterialToggleExample.x3d' name='title'/>
    <meta content='Example for toggle-able Material node that can switch between 2 sets of material values, selectable at run time.' name='description'/>
    <meta content='Don Brutzman and MV4205 class' name='creator'/>
    <meta content='2 May 2004' name='created'/>
    <meta content='28 November 2019' name='modified'/>
    <meta content='MaterialTogglePrototype.x3d' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/Savage/Tools/Animation/MaterialToggleExample.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='MaterialToggleExample.x3d'/>
    <ExternProtoDeclare appinfo='MaterialToggle selects one of two different Material values' name='MaterialToggle' url='"MaterialTogglePrototype.x3d#MaterialToggle" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Animation/MaterialTogglePrototype.x3d#MaterialToggle" "MaterialTogglePrototype.wrl#MaterialToggle" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Animation/MaterialTogglePrototype.wrl#MaterialToggle"'>
      <field accessType='inputOnly' name='set_toggle' type='SFBool'/>
      <field accessType='initializeOnly' appinfo='whether to use DefaultMaterial or ToggleMaterial' name='toggle' type='SFBool'/>
      <field accessType='outputOnly' name='toggle_changed' type='SFBool'/>
      <field accessType='initializeOnly' appinfo='Material node that is enabled when toggle=false' name='defaultMaterial' type='SFNode'/>
      <field accessType='initializeOnly' appinfo='Material node that is enabled when toggle=true' name='toggleMaterial' type='SFNode'/>
      <field accessType='inputOnly' appinfo='provide replacement default Material node' name='set_defaultMaterial' type='SFNode'/>
      <field accessType='inputOnly' appinfo='provide replacement toggle Material node' name='set_toggleMaterial' type='SFNode'/>
    </ExternProtoDeclare>
    <!-- ==================== -->
    <Viewpoint description='touch box to toggle material' orientation='1 0 0 -0.79' position='0 5 5'/>
    <Transform rotation='0 1 0 0.79'>
      <Shape>
        <Box/>
        <Appearance>
          <ProtoInstance DEF='MT' containerField='material' name='MaterialToggle'>
            <fieldValue name='toggle' value='true'/>
            <fieldValue name='defaultMaterial'>
              <Material ambientIntensity='0.24' diffuseColor='1 0.452381 0.40339' shininess='0.9' specularColor='0.686486 0.396903 0.419275'>
                <!-- Universal Media Library: ArtDeco 3 -->
              </Material>
            </fieldValue>
            <fieldValue name='toggleMaterial'>
              <Material ambientIntensity='0.24' diffuseColor='0.330519 0.3389 0.6' shininess='0.78' specularColor='0.290909 0.290909 0.290909'>
                <!-- Universal Media Library: ArtDeco 8 -->
              </Material>
            </fieldValue>
          </ProtoInstance>
        </Appearance>
      </Shape>
      <TouchSensor DEF='TS' description='touch to toggle'/>
      <ROUTE fromField='isActive' fromNode='TS' toField='set_toggle' toNode='MT'/>
    </Transform>
  </Scene>
</X3D>