: Class Node

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javax.media.j3d
Class Node

    java.lang.Object
      |
      +--javax.media.j3d.SceneGraphObject
            |
            +--javax.media.j3d.Node

Direct Known Subclasses:
  Group, Leaf

public abstract class Node
extends SceneGraphObject

The Node class provides an abstract class for all Group and Leaf Nodes. It provides a common framework for constructing a Java 3D scene graph, specifically bounding volumes.

Field Summary
`static int` | `ALLOW_AUTO_COMPUTE_BOUNDS_READ` Specifies that this Node allows read access to its bounds auto compute information.
`static int` | `ALLOW_AUTO_COMPUTE_BOUNDS_WRITE` Specifies that this Node allows write access to its bounds auto compute information.
`static int` | `ALLOW_BOUNDS_READ` Specifies that this Node allows read access to its bounds information.
`static int` | `ALLOW_BOUNDS_WRITE` Specifies that this Node allows write access to its bounds information.
`static int` | `ALLOW_COLLIDABLE_READ` Specifies that this Node allows reading its collidability state.
`static int` | `ALLOW_COLLIDABLE_WRITE` Specifies that this Node allows write access its collidability state.
`static int` | `ALLOW_LOCAL_TO_VWORLD_READ` Specifies that this Node allows read access to its local coordinates to virtual world (Vworld) coordinates transform.
`static int` | `ALLOW_PICK` Deprecated. Use setPickable(boolean) instead
`static int` | `ALLOW_PICKABLE_READ` Specifies that this Node allows reading its pickability state.
`static int` | `ALLOW_PICKABLE_WRITE` Specifies that this Node allows write access its pickability state.
`static int` | `ENABLE_COLLISION_REPORTING` Specifies that this Node will be reported in the collision SceneGraphPath if a collision occurs.
`static int` | `ENABLE_PICK_REPORTING` Specifies that this Node will be reported in the pick SceneGraphPath if a pick occurs.

Constructor Summary
`Node()` Constructs a Node object with default parameters.

Method Summary
`Node` | `cloneNode(boolean forceDuplicate)` Used to create a new instance of the node.
`Node` | `cloneTree()` Duplicates all the nodes of the specified sub-graph.
`Node` | `cloneTree(boolean forceDuplicate)` Duplicates all the nodes of the specified sub-graph.
`Node` | `cloneTree(boolean forceDuplicate, boolean allowDanglingReference)` Duplicates all the nodes of the specified sub-graph.
`abstract void` | `duplicateNode(Node originalNode, boolean forceDuplicate)` Copies all node information from `originalNode` into the current node.
`Bounds` | `getBounds()` Returns the bounding object of a node.
`boolean` | `getBoundsAutoCompute()` Gets the value indicating if the automatic calcuation of geometric bounds of a node is on/off.
`boolean` | `getCollidable()` Returns the collidable value; this value determines whether this node and it's children, if a group node, can be considered for collision purposes; if it is set to false, then neither this node nor any children nodes will be traversed for collision purposes; the default value is true.
`void` | `getLocalToVworld(SceneGraphPath path, Transform3D t)` Retrieves the local coordinates to virtual world coordinates transform for the particular path in the scene graph ending with this node.
`void` | `getLocalToVworld(Transform3D t)` Retrieves the local coordinates to virtual world coordinates transform for this node in the scene graph.
`Node` | `getParent()` Retrieves the parent of this Node.
`boolean` | `getPickable()` Returns true if this `Node` is pickable, false if it is not pickable.
`void` | `setBounds(Bounds bounds)` Sets the geometric bounds of a node.
`void` | `setBoundsAutoCompute(boolean autoCompute)` Turns the automatic calcuation of geometric bounds of a node on/off.
`void` | `setCollidable(boolean collidable)` Sets the collidable value; determines whether this node and any of its children, if a group node, can be considered for collision purposes.
`void` | `setPickable(boolean pickable)` When set to `true` this `Node` can be Picked.

