<?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='Example04.x3d' name='title'/>
    <meta content='Don Brutzman' name='creator'/>
    <meta content='24 May 2000' name='created'/>
    <meta content='28 October 2019' name='modified'/>
    <meta content='X3D working group' name='creator'/>
    <meta content='VRML 97 specification example: Prototype' name='description'/>
    <meta content='originals/exampleD_4.wrl' name='reference'/>
    <meta content='VRML 97, ISO/IEC 14772-1, Part 1: Functional specification and UTF-8 encoding, D.4 Prototype example' name='specificationSection'/>
    <meta content='https://www.web3d.org/documents/specifications/14772/V2.0/part1/examples.html#D.4' name='specificationUrl'/>
    <meta content='https://www.web3d.org/x3d/content/examples/Basic/Vrml97Specification/Example04.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='Example04.x3d'/>
    <ProtoDeclare name='TwoColorTable'>
      <ProtoInterface>
        <field accessType='initializeOnly' name='legColor' type='SFColor' value='.8 .4 .7'/>
        <field accessType='initializeOnly' name='topColor' type='SFColor' value='.6 .6 .1'/>
      </ProtoInterface>
      <ProtoBody>
        <Transform>
          <Transform translation='0.0 0.6 0.0'>
            <!-- table top -->
            <Shape>
              <Appearance>
                <Material DEF='TableTopMaterial'>
                  <IS>
                    <connect nodeField='diffuseColor' protoField='topColor'/>
                  </IS>
                </Material>
              </Appearance>
              <Box size='1.2 0.2 1.2'/>
            </Shape>
          </Transform>
          <Transform translation='-0.5 0.0 -0.5'>
            <!-- first table leg -->
            <Shape DEF='Leg'>
              <Appearance>
                <Material DEF='LegMaterial' diffuseColor='1.0 0.0 0.0'>
                  <IS>
                    <connect nodeField='diffuseColor' protoField='legColor'/>
                  </IS>
                </Material>
              </Appearance>
              <Cylinder height='1.0' radius='0.1'/>
            </Shape>
          </Transform>
          <Transform translation='0.5 0.0 -0.5'>
            <!-- another table leg -->
            <Shape USE='Leg'/>
          </Transform>
          <Transform translation='-0.5 0.0 0.5'>
            <!-- another table leg -->
            <Shape USE='Leg'/>
          </Transform>
          <Transform translation='0.5 0.0 0.5'>
            <!-- another table leg -->
            <Shape USE='Leg'/>
          </Transform>
          <!-- End of root Transform's children -->
        </Transform>
        <!-- End of root Transform -->
      </ProtoBody>
    </ProtoDeclare>
    <!-- End of prototype -->
    <!-- The prototype is now defined. Although it contains a -->
    <!-- number of nodes, only the legColor and topColor fields -->
    <!-- are public. Instead of using the default legColor and -->
    <!-- topColor, this instance of the table has red legs and -->
    <!-- a green top: -->
    <ProtoInstance name='TwoColorTable'>
      <fieldValue name='legColor' value='1 0 0'/>
      <fieldValue name='topColor' value='0 1 0'/>
    </ProtoInstance>
    <NavigationInfo type='"EXAMINE"'/>
    <!-- Use the Examine viewer -->
  </Scene>
</X3D>