Class OGLPickableGroup
java.lang.Object
org.web3d.vrml.renderer.common.nodes.AbstractNode
org.web3d.vrml.renderer.common.nodes.BaseGroupingNode
org.web3d.vrml.renderer.common.nodes.picking.BasePickableGroup
org.web3d.vrml.renderer.ogl.nodes.picking.OGLPickableGroup
- All Implemented Interfaces:
org.j3d.aviatrix3d.NodeUpdateListener
,VRMLNode
,FrameStateListener
,VRMLBoundedNodeType
,VRMLChildNodeType
,VRMLGroupingNodeType
,VRMLNodeType
,VRMLPickableNodeType
,VRMLWorldRootChildNodeType
,OGLPickableTargetNodeType
,OGLVRMLNode
public class OGLPickableGroup
extends BasePickableGroup
implements OGLVRMLNode, OGLPickableTargetNodeType, org.j3d.aviatrix3d.NodeUpdateListener
OpenGL implementation of a PickableGroup node.
Most of the work is schlepped off to Aviatrix3D to do the work of our
picking impl.
- Version:
- $Revision: 1.3 $
- Author:
- Justin Couch
-
Field Summary
Fields inherited from class org.web3d.vrml.renderer.common.nodes.picking.BasePickableGroup
FIELD_OBJECT_TYPE, FIELD_PICKABLE, LAST_PICK_INDEX, NUM_FIELDS, vfObjectType, vfPickable
Fields inherited from class org.web3d.vrml.renderer.common.nodes.BaseGroupingNode
childCount, FIELD_ADDCHILDREN, FIELD_BBOX_CENTER, FIELD_BBOX_DISPLAY, FIELD_BBOX_SIZE, FIELD_CHILDREN, FIELD_REMOVECHILDREN, FIELD_VISIBLE, hasBindables, LAST_GROUP_INDEX, shareCount, USE_BIND_MSG, vfBboxCenter, vfBboxDisplay, vfBboxSize, vfChildren, vfVisible
Fields inherited from class org.web3d.vrml.renderer.common.nodes.AbstractNode
errorReporter, FIELD_METADATA, fieldLocalData, hasChanged, inSetup, isDEF, isStatic, LAST_NODE_INDEX, layerIds, nodeName, pMetadata, refCounts, removedLayerIds, stateManager, STATIC_SCENE_GRAPH, vfMetadata, vrmlMajorVersion, vrmlMinorVersion
-
Constructor Summary
ConstructorsConstructorDescriptionConstruct a default instance of this node.OGLPickableGroup
(VRMLNodeType node) Construct a new instance of this node based on the details from the given node. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addChildNode
(VRMLNodeType node) Add a single child node to the list of available children.protected void
Clear the child node list of all children - both VRML and OpenGL.org.j3d.aviatrix3d.picking.PickableObject
Fetch the object that this target will pick against.org.j3d.aviatrix3d.SceneGraphObject
Get the OpenGL scene graph object representation of this node.void
notifyExternProtoLoaded
(int index, VRMLNodeType node) Notify a node that an ExternProto has resolved.protected void
removeChildNode
(VRMLNodeType node) Remove the given node from this grouping node.void
setObjectType
(String[] types, int numValid) Set the list of picking targets that this object corresponds to.void
Set the flag convertor that will be used to map the object type strings to the internal pick masks.void
Notification that the construction phase of this node has finished.void
Notification that its safe to update the node now with any operations that could potentially effect the node's bounds.void
Notification that its safe to update the node now with any operations that only change the node's properties, but do not change the bounds.Methods inherited from class org.web3d.vrml.renderer.common.nodes.picking.BasePickableGroup
getFieldDeclaration, getFieldIndex, getFieldValue, getNodeFieldIndices, getNumFields, getObjectType, getPickable, getSecondaryType, numObjectType, sendRoute, setPickable, setValue, setValue
Methods inherited from class org.web3d.vrml.renderer.common.nodes.BaseGroupingNode
addChild, containsBindableNodes, copy, getBboxCenter, getBboxDisplay, getBboxSize, getChildren, getChildrenSize, getPrimaryType, getVisible, isShared, setBboxCenter, setBboxDisplay, setBboxSize, setChildren, setChildren, setDEF, setShared, setValue, setValue, setValue, setVisible, updateRefCount
Methods inherited from class org.web3d.vrml.renderer.common.nodes.AbstractNode
addNodeListener, allEventsComplete, checkNodeType, checkSecondaryType, checkSecondaryType, clearRemovedLayerIds, fireFieldChanged, getLayerIds, getMetadataObject, getRefCount, getRemovedLayerIds, getUserData, getVRMLNodeName, hasFieldChanged, isDEF, isSetupFinished, removeNodeListener, setErrorReporter, setFrameStateManager, setMetadataObject, setUserData, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setVersion, throwInitOnlyWriteException, throwInputOnlyWriteException, throwInvalidNodeException, throwInvalidProtoException, throwOutputOnlyWriteException, updateRefs
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.web3d.vrml.nodes.FrameStateListener
allEventsComplete
Methods inherited from interface org.web3d.vrml.lang.VRMLNode
getFieldDeclaration, getFieldIndex, getNodeFieldIndices, getNumFields, getPrimaryType, getSecondaryType, getUserData, getVRMLNodeName, isDEF, setErrorReporter, setUserData, setVersion
Methods inherited from interface org.web3d.vrml.nodes.VRMLNodeType
addNodeListener, clearRemovedLayerIds, getFieldValue, getLayerIds, getMetadataObject, getRefCount, getRemovedLayerIds, hasFieldChanged, isSetupFinished, removeNodeListener, sendRoute, setDEF, setFrameStateManager, setMetadataObject, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, updateRefCount
-
Constructor Details
-
OGLPickableGroup
public OGLPickableGroup()Construct a default instance of this node. The defaults are set by the VRML specification. -
OGLPickableGroup
Construct a new instance of this node based on the details from the given node. If the node is not a group node, an exception will be thrown. It does not copy the children nodes, just this node.- Parameters:
node
- The node to copy- Throws:
IllegalArgumentException
- The node is not a Group node
-
-
Method Details
-
setTypeConvertor
Set the flag convertor that will be used to map the object type strings to the internal pick masks. A value of null will clear the current instance.- Specified by:
setTypeConvertor
in interfaceOGLPickableTargetNodeType
- Parameters:
conv
- The convertor instance to use, or null
-
getPickableObject
public org.j3d.aviatrix3d.picking.PickableObject getPickableObject()Fetch the object that this target will pick against.- Specified by:
getPickableObject
in interfaceOGLPickableTargetNodeType
- Returns:
- The valid branchgroup to use
-
setObjectType
Set the list of picking targets that this object corresponds to. These can be an array of strings.- Specified by:
setObjectType
in interfaceVRMLPickableNodeType
- Overrides:
setObjectType
in classBasePickableGroup
- Parameters:
types
- The list of object type strings to usenumValid
- The number of valid values to read from the array
-
updateNodeBoundsChanges
Notification that its safe to update the node now with any operations that could potentially effect the node's bounds.- Specified by:
updateNodeBoundsChanges
in interfaceorg.j3d.aviatrix3d.NodeUpdateListener
- Parameters:
src
- The node or Node Component that is to be updated.
-
updateNodeDataChanges
Notification that its safe to update the node now with any operations that only change the node's properties, but do not change the bounds.- Specified by:
updateNodeDataChanges
in interfaceorg.j3d.aviatrix3d.NodeUpdateListener
- Parameters:
src
- The node or Node Component that is to be updated.
-
setupFinished
public void setupFinished()Notification that the construction phase of this node has finished. If the node would like to do any internal processing, such as setting up geometry, then go for it now.- Specified by:
setupFinished
in interfaceVRMLNodeType
- Overrides:
setupFinished
in classBaseGroupingNode
-
notifyExternProtoLoaded
Description copied from interface:VRMLNodeType
Notify a node that an ExternProto has resolved. This will verify the objects type and add it to the render sceneGraph.- Specified by:
notifyExternProtoLoaded
in interfaceVRMLNodeType
- Overrides:
notifyExternProtoLoaded
in classAbstractNode
- Parameters:
index
- The field indexnode
- The node resolved
-
getSceneGraphObject
public org.j3d.aviatrix3d.SceneGraphObject getSceneGraphObject()Get the OpenGL scene graph object representation of this node. This will need to be cast to the appropriate parent type when being used. Default implementation returns null.- Specified by:
getSceneGraphObject
in interfaceOGLVRMLNode
- Returns:
- The OpenGL representation.
-
clearChildren
protected void clearChildren()Clear the child node list of all children - both VRML and OpenGL.- Overrides:
clearChildren
in classBaseGroupingNode
-
addChildNode
Add a single child node to the list of available children. This auto matically deals with DEF/USE and adds links and branchgroups where appropriate. When nodes are null, we do not add them to the GL representation, only to the vfChildren list.- Overrides:
addChildNode
in classBaseGroupingNode
- Parameters:
node
- The node to view- Throws:
InvalidFieldValueException
- This is a bindable node shared
-
removeChildNode
Remove the given node from this grouping node. If the node is not a child of this node, the request is silently ignored.- Overrides:
removeChildNode
in classBaseGroupingNode
- Parameters:
node
- The node to remove
-