Aviatrix3D
2.0 Dev

org.j3d.aviatrix3d
Class NodeComponent

java.lang.Object
  extended byorg.j3d.aviatrix3d.SceneGraphObject
      extended byorg.j3d.aviatrix3d.NodeComponent
Direct Known Subclasses:
Appearance, AudioComponent, BlendAttributes, DepthAttributes, Geometry, GL14ShaderProgram, LineAttributes, Material, MultipassTextureComponent, PointAttributes, PolygonAttributes, Shader, ShaderArguments, ShaderProgram, StencilAttributes, TexCoordGeneration, Texture, TextureAttributes, TextureComponent, TextureUnit

public abstract class NodeComponent
extends SceneGraphObject

The NodeComponent class is the superclass for all non renderable nodes. These nodes provides data for other nodes.

Version:
$Revision: 1.11 $
Author:
Alan Hudson

Field Summary
protected  int lastParent
          Index to the next place to add items in the nodeList
protected  int liveCount
          Counter for how many times we've been marked as live so to know when to notify the children of a change of state.
protected  SceneGraphObject[] parentList
          Listing of all the parents of this node
 
Fields inherited from class org.j3d.aviatrix3d.SceneGraphObject
alive, LISTENER_SET_NOT_LIVE_MESSAGE, updateHandler, WRITE_TIMING_MSG
 
Constructor Summary
protected NodeComponent()
          Initialise a new instance of the component, setting up the internal state needed.
 
Method Summary
protected  void addParent(SceneGraphObject p)
          Specify this nodes parent, overridden to provide behaviour that appends the node to the list rather than replacing it.
 void getParents(Node[] parents)
          Get the listing of the number of parents that this node currently has.
 Renderable getRenderable(int bufferId)
          Get the Renderable instance needed to process this object for the given buffer ID.
 boolean hasChanged()
          Has an attribute been changed.
 int numParents()
          Request the number of parents this node currently contains
protected  void removeParent(SceneGraphObject p)
          Remove a parent from this shared group.
 
Methods inherited from class org.j3d.aviatrix3d.SceneGraphObject
checkForCyclicChild, checkForCyclicParent, dataChanged, getUserData, isLive, setLive, setUpdateHandler, setUserData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

parentList

protected SceneGraphObject[] parentList
Listing of all the parents of this node


lastParent

protected int lastParent
Index to the next place to add items in the nodeList


liveCount

protected int liveCount
Counter for how many times we've been marked as live so to know when to notify the children of a change of state.

Constructor Detail

NodeComponent

protected NodeComponent()
Initialise a new instance of the component, setting up the internal state needed.

Method Detail

getRenderable

public Renderable getRenderable(int bufferId)
Get the Renderable instance needed to process this object for the given buffer ID. The renderable instance should encapsulate all the data needed to render this object in a thread-safe way. The default implementation of this method returns null, indicating that this does not provide anything useful to the pipeline to render. Classes that wish to be rendered, should override this method and provide an appropriate return value.

Note: This should never be called by end-user code. It is publically accessible for code that is used by the rendering pipeline implementation, such as culling and sorting stages.

Parameters:
bufferId - The ID of the buffer for the renderable to encapsulate
Returns:
The renderable object, or null if nothing to render

addParent

protected void addParent(SceneGraphObject p)
                  throws AlreadyParentedException,
                         InvalidNodeTypeException
Specify this nodes parent, overridden to provide behaviour that appends the node to the list rather than replacing it. The parent must be a group node in this case.

Parameters:
p - The new parent instance to add to the list
Throws:
AlreadyParentedException - There is a valid parent already set
InvalidNodeTypeException - Not a group node

removeParent

protected void removeParent(SceneGraphObject p)
Remove a parent from this shared group. Since setParent() cannot be used to remove a parent from the graph, you'll need to use this method to remove the parent.

Parameters:
p - The new parent instance to remove from the list

numParents

public int numParents()
Request the number of parents this node currently contains

Returns:
a positive number

getParents

public void getParents(Node[] parents)
Get the listing of the number of parents that this node currently has. The provided array must be at least big enough to copy all the values into it.

Parameters:
parents - An array to copy the parent listing into

hasChanged

public boolean hasChanged()
Has an attribute been changed. If not then the render/postRender might not be called. Components that always need to update state should set this to true.

Returns:
Has an attribute changed.

Aviatrix3D
2.0 Dev

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