<xs:complexType name="X3DPickSensorNode" abstract="true">
<xs:annotation>
<xs:appinfo>
<!-- optional values, can be extended -->
<xs:attribute name="objectType" type="pickableObjectTypeValues"/>
<!-- optional values, can be extended -->
<xs:attribute name="intersectionType" type="intersectionTypeValues"/>
<xs:element name="pickingGeometry" type="SFNode" fixed="inputOutputField" default="X3DGeometryNode"/>
<xs:element name="pickTarget" type="MFNode" fixed="inputOutputField" default="X3DGroupingNode|X3DShapeNode|Inline"/>
<xs:element name="pickedGeometry" type="MFNode" fixed="outputOnlyField" default="X3DChildNode"/>
<xs:attribute name="componentName" type="xs:NMTOKEN" fixed="Picking"/>
<xs:attribute name="componentLevel" type="xs:positiveInteger" fixed="1"/>
</xs:appinfo>
<xs:documentation source="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/picking.html#X3DPickSensorNode"/>
</xs:annotation>
<xs:complexContent>
<xs:extension base="X3DSensorNode">
<xs:attribute name="intersectionType" type="SFString" default="BOUNDS"/>
<xs:attribute name="matchCriterion" default="MATCH_ANY">
<xs:simpleType>
<xs:restriction base="SFString">
<xs:enumeration value="MATCH_ANY"/>
<xs:enumeration value="MATCH_EVERY"/>
<xs:enumeration value="MATCH_ONLY_ONE"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="objectType" type="MFString" default=""ALL""/>
<xs:attribute name="sortOrder" default="CLOSEST">
<xs:simpleType>
<xs:restriction base="SFString">
<xs:enumeration value="ANY"/>
<xs:enumeration value="CLOSEST"/>
<xs:enumeration value="ALL"/>
<xs:enumeration value="ALL_SORTED"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
<!-- Content model for X3DPickingSensorNode types first has varied singleton pickingGeometry node, followed by pickTarget. -->
<!-- Order of contained nodes is significant, singleton pickingGeometry shall precede pickTarget node array. This matches DTD content model. -->
<!-- Because each of the nodes implementing X3DPickingSensorNode has a different content model, based on different pickingGeometry constraints,
the content model is moved out of X3DPickingSensorNode and customized for each of the nodes. -->
</xs:complexContent>
</xs:complexType> |