<?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 name='titlecontent=' MetadataPrototypes.x3d '/>
<meta name='descriptioncontent='New X3D Metadata nodes in Core component (MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString) implemented as prototypes for backwards compatibility with VRML 97.'/>
<meta name='creatorcontent='Don Brutzman'/>
<meta name='createdcontent='17 November 2003'/>
<meta name='modifiedcontent='12 March 2021'/>
<meta name='referencecontent=' MetadataExamples.x3d '/>
<meta name='subjectcontent='Metadata nodes, X3D Core component (MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString)'/>
<meta name='referencecontent=' https://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/core.html#Metadata '/>
<meta name='referencecontent=' https://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/core.html#X3DMetadataObject '/>
<meta name='referencecontent=' https://www.web3d.org/files/specifications/19775-1/V3.3/Part01/components/core.html#Nodereference '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/development/MetadataPrototypes.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!-- -->
<Scene>
<!-- ==================== -->
<ProtoDeclare name='MetadataBooleanappinfo='MetadataBoolean contains a list of booleans in the value field.' >
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='valuetype='MFBoolaccessType='inputOutput'/>
<field name='referencetype='SFStringaccessType='inputOutput'/>
<field name='metadatatype='SFNodeaccessType='inputOutput'
 appinfo='Metadata node only' >
<!-- initialization node (if any) goes here -->
</field>
</ProtoInterface>
<ProtoBody>
<WorldInfo info='"WorldInfo as first node in the ProtoBody precludes any possible rendering of further nodes in this prototype"'/>
<Group>
<IS>
<connect nodeField='metadataprotoField='metadata'/>
</IS>
<!-- name holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='name'/>
</IS>
</Viewpoint>
<!-- value holder; IS/connect possibilities are limited since no MFBool fields exist in other VRML/X3D nodes -->
<!-- Alternative: no metadata holder, since there is no exposedField SFNode in VRML 97. metadata SFNode simply sits in the ProtoInterface. Run-time instantiation support may vary. -->
<Script
  url=' "ignoreWarning.js" "https://www.web3d.org/x3d/content/examples/Basic/development/ignoreWarning.js" ' >
<field name='booleanArraytype='MFBoolaccessType='inputOutput'/>
<IS>
<connect nodeField='booleanArrayprotoField='value'/>
</IS>
</Script>
<!-- reference holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='reference'/>
</IS>
</Viewpoint>
</Group>
</ProtoBody>
</ProtoDeclare>
<!-- ==================== -->
<ProtoDeclare name='MetadataDoubleappinfo='MetadataDouble contains a list of double-precision floating-point numbers in the value field.' >
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='valuetype='MFDoubleaccessType='inputOutput'/>
<field name='referencetype='SFStringaccessType='inputOutput'/>
<field name='metadatatype='SFNodeaccessType='inputOutput'
 appinfo='[X3DMetadataObject]' >
<!-- Specification initialization: NULL node -->
</field>
</ProtoInterface>
<ProtoBody>
<WorldInfo info='"WorldInfo as first node in the ProtoBody precludes any possible rendering of further nodes in this prototype"'/>
<Group>
<IS>
<connect nodeField='metadataprotoField='metadata'/>
</IS>
<!-- name holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='name'/>
</IS>
</Viewpoint>
<!-- value holder: X3D MFDouble maps to VRML 97MFFloat -->
<Shape>
<Text string='""'>
<IS>
<connect nodeField='lengthprotoField='value'/>
</IS>
</Text>
<Appearance DEF='HideWarnings2'>
<!-- note that each Prototype has an independent DEF/USE namespace, and thus must avoid re-using identical DEF names within multiple prototype declarations in order to pass all validation requirements. -->
<Material/>
</Appearance>
</Shape>
<!-- reference holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='reference'/>
</IS>
</Viewpoint>
<!-- no metadata holder, since there is no exposedField SFNode in VRML 97. metadata SFNode simply sits in the ProtoInterface. Run-time instantiation support may vary. -->
</Group>
</ProtoBody>
</ProtoDeclare>
<!-- ==================== -->
<ProtoDeclare name='MetadataFloatappinfo='MetadataFloat contains a list of floating-point numbers in the value field.' >
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='valuetype='MFFloataccessType='inputOutput'/>
<field name='referencetype='SFStringaccessType='inputOutput'/>
<field name='metadatatype='SFNodeaccessType='inputOutput'
 appinfo='[X3DMetadataObject]' >