Methods inherited from class javax.media.j3d.SceneGraphObject
`clearCapability, duplicateSceneGraphObject, getCapability, getUserData, isCompiled, isLive, setCapability, setUserData`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### ENABLE_PICK_REPORTING

    public static final int ENABLE_PICK_REPORTING

  Specifies that this Node will be reported in the pick SceneGraphPath if a pick occurs. This capability is only specifiable for Group nodes; it is ignored for leaf nodes. The default for Group nodes is false. All interior nodes not needed for uniqueness in a SceneGraphPath that don't have ENABLE_PICK_REPORTING set to true will not be reported in the SceneGraphPath.
  See Also:
    `SceneGraphPath`

### ENABLE_COLLISION_REPORTING

    public static final int ENABLE_COLLISION_REPORTING

  Specifies that this Node will be reported in the collision SceneGraphPath if a collision occurs. This capability is only specifiable for Group nodes; it is ignored for leaf nodes. The default for Group nodes is false. All interior nodes not needed for uniqueness in a SceneGraphPath that don't have ENABLE_COLLISION_REPORTING set to true will not be reported in the SceneGraphPath.
  See Also:
    `SceneGraphPath`

### ALLOW_PICK

    public static final int ALLOW_PICK

  Deprecated. Use setPickable(boolean) instead

### ALLOW_BOUNDS_READ

    public static final int ALLOW_BOUNDS_READ

  Specifies that this Node allows read access to its bounds information.

### ALLOW_BOUNDS_WRITE

    public static final int ALLOW_BOUNDS_WRITE

  Specifies that this Node allows write access to its bounds information.

### ALLOW_PICKABLE_READ

    public static final int ALLOW_PICKABLE_READ

  Specifies that this Node allows reading its pickability state.

### ALLOW_PICKABLE_WRITE

    public static final int ALLOW_PICKABLE_WRITE

  Specifies that this Node allows write access its pickability state.

### ALLOW_COLLIDABLE_READ

    public static final int ALLOW_COLLIDABLE_READ

  Specifies that this Node allows reading its collidability state.

### ALLOW_COLLIDABLE_WRITE

    public static final int ALLOW_COLLIDABLE_WRITE

  Specifies that this Node allows write access its collidability state.

### ALLOW_AUTO_COMPUTE_BOUNDS_READ

    public static final int ALLOW_AUTO_COMPUTE_BOUNDS_READ

  Specifies that this Node allows read access to its bounds auto compute information.

### ALLOW_AUTO_COMPUTE_BOUNDS_WRITE

    public static final int ALLOW_AUTO_COMPUTE_BOUNDS_WRITE

  Specifies that this Node allows write access to its bounds auto compute information.

### ALLOW_LOCAL_TO_VWORLD_READ

    public static final int ALLOW_LOCAL_TO_VWORLD_READ

  Specifies that this Node allows read access to its local coordinates to virtual world (Vworld) coordinates transform.

Constructor Detail

### Node

    public Node()

  Constructs a Node object with default parameters. The default values are as follows:
  pickable : true
  collidable : true
  bounds auto compute : true
  bounds : N/A (automatically computed)

Method Detail

### getParent

    public final Node getParent()

  Retrieves the parent of this Node. This method is only valid during the construction of the scene graph.
  Returns:
    the parent of this node, or null if this node has no parent
  Throws:
    RestrictedAccessException - if this object is part of live or compiled scene graph

### setBounds

    public final void setBounds(Bounds bounds)

  Sets the geometric bounds of a node.
  Parameters:
    `bounds` - the bounding object for a node
  Throws:
    CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

### getBounds

    public final Bounds getBounds()

  Returns the bounding object of a node.
  Returns:
    the node's bounding object
  Throws:
    CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

