Class Group

  • Direct Known Subclasses:
    BranchGroup, OrderedGroup, Primitive, SharedGroup, Switch, TransformGroup, ViewSpecificGroup

    public class Group
    extends Node
    The Group node object is a general-purpose grouping node. Group nodes have exactly one parent and an arbitrary number of children that are rendered in an unspecified order (or in parallel). Null children are allowed; no operation is performed on a null child node. Operations on Group node objects include adding, removing, and enumerating the children of the Group node. The subclasses of Group node add additional semantics.
    • Field Detail

      • ALLOW_CHILDREN_READ

        public static final int ALLOW_CHILDREN_READ
        Specifies that this Group node allows reading its children.
        See Also:
        Constant Field Values
      • ALLOW_CHILDREN_WRITE

        public static final int ALLOW_CHILDREN_WRITE
        Specifies that this Group node allows writing its children.
        See Also:
        Constant Field Values
      • ALLOW_CHILDREN_EXTEND

        public static final int ALLOW_CHILDREN_EXTEND
        Specifies that this Group node allows adding new children.
        See Also:
        Constant Field Values
      • ALLOW_COLLISION_BOUNDS_READ

        public static final int ALLOW_COLLISION_BOUNDS_READ
        Specifies that this Group node allows reading its collision Bounds
        See Also:
        Constant Field Values
      • ALLOW_COLLISION_BOUNDS_WRITE

        public static final int ALLOW_COLLISION_BOUNDS_WRITE
        Specifies that this Group node allows writing its collision Bounds
        See Also:
        Constant Field Values
    • Constructor Detail

      • Group

        public Group()
        Constructs a Group node with default parameters. The default values are as follows:
          collision bounds : null
          alternate collision target : false
    • Method Detail

      • setCollisionBounds

        public void setCollisionBounds​(Bounds bounds)
        Sets the collision bounds of a node.
        Parameters:
        bounds - the collision bounding object for a node
        Throws:
        CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph
      • getCollisionBounds

        public Bounds getCollisionBounds()
        Returns the collision bounding object of this node.
        Returns:
        the node's collision bounding object
        Throws:
        CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph
      • setChild

        public void setChild​(Node child,
                             int index)
        Replaces the child node at the specified index in this group node's list of children with the specified child.
        Parameters:
        child - the new child
        index - which child to replace. The index must be a value greater than or equal to 0 and less than numChildren().
        Throws:
        CapabilityNotSetException - if the appropriate capability is not set and this group node is part of live or compiled scene graph
        RestrictedAccessException - if this group node is part of live or compiled scene graph and the child node being set is not a BranchGroup node
        MultipleParentException - if child has already been added as a child of another group node
        java.lang.IndexOutOfBoundsException - if index is invalid
      • insertChild

        public void insertChild​(Node child,
                                int index)
        Inserts the specified child node in this group node's list of children at the specified index.
        Parameters:
        child - the new child
        index - at which location to insert. The index must be a value greater than or equal to 0 and less than or equal to numChildren().
        Throws:
        CapabilityNotSetException - if the appropriate capability is not set and this group node is part of live or compiled scene graph
        RestrictedAccessException - if this group node is part of live or compiled scene graph and the child node being inserted is not a BranchGroup node
        MultipleParentException - if child has already been added as a child of another group node.
        java.lang.IndexOutOfBoundsException - if index is invalid.
      • removeChild

        public void removeChild​(int index)
        Removes the child node at the specified index from this group node's list of children.
        Parameters:
        index - which child to remove. The index must be a value greater than or equal to 0 and less than numChildren().
        Throws:
        CapabilityNotSetException - if the appropriate capability is not set and this group node is part of live or compiled scene graph
        RestrictedAccessException - if this group node is part of live or compiled scene graph and the child node being removed is not a BranchGroup node
        java.lang.IndexOutOfBoundsException - if index is invalid.
      • getChild

        public Node getChild​(int index)
        Retrieves the child node at the specified index in this group node's list of children.
        Parameters:
        index - which child to return.
        Returns:
        the children at location index. The index must be a value greater than or equal to 0 and less than numChildren().
        Throws:
        CapabilityNotSetException - if the appropriate capability is not set and this group node is part of live or compiled scene graph
        java.lang.IndexOutOfBoundsException - if index is invalid.
      • getAllChildren

        public java.util.Enumeration getAllChildren()
        Returns an Enumeration object of this group node's list of children.
        Returns:
        an Enumeration object of all the children
        Throws:
        CapabilityNotSetException - if the appropriate capability is not set and this group node is part of live or compiled scene graph
      • addChild

        public void addChild​(Node child)
        Appends the specified child node to this group node's list of children.
        Parameters:
        child - the child to add to this node's list of children
        Throws:
        CapabilityNotSetException - if the appropriate capability is not set and this group node is part of live or compiled scene graph
        RestrictedAccessException - if this group node is part of live or compiled scene graph and the child node being added is not a BranchGroup node
        MultipleParentException - if child has already been added as a child of another group node.
      • moveTo

        public void moveTo​(BranchGroup branchGroup)
        Moves the specified branch group node from its existing location to the end of this group node's list of children.
        Parameters:
        branchGroup - the branch group node to move to this node's list of children
        Throws:
        CapabilityNotSetException - if the appropriate capability is not set and this group node is part of live or compiled scene graph
      • numChildren

        public int numChildren()
        Returns a count of this group node's children.
        Returns:
        the number of children descendant from this node.
        Throws:
        CapabilityNotSetException - if the appropriate capability is not set and this group node is part of live or compiled scene graph
      • indexOfChild

        public int indexOfChild​(Node child)
        Retrieves the index of the specified child node in this group node's list of children.
        Parameters:
        child - the child node to be looked up.
        Returns:
        the index of the specified child node; returns -1 if the object is not in the list.
        Throws:
        CapabilityNotSetException - if the appropriate capability is not set and this group node is part of live or compiled scene graph
        Since:
        Java 3D 1.3
      • removeChild

        public void removeChild​(Node child)
        Removes the specified child node from this group node's list of children. If the specified object is not in the list, the list is not modified.
        Parameters:
        child - the child node to be removed.
        Throws:
        CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph
        RestrictedAccessException - if this group node is part of live or compiled scene graph and the child node being removed is not a BranchGroup node
        Since:
        Java 3D 1.3
      • removeAllChildren

        public void removeAllChildren()
        Removes all children from this Group node.
        Throws:
        CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph
        RestrictedAccessException - if this group node is part of live or compiled scene graph and any of the children being removed are not BranchGroup nodes
        Since:
        Java 3D 1.3
      • setAlternateCollisionTarget

        public void setAlternateCollisionTarget​(boolean target)
        Causes this Group node to be reported as the collision target when collision is being used and this node or any of its children is in a collision. The default value is false. For collision with USE_GEOMETRY set, the collision traverser will check the geometry of all the Group node's leaf descendants; for collision with USE_BOUNDS set, the collision traverser will only check the bounds at this Group node. In both cases, if there is a collision, this Group node will be reported as the colliding object in the SceneGraphPath. This reporting is done regardless of whether ENABLE_COLLISION_REPORTING is set for this group node (setting alternate collision target to true implies collision reporting).
        Parameters:
        target - Indicates whether this Group node can be the target of a collision.
        See Also:
        WakeupOnCollisionEntry, WakeupOnCollisionMovement, WakeupOnCollisionExit
      • getAlternateCollisionTarget

        public boolean getAlternateCollisionTarget()
        Returns the collision target state.
        Returns:
        Indicates whether this Group node can be the target of a collision.