<!-- Specification initialization: NULL node -->
</field>
</ProtoInterface>
<ProtoBody>
<WorldInfo info='"WorldInfo as first node in the ProtoBody precludes any possible rendering of further nodes in this prototype"'/>
<Group>
<IS>
<connect nodeField='metadataprotoField='metadata'/>
</IS>
<!-- name holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='name'/>
</IS>
</Viewpoint>
<!-- value holder -->
<Shape>
<Text string='""'>
<IS>
<connect nodeField='lengthprotoField='value'/>
</IS>
</Text>
<Appearance DEF='HideWarnings3'>
<!-- note that each Prototype has an independent DEF/USE namespace, and thus must avoid re-using identical DEF names within multiple prototype declarations in order to pass all validation requirements. -->
<Material/>
</Appearance>
</Shape>
<!-- reference holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='reference'/>
</IS>
</Viewpoint>
<!-- no metadata holder, since there is no exposedField SFNode in VRML 97. metadata SFNode simply sits in the ProtoInterface. Run-time instantiation support may vary. -->
</Group>
</ProtoBody>
</ProtoDeclare>
<!-- ==================== -->
<ProtoDeclare name='MetadataIntegerappinfo='MetadataInteger contains a list of 32-bit integer numbers in the value field.' >
<!-- VRML 97 has no native exposedField MFInt32, and so must split value accessors to match available accessTypes. -->
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='valuetype='MFInt32accessType='initializeOnly'/>
<field name='set_valuetype='MFInt32accessType='inputOnly'/>
<field name='referencetype='SFStringaccessType='inputOutput'/>
<field name='metadatatype='SFNodeaccessType='inputOutput'
 appinfo='[X3DMetadataObject]' >
<!-- Specification initialization: NULL node -->
</field>
</ProtoInterface>
<ProtoBody>
<WorldInfo info='"WorldInfo as first node in the ProtoBody precludes any possible rendering of further nodes in this prototype"'/>
<Group>
<IS>
<connect nodeField='metadataprotoField='metadata'/>
</IS>
<!-- name holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='name'/>
</IS>
</Viewpoint>
<!-- value holder -->
<Shape>
<IndexedLineSet>
<IS>
<connect nodeField='colorIndexprotoField='value'/>
<connect nodeField='set_colorIndexprotoField='set_value'/>
</IS>
</IndexedLineSet>
<Appearance DEF='HideWarnings4'>
<!-- note that each Prototype has an independent DEF/USE namespace, and thus must avoid re-using identical DEF names within multiple prototype declarations in order to pass all validation requirements. -->
<Material emissiveColor='0.8 0.8 0.8'/>
</Appearance>
</Shape>
<!-- reference holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='reference'/>
</IS>
</Viewpoint>
<!-- no metadata holder, since there is no exposedField SFNode in VRML 97. metadata SFNode simply sits in the ProtoInterface. Run-time instantiation support may vary. -->
</Group>
</ProtoBody>
</ProtoDeclare>
<!-- ==================== -->
<ProtoDeclare name='MetadataSetappinfo='MetadataSet contains a list of Metadata nodes in the value field. MetadataSet can contain other MetadataSet nodes.' >
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='valuetype='MFNodeaccessType='inputOutput'>
<!-- Specification initialization: NULL node -->
</field>
<field name='referencetype='SFStringaccessType='inputOutput'/>
<field name='metadatatype='SFNodeaccessType='inputOutput'
 appinfo='[X3DMetadataObject]' >