### getCollidable

    public boolean getCollidable()

  Returns the collidable value; this value determines whether this node and it's children, if a group node, can be considered for collision purposes; if it is set to false, then neither this node nor any children nodes will be traversed for collision purposes; the default value is true. The collidable setting is the way that an application can perform collision culling.
  Returns:
    the present collidable value for this node

### setCollidable

    public void setCollidable(boolean collidable)

  Sets the collidable value; determines whether this node and any of its children, if a group node, can be considered for collision purposes.
  Parameters:
    `collidable` - the new collidable value for this node

### setBoundsAutoCompute

    public final void setBoundsAutoCompute(boolean autoCompute)

  Turns the automatic calcuation of geometric bounds of a node on/off.
  Parameters:
    `autoCompute` - indicates if the node's bounding object is automatically computed.
  Throws:
    CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

### getBoundsAutoCompute

    public final boolean getBoundsAutoCompute()

  Gets the value indicating if the automatic calcuation of geometric bounds of a node is on/off.
  Returns:
    the node's auto compute flag for the geometric bounding object
  Throws:
    CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

### getLocalToVworld

    public final void getLocalToVworld(Transform3D t)

  Retrieves the local coordinates to virtual world coordinates transform for this node in the scene graph. This is the composite of all transforms in the scene graph from the root down to `this` node. It is only valid for nodes that are part of a live scene graph.
  Parameters:
    `t` - the object that will receive the local coordinates to Vworld coordinates transform.
  Throws:
    RestrictedAccessException - if the node is not part of a live scene graph
    CapabilityNotSetException - if appropriate capability is not set and this node is part of live scene graph
    IllegalSharingException - if the node is a descendant of a SharedGroup node.

### getLocalToVworld

    public final void getLocalToVworld(SceneGraphPath path,
                                       Transform3D t)

  Retrieves the local coordinates to virtual world coordinates transform for the particular path in the scene graph ending with this node. This is the composite of all transforms in the scene graph from the root down to `this` node via the specified Link nodes. It is only valid for nodes that are part of a live scene graph.
  Parameters:
    `path` - the specific path from the node to the Locale
    `t` - the object that will receive the local coordinates to Vworld coordinates transform.
  Throws:
    RestrictedAccessException - if the node is not part of a live scene graph
    CapabilityNotSetException - if appropriate capability is not set and this node is part of live scene graph
    java.lang.IllegalArgumentException - if the specified path does not contain a valid Locale, or if the last node in the path is different from this node

### cloneTree

    public Node cloneTree()

  Duplicates all the nodes of the specified sub-graph. For Group Nodes the group node is duplicated via a call to `cloneNode` and then `cloneTree` is called for each child node. For Leaf Nodes, component data can either be duplicated or be made a reference to the original data. Leaf Node cloneTree behavior is determined by the `duplicateOnCloneTree` flag found in every Leaf Node's component data class and by the `forceDuplicate` paramter.
  Returns:
    a reference to the cloned sub-graph.
  Throws:
    DanglingReferenceException - When a dangling reference is discovered during the cloneTree operation.
    RestrictedAccessException - if this object is part of live or compiled scene graph
  See Also:
    `NodeComponent.setDuplicateOnCloneTree(boolean)`

### cloneTree

    public Node cloneTree(boolean forceDuplicate)

  Duplicates all the nodes of the specified sub-graph. For Group Nodes the group node is duplicated via a call to `cloneNode` and then `cloneTree` is called for each child node. For Leaf Nodes, component data can either be duplicated or be made a reference to the original data. Leaf Node cloneTree behavior is determined by the `duplicateOnCloneTree` flag found in every Leaf Node's component data class and by the `forceDuplicate` paramter.
  Parameters:
    `forceDuplicate` - when set to `true`, causes the `duplicateOnCloneTree` flag to be ignored. When `false`, the value of each node's `duplicateOnCloneTree` determines whether data is duplicated or copied.
  Returns:
    a reference to the cloned scene graph.
  Throws:
    DanglingReferenceException - When a dangling reference is discovered during the cloneTree operation.
    RestrictedAccessException - if this object is part of live or compiled scene graph
  See Also:
    `NodeComponent.setDuplicateOnCloneTree(boolean)`

