Class ComposedShaderObject

  • All Implemented Interfaces:
    X3DNode, ComposedShader, X3DProgrammableShaderObject, X3DShaderNode, X3DAppearanceChildNode

    public class ComposedShaderObject
    extends X3DConcreteNode
    implements ComposedShader
    ComposedShader can contain field declarations, but no CDATA section of plain-text source code, since programs are composed from child ShaderPart nodes.

    X3D node tooltip: (X3D version 3.1 or later) [X3DShaderNode,X3DProgrammableShaderObject] ComposedShader defines a shader where the individual source files are assembled from contained ShaderPart program sections. All access to shading capabilities is defined through a single interface that applies to all parts.
    • Hint: ComposedShader contains field declarations and then corresponding IS/connect statements (if any), followed by <ShaderPart containerField='parts'/> nodes.
    • Warning: ComposedShader does not contain CDATA section of plain-text source code. All source programs are contained in child ShaderPart nodes.
    • Hint: apply default containerField='shaders' when parent node is Appearance.

    Package hint: This org.web3d.x3d.jsail concrete class is used for implementing a standalone X3D object as a Plain Old Java Object (POJO). If you are writing Java code for use inside an X3D Script node, compile separate code using only the org.web3d.x3d.sai package instead.
    See Also:
    X3D Abstract Specification: ComposedShader, X3D Tooltips: ComposedShader, X3D Scene Authoring Hints
    • Field Detail

      • shaderLanguageValues

        public static final java.util.ArrayList<java.lang.String> shaderLanguageValues
        List of specification-defined enumeration values, with additional author-defined enumeration values not allowed.

        Allowed values: "Cg", "GLSL", "HLSL".

        Suggested values for the language field in shader nodes include "Cg" "GLSL" "HLSL", other values are optionally supported by browsers. Used to optionally determine the language type if no MIME-type information is available. Unbounded, additional values are possible.
        See Also:
        https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/shaders.html#X3DShaderNode
      • LANGUAGE_CG

        public static final java.lang.String LANGUAGE_CG
        SFString field named language with X3DUOM baseType shaderLanguageValues can equal this value "Cg" (Java syntax) or Cg (XML syntax).
        See Also:
        shaderLanguageValues, Constant Field Values
      • LANGUAGE_GLSL

        public static final java.lang.String LANGUAGE_GLSL
        SFString field named language with X3DUOM baseType shaderLanguageValues can equal this value "GLSL" (Java syntax) or GLSL (XML syntax).
        See Also:
        shaderLanguageValues, Constant Field Values
      • LANGUAGE_HLSL

        public static final java.lang.String LANGUAGE_HLSL
        SFString field named language with X3DUOM baseType shaderLanguageValues can equal this value "HLSL" (Java syntax) or HLSL (XML syntax).
        See Also:
        shaderLanguageValues, Constant Field Values
      • NAME

        public static final java.lang.String NAME
        String constant NAME provides name of this element: ComposedShader.
        See Also:
        Constant Field Values
      • COMPONENT

        public static final java.lang.String COMPONENT
        String constant COMPONENT defines X3D component for the ComposedShader element: Shaders
        See Also:
        Constant Field Values
      • LEVEL

        public static final int LEVEL
        Integer constant LEVEL provides default X3D Shaders component level for this element: 1
        See Also:
        Constant Field Values
      • IS_DEFAULT_VALUE

        public static final ISObject IS_DEFAULT_VALUE
        SFNode field named IS has default value null (Java syntax) or NULL (XML syntax).
      • LANGUAGE_DEFAULT_VALUE

        public static final java.lang.String LANGUAGE_DEFAULT_VALUE
        SFString field named language has default value equal to an empty string.
        See Also:
        Constant Field Values
      • METADATA_DEFAULT_VALUE

        public static final X3DMetadataObject METADATA_DEFAULT_VALUE
        SFNode field named metadata has default value null (Java syntax) or NULL (XML syntax).
      • toField_ACTIVATE

        public static final java.lang.String toField_ACTIVATE
        toField ROUTE name for SFBool field named activate.
        See Also:
        Constant Field Values
      • fromField_IS

        public static final java.lang.String fromField_IS
        fromField ROUTE name for SFNode field named IS.
        See Also:
        Constant Field Values
      • fromField_ISSELECTED

        public static final java.lang.String fromField_ISSELECTED
        fromField ROUTE name for SFBool field named isSelected.
        See Also:
        Constant Field Values
      • fromField_ISVALID

        public static final java.lang.String fromField_ISVALID
        fromField ROUTE name for SFBool field named isValid.
        See Also:
        Constant Field Values
      • fromField_METADATA

        public static final java.lang.String fromField_METADATA
        fromField ROUTE name for SFNode field named metadata.
        See Also:
        Constant Field Values
      • toField_METADATA

        public static final java.lang.String toField_METADATA
        toField ROUTE name for SFNode field named metadata.
        See Also:
        Constant Field Values
      • fromField_PARTS

        public static final java.lang.String fromField_PARTS
        fromField ROUTE name for MFNode field named parts.
        See Also:
        Constant Field Values
      • toField_PARTS

        public static final java.lang.String toField_PARTS
        toField ROUTE name for MFNode field named parts.
        See Also:
        Constant Field Values
    • Constructor Detail

      • ComposedShaderObject

        public ComposedShaderObject()
        Constructor for ComposedShaderObject to initialize member variables with default values.
      • ComposedShaderObject

        public ComposedShaderObject​(java.lang.String DEFlabel)
        Utility constructor that assigns DEF label after initializing member variables with default values.
        Parameters:
        DEFlabel - unique DEF name for this X3D node
    • Method Detail

      • getElementName

        public final java.lang.String getElementName()
        Provides name of this element: ComposedShader
        Specified by:
        getElementName in class X3DConcreteElement
        Returns:
        name of this element
      • getComponent

        public final java.lang.String getComponent()
        Defines X3D component for the ComposedShader element: Shaders
        Specified by:
        getComponent in class X3DConcreteElement
        Returns:
        X3D component for this element
      • getComponentLevel

        public final int getComponentLevel()
        Provides default X3D component level for this element: 1
        Specified by:
        getComponentLevel in class X3DConcreteElement
        Returns:
        default X3D component level for this element
      • getFieldType

        public java.lang.String getFieldType​(java.lang.String fieldName)
        Indicate type corresponding to given fieldName.
        Specified by:
        getFieldType in class X3DConcreteElement
        Parameters:
        fieldName - name of field in this X3D node
        Returns:
        X3D type (SFvec3f etc.), otherwise ConfigurationProperties.ERROR_UNKNOWN_FIELD_TYPE if not recognized
        See Also:
        ConfigurationProperties.ERROR_UNKNOWN_FIELD_TYPE
      • getAccessType

        public java.lang.String getAccessType​(java.lang.String fieldName)
        Indicate accessType corresponding to given fieldName.
        Specified by:
        getAccessType in class X3DConcreteElement
        Parameters:
        fieldName - name of field in this X3D node
        Returns:
        X3D accessType (inputOnly etc.), otherwise ConfigurationProperties.ERROR_UNKNOWN_FIELD_ACCESSTYPE if not recognized
        See Also:
        ConfigurationProperties.ERROR_UNKNOWN_FIELD_ACCESSTYPE
      • initialize

        public final void initialize()
        Initialize all member variables to default values.
        Overrides:
        initialize in class X3DConcreteNode
      • setActivate

        public ComposedShaderObject setActivate​(boolean newValue)
        Accessor method to assign boolean value to inputOnly SFBool field named activate.

        Tooltip: activate forces the shader to activate the contained objects.
        • Warning: it is an error to define this transient inputOnly field in an X3D file, instead only use it a destination for ROUTE events.
        Specified by:
        setActivate in interface ComposedShader
        Specified by:
        setActivate in interface X3DShaderNode
        Parameters:
        newValue - is new value for the activate field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setActivate

        public ComposedShaderObject setActivate​(SFBoolObject newValue)
        Assign typed object value to SFBool activate field, similar to setActivate(boolean).
        Parameters:
        newValue - is new value for the activate field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • getFieldList

        public java.util.ArrayList<fieldObject> getFieldList()
        Provide array of fieldObject results (using an array consisting of properly typed nodes or ProtoInstanceObjects) from inputOutput MFNode field field.

        Tooltip: Include field statements for each field declaration in the ComposedShader node. *


        Warning: according to X3D Unified Object Model (X3DUOM), acceptable node types are limited to field.
        Returns:
        value of field
        See Also:
        fieldObject
      • setFieldList

        public ComposedShaderObject setFieldList​(java.util.ArrayList<fieldObject> newValue)
        Accessor method to assign fieldObject array (using an array consisting of properly typed nodes or ProtoInstanceObjects) to inputOutput MFNode field field.

        Tooltip: Include field statements for each field declaration in the ComposedShader node. *


        Note: according to X3D Unified Object Model (X3DUOM), acceptable node types are limited to field.
        Parameters:
        newValue - is new value for the field field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setField

        public ComposedShaderObject setField​(fieldObject newValue)
        Set single child field node, replacing prior array of existing nodes (if any).

        Note: according to X3D Unified Object Model (X3DUOM), acceptable node types are restricted to field.
        Parameters:
        newValue - is new node for the field field (restricted to field)
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • clearField

        public ComposedShaderObject clearField()
        Utility method to clear MFNode value of fieldList field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • hasField

        public boolean hasField()
        Indicate whether an object is available for inputOutput MFNode field fieldList.
        Returns:
        whether a concrete statement array or CommentsBlock is available.
        See Also:
        getFieldList()
      • clearIS

        public ComposedShaderObject clearIS()
        Utility method to clear SFNode value of IS field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • hasIS

        public boolean hasIS()
        Indicate whether an object is available for inputOutput SFNode field IS.
        Returns:
        whether a concrete statement or CommentsBlock is available.
        See Also:
        getIS()
      • getIsSelected

        public boolean getIsSelected()
        Provide boolean value from outputOnly SFBool field named isSelected.

        Tooltip: isSelected indicates this shader instance is selected for use by browser
        • Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.
        Specified by:
        getIsSelected in interface ComposedShader
        Specified by:
        getIsSelected in interface X3DShaderNode
        Returns:
        value of isSelected field
      • getIsValid

        public boolean getIsValid()
        Provide boolean value from outputOnly SFBool field named isValid.

        Tooltip: isValid indicates whether current shader objects can be run as a shader program.
        • Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.
        Specified by:
        getIsValid in interface ComposedShader
        Specified by:
        getIsValid in interface X3DShaderNode
        Returns:
        value of isValid field
      • getLanguage

        public java.lang.String getLanguage()
        Provide String enumeration value ( baseType shaderLanguageValues) ["Cg" | "GLSL" | "HLSL" | 'etc.'] from initializeOnly SFString field named language.

        Tooltip: The language field indicates to the X3D player which shading language is used. The language field may be used to optionally determine the language type if no MIME-type information is available.
        • Hint: recognized values include "Cg" "GLSL" "HLSL".


        Available enumeration values for string comparison: CG, GLSL, HLSL.
        Specified by:
        getLanguage in interface ComposedShader
        Specified by:
        getLanguage in interface X3DShaderNode
        Returns:
        value of language field
      • setLanguage

        public ComposedShaderObject setLanguage​(java.lang.String newValue)
        Accessor method to assign String enumeration value ("Cg" | "GLSL" | "HLSL") to initializeOnly SFString field named language.

        Hint: authors have option to choose from an extendible list of predefined enumeration values (CG, GLSL, HLSL).

        Tooltip: The language field indicates to the X3D player which shading language is used. The language field may be used to optionally determine the language type if no MIME-type information is available.
        • Hint: recognized values include "Cg" "GLSL" "HLSL".
        Specified by:
        setLanguage in interface ComposedShader
        Specified by:
        setLanguage in interface X3DShaderNode
        Parameters:
        newValue - is new value for the language field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setLanguage

        public ComposedShaderObject setLanguage​(SFStringObject newValue)
        Assign typed object value to SFString language field, similar to setLanguage(String).
        Parameters:
        newValue - is new value for the language field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • clearMetadata

        public ComposedShaderObject clearMetadata()
        Utility method to clear SFNode value of metadata field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • hasMetadata

        public boolean hasMetadata()
        Indicate whether an object is available for inputOutput SFNode field metadata.
        Returns:
        whether a properly typed node or ProtoInstance or CommentsBlock is available.
        See Also:
        getMetadata(), getMetadataProtoInstance(), X3D Scene Authoring Hints: Metadata Nodes
      • getParts

        public X3DNode[] getParts()
        Provide array of ShaderPartObject results (using an array consisting of properly typed nodes or ProtoInstanceObjects) from inputOutput MFNode field parts.

        Tooltip: [ShaderPart] Multiple ShaderPart nodes contained in the ComposedShader node. *


        Warning: according to X3D Unified Object Model (X3DUOM), acceptable node types are limited to ShaderPart.
        Specified by:
        getParts in interface ComposedShader
        Returns:
        value of parts field
        See Also:
        ShaderPartObject
      • getPartsList

        public java.util.ArrayList<X3DNode> getPartsList()
        Utility method to get ArrayList value of MFNode parts field, similar to getParts().
        Returns:
        value of parts field
      • setParts

        public ComposedShaderObject setParts​(X3DNode[] newValue)
        Accessor method to assign ShaderPartObject array (using an array consisting of properly typed nodes or ProtoInstanceObjects) to inputOutput MFNode field parts.

        Tooltip: [ShaderPart] Multiple ShaderPart nodes contained in the ComposedShader node. *


        Note: according to X3D Unified Object Model (X3DUOM), acceptable node types are limited to ShaderPart.
        Specified by:
        setParts in interface ComposedShader
        Parameters:
        newValue - is new value for the parts field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setParts

        public ComposedShaderObject setParts​(java.util.ArrayList<ShaderPartObject> newValue)
        Assign ArrayList value of MFNode parts field, similar to setParts(X3DNode[]).
        Parameters:
        newValue - is new value for the parts field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • addParts

        public ComposedShaderObject addParts​(ShaderPartObject newValue)
        Add single child node to existing array of parts nodes (if any).

        Note: according to X3D Unified Object Model (X3DUOM), acceptable node types are limited to ShaderPart and ProtoInstance.
        Parameters:
        newValue - is new value to be appended the parts field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • addParts

        public ComposedShaderObject addParts​(ProtoInstanceObject newValue)
        Add single ProtoInstanceObject (with appropriate node type and containerField value) to MFNode array for parts field.

        Note: according to X3D Unified Object Model (X3DUOM), acceptable node types are limited to ShaderPart and ProtoInstance.
        Parameters:
        newValue - is new value to be appended the parts field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • addParts

        public void addParts​(X3DNode[] newValue)
        Add array of child parts nodes to array of existing nodes (if any).

        Note: according to X3D Unified Object Model (X3DUOM), acceptable node types are limited to ShaderPart.
        Specified by:
        addParts in interface ComposedShader
        Parameters:
        newValue - is new value array to be appended the parts field.
      • setParts

        public void setParts​(X3DNode newValue)
        Set single child parts node, replacing prior array of existing nodes (if any).

        Note: according to X3D Unified Object Model (X3DUOM), acceptable node types are restricted to ShaderPart.
        Specified by:
        setParts in interface ComposedShader
        Parameters:
        newValue - is new node for the parts field (restricted to ShaderPart)
      • clearParts

        public ComposedShaderObject clearParts()
        Utility method to clear MFNode value of parts field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • hasParts

        public boolean hasParts()
        Indicate whether an object is available for inputOutput MFNode field parts.
        Returns:
        whether a properly typed node or ProtoInstance array or CommentsBlock is available.
        See Also:
        getParts()
      • setDEF

        public final ComposedShaderObject setDEF​(java.lang.String newValue)
        Accessor method to assign String value to inputOutput SFString field named DEF.

        Tooltip: DEF defines a unique ID name for this node, referenceable by other nodes.

        Note that setting the DEF value clears the USE value.
        Specified by:
        setDEF in class X3DConcreteNode
        Parameters:
        newValue - is new value for the DEF field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setDEF

        public ComposedShaderObject setDEF​(SFStringObject newValue)
        Assign typed object value to SFString DEF field, similar to setDEF(String).
        Parameters:
        newValue - is new value for the DEF field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • getUSE

        public java.lang.String getUSE()
        Provide String value from inputOutput SFString field named USE.

        Tooltip: USE means reuse an already DEF-ed node ID, excluding all child nodes and all other attributes (except for containerField, which can have a different value).
        • Hint: USE references to previously defined DEF geometry (instead of duplicating nodes) can improve performance.
        • Warning: do NOT include any child nodes, a DEF attribute, or any other attribute values (except for containerField) when defining a USE attribute.
        • Warning: each USE value must match a corresponding DEF value that is defined earlier in the scene.
        Overrides:
        getUSE in class X3DConcreteNode
        Returns:
        value of USE field
        See Also:
        X3D Scene Authoring Hints: Naming Conventions
      • setUSE

        public final ComposedShaderObject setUSE​(java.lang.String newValue)
        Accessor method to assign String value to inputOutput SFString field named USE.

        Tooltip: USE means reuse an already DEF-ed node ID, excluding all child nodes and all other attributes (except for containerField, which can have a different value).
        • Hint: USE references to previously defined DEF geometry (instead of duplicating nodes) can improve performance.
        • Warning: do NOT include any child nodes, a DEF attribute, or any other attribute values (except for containerField) when defining a USE attribute.
        • Warning: each USE value must match a corresponding DEF value that is defined earlier in the scene.


        Note: each USE node is still an independent object, with the USE value matching the DEF value in the preceding object.

        Warning: invoking the setUSE() method on this node resets all other fields to their default values (except for containerField) and also releases all child nodes.

        Warning: no other operations can be performed to modify a USE node other than setting an alternate containerField value.
        Specified by:
        setUSE in class X3DConcreteNode
        Parameters:
        newValue - is new value for the USE field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setUSE

        public ComposedShaderObject setUSE​(SFStringObject newValue)
        Assign typed object value to SFString USE field, similar to setUSE(String).
        Parameters:
        newValue - is new value for the USE field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • getCssClass

        public java.lang.String getCssClass()
        Provide String value from inputOutput SFString field named class.

        Tooltip: The class attribute is a space-separated list of classes, reserved for use by CSS cascading stylesheets.
        • Warning: currently the class attribute is only supported in XML encoding of X3D scenes.
        • Hint: W3C Cascading Style Sheets https://www.w3.org/Style/CSS
        Overrides:
        getCssClass in class X3DConcreteNode
        Returns:
        value of class field
        See Also:
        W3C Cascading Style Sheets
      • setCssClass

        public final ComposedShaderObject setCssClass​(java.lang.String newValue)
        Accessor method to assign String value to inputOutput SFString field named class.

        Tooltip: The class attribute is a space-separated list of classes, reserved for use by CSS cascading stylesheets.
        • Warning: currently the class attribute is only supported in XML encoding of X3D scenes.
        • Hint: W3C Cascading Style Sheets https://www.w3.org/Style/CSS
        Specified by:
        setCssClass in class X3DConcreteNode
        Parameters:
        newValue - is new value for the class field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
        See Also:
        W3C Cascading Style Sheets
      • setCssClass

        public ComposedShaderObject setCssClass​(SFStringObject newValue)
        Assign typed object value to SFString cssClass field, similar to setCssClass(String).
        Parameters:
        newValue - is new value for the class field.
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • setUSE

        public ComposedShaderObject setUSE​(ComposedShaderObject DEFnode)
        Assign a USE reference to another DEF node of same node type, similar to setUSE(String).

        Warning: note that the setUSE() method on this node resets all other fields to their default values (except for containerField) and also releases all child nodes.

        Warning: no other operations can be performed to modify a USE node other than setting an alternate containerField value.
        Parameters:
        DEFnode - must have a DEF value defined
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive method invocations on the same object).
      • addComments

        public ComposedShaderObject addComments​(java.lang.String newComment)
        Add comment as String to contained commentsList.
        Specified by:
        addComments in class X3DConcreteElement
        Parameters:
        newComment - initial value
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • addComments

        public ComposedShaderObject addComments​(java.lang.String[] newComments)
        Add comments as String[] array to contained commentsList.
        Specified by:
        addComments in class X3DConcreteElement
        Parameters:
        newComments - array of comments
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • findElementByNameValue

        public X3DConcreteElement findElementByNameValue​(java.lang.String nameValue)
        Recursive method to provide object reference to node or statement by name attribute, if found as part of this element or in a contained element. Elements with name fields include meta, Metadata* nodes, field/fieldValue, ProtoDeclare/ExternProtoDeclare/ProtoInstance, CAD and HAnim nodes.

        Warning: first start with findAncestorSceneObject() to check entire scene graph, or findAncestorX3DObject() to check entire model document.

        Warning: more than one element may be found that has the same name, this method does not handle that case.
        Specified by:
        findElementByNameValue in class X3DConcreteElement
        Parameters:
        nameValue - is value of the name field being searched for in this element and child elements(if any)
        Returns:
        object reference to found element, null otherwise
        See Also:
        findNodeByDEF(String), X3DConcreteElement.hasAncestorSceneObject(), X3DConcreteElement.findAncestorX3DObject()
      • findElementByNameValue

        public X3DConcreteElement findElementByNameValue​(java.lang.String nameValue,
                                                         java.lang.String elementName)
        Recursive method to provide object reference to node or statement by name attribute, if found as part of this element or in a contained element. Elements with name fields include meta, Metadata* nodes, field/fieldValue, ProtoDeclare/ExternProtoDeclare/ProtoInstance, CAD and HAnim nodes.

        Warning: first start with findAncestorSceneObject() to check entire scene graph, or findAncestorX3DObject() to check entire model document.

        Warning: more than one element may be found that has the same name, this method does not handle that case.
        Specified by:
        findElementByNameValue in class X3DConcreteElement
        Parameters:
        nameValue - is value of the name field being searched for in this element and child elements(if any)
        elementName - identifies the element of interest (meta MetadataString ProtoDeclare CADassembly ProtoInstance HAnimHumanoid etc.)
        Returns:
        object reference to found element, null otherwise
        See Also:
        findNodeByDEF(String), X3DConcreteElement.hasAncestorSceneObject(), X3DConcreteElement.findAncestorX3DObject()
      • hasElementByNameValue

        public boolean hasElementByNameValue​(java.lang.String nameValue,
                                             java.lang.String elementName)
        Recursive method to determine whether node or statement with given name attribute is found, meaning both objects are attached to same scene graph.
        Parameters:
        nameValue - is value of the name field being searched for in this element and child elements(if any)
        elementName - identifies the element of interest (meta MetadataString ProtoDeclare CADassembly ProtoInstance HAnimHumanoid etc.)
        Returns:
        whether node is found
        See Also:
        findElementByNameValue(String, String)
      • hasNodeByDEF

        public boolean hasNodeByDEF​(java.lang.String DEFvalue)
        Recursive method to determine whether node with DEFvalue is found, meaning both objects are attached to same scene graph.
        Parameters:
        DEFvalue - is value of the name field being searched for in this element and child elements(if any)
        Returns:
        whether node is found
        See Also:
        findNodeByDEF(String)
      • validate

        public java.lang.String validate()
        Recursive method to validate this element plus all contained nodes and statements, using both datatype-specification value checks and regular expression (regex) checking of corresponding string values.
        Specified by:
        validate in class X3DConcreteElement
        Returns:
        validation results (if any)
      • addField

        public ComposedShaderObject addField​(fieldObject newField)
        Add field to fieldList for this ComposedShaderObject
        Parameters:
        newField - is field to add
        Returns:
        ComposedShaderObject - namely this same object to allow sequential method pipelining (i.e. consecutive setAttribute method invocations).
      • removeField

        public boolean removeField​(fieldObject fieldToRemove)
        Remove a field from contained fieldList
        Parameters:
        fieldToRemove - matching field of interest
        Returns:
        whether field was removed
        See Also:
        removeField(String)
      • removeField

        public boolean removeField​(java.lang.String fieldName)
        Remove a field by name from contained fieldList
        Parameters:
        fieldName - matching field of interest
        Returns:
        whether field was removed
        See Also:
        removeField(fieldObject)
      • clearFields

        public void clearFields()
        Clear all fields
      • findFieldByName

        public fieldObject findFieldByName​(java.lang.String fieldName)
        Find contained field statement by name, if present.
        Parameters:
        fieldName - is name attribute for field of interest
        Returns:
        fieldObject reference of interest, null otherwise
      • hasField

        public boolean hasField​(java.lang.String fieldName)
        Determine if field statement is present.
        Parameters:
        fieldName - is name attribute for field of interest
        Returns:
        whether field is found