<!-- Specification initialization: NULL node -->
</field>
</ProtoInterface>
<ProtoBody>
<WorldInfo info='"WorldInfo as first node in the ProtoBody precludes any possible rendering of further nodes in this prototype"'/>
<Group>
<IS>
<connect nodeField='metadataprotoField='metadata'/>
</IS>
<!-- name holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='name'/>
</IS>
</Viewpoint>
<!-- value holder -->
<Group>
<IS>
<connect nodeField='childrenprotoField='value'/>
</IS>
</Group>
<!-- reference holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='reference'/>
</IS>
</Viewpoint>
<!-- no metadata holder, since there is no exposedField SFNode in VRML 97. metadata SFNode simply sits in the ProtoInterface. Run-time instantiation support may vary. -->
</Group>
</ProtoBody>
</ProtoDeclare>
<!-- ==================== -->
<ProtoDeclare name='MetadataStringappinfo='MetadataString contains a list of strings in the value field.' >
<ProtoInterface>
<field name='nametype='SFStringaccessType='inputOutput'/>
<field name='valuetype='MFStringaccessType='inputOutput'/>
<field name='referencetype='SFStringaccessType='inputOutput'/>
<field name='metadatatype='SFNodeaccessType='inputOutput'
 appinfo='Metadata node only' >
<!-- Specification initialization: NULL node -->
</field>
</ProtoInterface>
<ProtoBody>
<WorldInfo info='"WorldInfo as first node in the ProtoBody precludes any possible rendering of further nodes in this prototype"'/>
<Group>
<IS>
<connect nodeField='metadataprotoField='metadata'/>
</IS>
<!-- name holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='name'/>
</IS>
</Viewpoint>
<!-- value holder -->
<Shape>
<Text>
<IS>
<connect nodeField='stringprotoField='value'/>
</IS>
</Text>
<Appearance DEF='HideWarnings5'>
<!-- note that each Prototype has an independent DEF/USE namespace, and thus must avoid re-using identical DEF names within multiple prototype declarations in order to pass all validation requirements. -->
<Material/>
</Appearance>
</Shape>
<!-- reference holder -->
<Viewpoint>
<IS>
<connect nodeField='descriptionprotoField='reference'/>
</IS>
</Viewpoint>
<!-- no metadata holder, since there is no exposedField SFNode in VRML 97. metadata SFNode simply sits in the ProtoInterface. Run-time instantiation support may vary. -->
</Group>
</ProtoBody>
</ProtoDeclare>
<!-- ==================== -->
<Background groundColor='0.25 0.25 0.25skyColor='0.25 0.25 0.25'/>
<Anchor DEF='LinkToExamplesdescription='link to examples'
  url=' MetadataExamples.x3d"https://www.web3d.org/x3d/content/examples/Basic/development/MetadataExamples.x3d" "MetadataExamples.wrl" "https://www.web3d.org/x3d/content/examples/Basic/development/MetadataExamples.wrl" ' >
<Shape>
<Appearance>
<Material diffuseColor='0.8 0.6 0.2'/>
</Appearance>
<Text string='"MetadataPrototypes" "is a developmental file." "Click this text to view" "MetadataExamples"'>
<FontStyle justify='"MIDDLE" "MIDDLE"size='0.75'/>
</Text>
</Shape>
</Anchor>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: HideWarnings2, HideWarnings3, HideWarnings4, HideWarnings5, LinkToExamples

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5, Viewpoint_6, Viewpoint_7, Viewpoint_8, Viewpoint_9, Viewpoint_10, Viewpoint_11, Viewpoint_12

Index for ProtoDeclare definitions: MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataSet, MetadataString
-->

Event Graph ROUTE Table with 0 ROUTE total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.


-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/development/MetadataPrototypesIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/development/MetadataPrototypes.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
    <ProtoDeclare name='ProtoName'> <field name='fieldName'/> </ProtoDeclare> -->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->