### cloneTree

    public Node cloneTree(boolean forceDuplicate,
                          boolean allowDanglingReference)

  Duplicates all the nodes of the specified sub-graph. For Group Nodes the group node is duplicated via a call to `cloneNode` and then `cloneTree` is called for each child node. For Leaf Nodes, component data can either be duplicated or be made a reference to the original data. Leaf Node cloneTree behavior is determined by the `duplicateOnCloneTree` flag found in every Leaf Node's component data class and by the `forceDuplicate` paramter.
  Parameters:
    `forceDuplicate` - when set to `true`, causes the `duplicateOnCloneTree` flag to be ignored. When `false`, the value of each node's `duplicateOnCloneTree` determines whether data is duplicated or copied.
    `allowDanglingReferences` - when set to `true` allows the `cloneTree` method to complete even whan a dangling reference is discovered. When this parameter is `false` a `DanglingReferenceException` is generated as soon as cloneTree detects this situation.
  Returns:
    a reference to the cloned scene graph.
  Throws:
    DanglingReferenceException - When a dangling reference is discovered during the cloneTree operation and the `allowDanglingReference` parameter is false.
    RestrictedAccessException - if this object is part of live or compiled scene graph
  See Also:
    `NodeComponent.setDuplicateOnCloneTree(boolean)`

### cloneNode

    public Node cloneNode(boolean forceDuplicate)

  Used to create a new instance of the node. This routine is called by `cloneTree` to duplicate the current node. `cloneNode` should be overridden by any user subclassed objects. All subclasses must have their `cloneNode` method consist of the following lines:

  >          public Node cloneNode(boolean forceDuplicate) {
  >              UserSubClass usc = new UserSubClass();
  >              usc.duplicateNode(this, forceDuplicate);
  >              return usc;
  >          }

  Parameters:
    `forceDuplicate` - when set to `true`, causes the `duplicateOnCloneTree` flag to be ignored. When `false`, the value of each node's `duplicateOnCloneTree` variable determines whether NodeComponent data is duplicated or copied.
  Throws:
    RestrictedAccessException - if this object is part of live or compiled scene graph
  See Also:
    `cloneTree()`, `duplicateNode(javax.media.j3d.Node, boolean)`, `NodeComponent.setDuplicateOnCloneTree(boolean)`

### duplicateNode

    public abstract void duplicateNode(Node originalNode,
                                       boolean forceDuplicate)

  Copies all node information from `originalNode` into the current node. This method is called from the `cloneNode` method which is, in turn, called by the `cloneTree` method.

  For any NodeComponent objects contained by the object being duplicated, each NodeComponent object's `duplicateOnCloneTree` value is used to determine whether the NodeComponent should be duplicated in the new node or if just a reference to the current node should be placed in the new node. This flag can be overridden by setting the `forceDuplicate` parameter in the `cloneTree` method to `true`.

  Parameters:
    `originalNode` - the original node to duplicate.
    `forceDuplicate` - when set to `true`, causes the `duplicateOnCloneTree` flag to be ignored. When `false`, the value of each node's `duplicateOnCloneTree` variable determines whether NodeComponent data is duplicated or copied.
  See Also:
    `Group.cloneNode(boolean)`, `duplicateNode(javax.media.j3d.Node, boolean)`, `cloneTree()`, `NodeComponent.setDuplicateOnCloneTree(boolean)`

### setPickable

    public void setPickable(boolean pickable)

  When set to `true` this `Node` can be Picked. Setting to false indicates that this node and it's children are ALL unpickable.
  Parameters:
    `pickable` - Indicates if this node should be pickable or not

### getPickable

    public boolean getPickable()

  Returns true if this `Node` is pickable, false if it is not pickable.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD