j3d.org Aviatrix3D

org.j3d.aviatrix3d
Class SwitchGroup

java.lang.Object
  extended byorg.j3d.aviatrix3d.SceneGraphObject
      extended byorg.j3d.aviatrix3d.Node
          extended byorg.j3d.aviatrix3d.Group
              extended byorg.j3d.aviatrix3d.SwitchGroup
All Implemented Interfaces:
PickableObject

public class SwitchGroup
extends Group

Special grouping node that allows the selection of only a single child to be rendered.

If the node that is the selected index is removed, then the selectedChild is automatically to be invalid. The user must reset the selected child index in order for rendering to continue.

Version:
$Revision: 1.8 $
Author:
Justin Couch

Field Summary
 
Fields inherited from class org.j3d.aviatrix3d.Group
childList, dirtyBoundsCount, lastChild, pickFlags, wkVec1, wkVec2
 
Fields inherited from class org.j3d.aviatrix3d.Node
bounds, implicitBounds, INVALID_BOUNDS, parent
 
Fields inherited from class org.j3d.aviatrix3d.SceneGraphObject
alive, updateHandler, WRITE_TIMING_MSG
 
Fields inherited from interface org.j3d.aviatrix3d.PickableObject
COLLIDABLE_OBJECT, GENERAL_OBJECT, PROXIMITY_OBJECT, VISIBLE_OBJECT
 
Constructor Summary
SwitchGroup()
          The default constructor
 
Method Summary
 int getActiveChild()
          Get the currently selected active child of this switch node.
 Node[] getRenderableChild()
          Get the list of children that are valid to be rendered according to the rules of the grouping node.
 int numRenderableChildren()
          Returns the number of valid renderable children to process.If there are no valid renderable children return -1.
protected  void recomputeBounds()
          Internal method to recalculate the implicit bounds of this Node.
 void removeAllChildren()
          Removes all children from the group.
 void removeChild(int idx)
          Remove the child at the specified index from the group.
 void setActiveChild(int idx)
          Set the selected child to be rendered to the given index.
 void setChild(Node newChild, int idx)
          Replaces the child node at the specified index in this group node's list of children with the specified child.
protected  void updateBounds()
          Update this node's bounds and then call the parent to update it's bounds.
 
Methods inherited from class org.j3d.aviatrix3d.Group
addChild, checkForCyclicChild, getAllChildren, getChild, getPickMask, indexOfChild, markBoundsDirty, numChildren, pickBatch, pickSingle, removeChild, setLive, setPickMask, setUpdateHandler
 
Methods inherited from class org.j3d.aviatrix3d.Node
boundsChanged, checkForCyclicParent, getBounds, getParent, postRender, removeParent, render, setBounds, setParent
 
Methods inherited from class org.j3d.aviatrix3d.SceneGraphObject
dataChanged, getUserData, isLive, setUserData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SwitchGroup

public SwitchGroup()
The default constructor

Method Detail

recomputeBounds

protected void recomputeBounds()
Internal method to recalculate the implicit bounds of this Node. By default the bounds are a point sphere, so derived classes should override this method with something better.

Overrides:
recomputeBounds in class Group

updateBounds

protected void updateBounds()
Update this node's bounds and then call the parent to update it's bounds. Used to propogate bounds changes from the leaves of the tree to the root. A node implementation may decide when and where to tell the parent(s)s that updates are ready.

Overrides:
updateBounds in class Group

setChild

public void setChild(Node newChild,
                     int idx)
              throws InvalidWriteTimingException
Replaces the child node at the specified index in this group node's list of children with the specified child.

Overrides:
setChild in class Group
Parameters:
idx - The index to replace. Must be greater than 0 and less then numChildren
newChild - The child node to use
Throws:
java.lang.IndexOutOfBoundsException - When the idx is invalid
InvalidWriteTimingException - An attempt was made to write outside of the NodeUpdateListener callback method

removeChild

public void removeChild(int idx)
                 throws InvalidWriteTimingException
Remove the child at the specified index from the group.

Overrides:
removeChild in class Group
Parameters:
idx - The index of the child to remove
Throws:
IndexOfBoundsException - When the idx is invalid
InvalidWriteTimingException - An attempt was made to write outside of the NodeUpdateListener callback method

getRenderableChild

public Node[] getRenderableChild()
Get the list of children that are valid to be rendered according to the rules of the grouping node.

Overrides:
getRenderableChild in class Group
Returns:
an array of nodes

numRenderableChildren

public int numRenderableChildren()
Returns the number of valid renderable children to process.If there are no valid renderable children return -1.

Overrides:
numRenderableChildren in class Group
Returns:
A number greater than or equal to zero

removeAllChildren

public void removeAllChildren()
                       throws InvalidWriteTimingException
Removes all children from the group.

Overrides:
removeAllChildren in class Group
Throws:
InvalidWriteTimingException - An attempt was made to write outside of the NodeUpdateListener callback method

setActiveChild

public void setActiveChild(int idx)
                    throws InvalidWriteTimingException
Set the selected child to be rendered to the given index. If the index is invalid, then an exception is issued. Using a value of -1 means that no child will be rendered.

Parameters:
idx - The index of the child to now be rendered
Throws:
InvalidWriteTimingException - An attempt was made to write outside of the NodeUpdateListener callback method

getActiveChild

public int getActiveChild()
Get the currently selected active child of this switch node. If none is active, -1 will be returned.


j3d.org Aviatrix3D

Latest Info from http://aviatrix3d.j3d.org/
Copyright © 2003 - j3d.org