Class BaseSliderJoint
java.lang.Object
org.web3d.vrml.renderer.common.nodes.AbstractNode
org.web3d.vrml.renderer.common.nodes.rigidphysics.BaseJointNode
org.web3d.vrml.renderer.common.nodes.rigidphysics.BaseSliderJoint
- All Implemented Interfaces:
VRMLNode
,FrameStateListener
,VRMLNodeType
,VRMLRigidJointNodeType
- Direct Known Subclasses:
NRSliderJoint
,OGLSliderJoint
Implementation of the SliderJoint node.
- Version:
- $Revision: 1.7 $
- Author:
- Justin Couch
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final String
Message when the stopBounce value is out of rangeprotected static final int
The field index for axisprotected static final int
The field index for maxSeparationprotected static final int
The field index for minSeparationprotected static final int
The field index for separationprotected static final int
The field index for separationRateprotected static final int
The field index for stopBounceprotected static final int
The field index for stopErrorCorrectionprotected static final int
Last index used by this base nodeprotected static final String
Message when the maxSeparation value is out of rangeprotected static final String
Message when the minSeparation value is out of rangeprotected org.odejava.JointSlider
The ODE representation of the jointprotected static final String
Message when the stopBounce value is out of rangeprotected float[]
The value of the axis fieldprotected float
The value of the maxSeparation fieldprotected float
The value of the minSeparation fieldprotected float
The value of the separation fieldprotected float
The value of the separationRate fieldprotected float
The value of the stopBounce fieldprotected float
The value of the stopErrorCorrection fieldFields inherited from class org.web3d.vrml.renderer.common.nodes.rigidphysics.BaseJointNode
BODY_NODE_MSG, BODY_PROTO_MSG, FIELD_BODY1, FIELD_BODY2, FIELD_MUST_OUTPUT, LAST_JOINT_INDEX, numMustOutput, numOutputIndices, outputIndices, pBody1, pBody2, vfBody1, vfBody2, vfMustOutput
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 new default slider joint node object.BaseSliderJoint
(VRMLNodeType node) Construct a new instance of this node based on the details from the given node. -
Method Summary
Modifier and TypeMethodDescriptionvoid
delete()
This node is about to be deleted due to a change in loaded world.getFieldDeclaration
(int index) Get the declaration of the field at the given index.int
getFieldIndex
(String fieldName) Get the index of the given field name.getFieldValue
(int index) Get the value of a field.int[]
Get the list of indices that correspond to fields that contain nodes ie MFNode and SFNode).int
Get the number of fields.int
Get the primary type of this node.void
sendRoute
(double time, int srcIndex, VRMLNodeType destNode, int destIndex) Send a routed value from this node to the given destination node.void
setBody1
(VRMLNodeType body) Set node content as replacement for the body1 field.void
setBody2
(VRMLNodeType body) Set node content as replacement for the body1 field.void
setODEWorld
(org.odejava.World wld, org.odejava.JointGroup grp) Set the parent world that this body belongs to.void
Notification that the construction phase of this node has finished.void
setValue
(int index, float value) Set the value of the field at the given index as a single float.void
setValue
(int index, float[] value, int numValid) Set the value of the field at the given index as a single float.void
Instruction to the node to fetch the appropriate field values' output from the physics model and update the outputOnly field with the values.Methods inherited from class org.web3d.vrml.renderer.common.nodes.rigidphysics.BaseJointNode
getBody1, getBody2, getOutputFields, numOutputs, setValue, setValue
Methods inherited from class org.web3d.vrml.renderer.common.nodes.AbstractNode
addNodeListener, allEventsComplete, checkNodeType, checkSecondaryType, checkSecondaryType, clearRemovedLayerIds, fireFieldChanged, getLayerIds, getMetadataObject, getRefCount, getRemovedLayerIds, getSecondaryType, getUserData, getVRMLNodeName, hasFieldChanged, isDEF, isSetupFinished, notifyExternProtoLoaded, removeNodeListener, setDEF, setErrorReporter, setFrameStateManager, setMetadataObject, setUserData, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setVersion, throwInitOnlyWriteException, throwInputOnlyWriteException, throwInvalidNodeException, throwInvalidProtoException, throwOutputOnlyWriteException, updateRefCount, 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
getSecondaryType, getUserData, getVRMLNodeName, isDEF, setErrorReporter, setUserData, setVersion
Methods inherited from interface org.web3d.vrml.nodes.VRMLNodeType
addNodeListener, clearRemovedLayerIds, getLayerIds, getMetadataObject, getRefCount, getRemovedLayerIds, hasFieldChanged, isSetupFinished, notifyExternProtoLoaded, removeNodeListener, setDEF, setFrameStateManager, setMetadataObject, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, updateRefCount
-
Field Details
-
FIELD_AXIS
protected static final int FIELD_AXISThe field index for axis- See Also:
-
FIELD_MIN_SEPARATION
protected static final int FIELD_MIN_SEPARATIONThe field index for minSeparation- See Also:
-
FIELD_MAX_SEPARATION
protected static final int FIELD_MAX_SEPARATIONThe field index for maxSeparation- See Also:
-
FIELD_SEPARATION
protected static final int FIELD_SEPARATIONThe field index for separation- See Also:
-
FIELD_SEPARATION_RATE
protected static final int FIELD_SEPARATION_RATEThe field index for separationRate- See Also:
-
FIELD_STOP_BOUNCE
protected static final int FIELD_STOP_BOUNCEThe field index for stopBounce- See Also:
-
FIELD_STOP_ERROR_CORRECTION
protected static final int FIELD_STOP_ERROR_CORRECTIONThe field index for stopErrorCorrection- See Also:
-
LAST_SLIDER_INDEX
protected static final int LAST_SLIDER_INDEXLast index used by this base node- See Also:
-
MIN_SEPARATION_MSG
Message when the minSeparation value is out of range- See Also:
-
MAX_SEPARATION_MSG
Message when the maxSeparation value is out of range- See Also:
-
BOUNCE_RANGE_MSG
Message when the stopBounce value is out of range- See Also:
-
STOP_ERROR_RANGE_MSG
Message when the stopBounce value is out of range- See Also:
-
vfAxis
protected float[] vfAxisThe value of the axis field -
vfMinSeparation
protected float vfMinSeparationThe value of the minSeparation field -
vfMaxSeparation
protected float vfMaxSeparationThe value of the maxSeparation field -
vfSeparation
protected float vfSeparationThe value of the separation field -
vfSeparationRate
protected float vfSeparationRateThe value of the separationRate field -
vfStopBounce
protected float vfStopBounceThe value of the stopBounce field -
vfStopErrorCorrection
protected float vfStopErrorCorrectionThe value of the stopErrorCorrection field -
odeJoint
protected org.odejava.JointSlider odeJointThe ODE representation of the joint
-
-
Constructor Details
-
BaseSliderJoint
public BaseSliderJoint()Construct a new default slider joint node object. -
BaseSliderJoint
Construct a new instance of this node based on the details from the given node. If the node is not the same type, an exception will be thrown.- Parameters:
node
- The node to copy- Throws:
IllegalArgumentException
- The node is not the same type
-
-
Method Details
-
delete
public void delete()This node is about to be deleted due to a change in loaded world. Clear up the ODE resources in use. -
updateRequestedOutputs
public void updateRequestedOutputs()Instruction to the node to fetch the appropriate field values' output from the physics model and update the outputOnly field with the values. -
setODEWorld
public void setODEWorld(org.odejava.World wld, org.odejava.JointGroup grp) Set the parent world that this body belongs to. A null value clears the world and indicates the physics model or body is no longer in use by this world (eg deletes it).- Parameters:
wld
- The new world instance to use or nullgrp
- The group that this joint should belong to
-
setBody1
Set node content as replacement for the body1 field. This checks only for basic node representation. If a concrete node needs a specific set of nodes, it should override this method to check.- Specified by:
setBody1
in interfaceVRMLRigidJointNodeType
- Overrides:
setBody1
in classBaseJointNode
- Parameters:
body
- The new body representation. null will act like delete- Throws:
InvalidFieldValueException
- The node does not match the required type.
-
setBody2
Set node content as replacement for the body1 field. This checks only for basic node representation. If a concrete node needs a specific set of nodes, it should override this method to check.- Specified by:
setBody2
in interfaceVRMLRigidJointNodeType
- Overrides:
setBody2
in classBaseJointNode
- Parameters:
body
- The new body representation. null will act like delete- Throws:
InvalidFieldValueException
- The node does not match the required type.
-
getFieldIndex
Get the index of the given field name. If the name does not exist for this node then return a value of -1.- Parameters:
fieldName
- The name of the field we want the index from- Returns:
- The index of the field name or -1
-
getNodeFieldIndices
public int[] getNodeFieldIndices()Get the list of indices that correspond to fields that contain nodes ie MFNode and SFNode). Used for blind scene graph traversal without needing to spend time querying for all fields etc. If a node does not have any fields that contain nodes, this shall return null. The field list covers all field types, regardless of whether they are readable or not at the VRML-level.- Returns:
- The list of field indices that correspond to SF/MFnode fields or null if none
-
getFieldDeclaration
Get the declaration of the field at the given index. This allows for reverse lookup if needed. If the field does not exist, this will give a value of null.- Parameters:
index
- The index of the field to get information- Returns:
- A representation of this field's information
-
getNumFields
public int getNumFields()Get the number of fields.- Returns:
- The number of fields.
-
getPrimaryType
public int getPrimaryType()Get the primary type of this node. Replaces the instanceof mechanism for use in switch statements.- Specified by:
getPrimaryType
in interfaceVRMLNode
- Overrides:
getPrimaryType
in classBaseJointNode
- Returns:
- The primary type
-
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 classBaseJointNode
-
getFieldValue
Get the value of a field. If the field is a primitive type, it will return a class representing the value. For arrays or nodes it will return the instance directly.- Specified by:
getFieldValue
in interfaceVRMLNodeType
- Overrides:
getFieldValue
in classBaseJointNode
- Parameters:
index
- The index of the field to change.- Returns:
- The class representing the field value
- Throws:
InvalidFieldException
- The field index is not known
-
sendRoute
Send a routed value from this node to the given destination node. The route should use the appropriate setValue() method of the destination node. It should not attempt to cast the node up to a higher level. Routing should also follow the standard rules for the loop breaking and other appropriate rules for the specification.- Specified by:
sendRoute
in interfaceVRMLNodeType
- Overrides:
sendRoute
in classBaseJointNode
- Parameters:
time
- The time that this route occurred (not necessarily epoch time. Should be treated as a relative value only)srcIndex
- The index of the field in this node that the value should be sent fromdestNode
- The node reference that we will be sending the value todestIndex
- The index of the field in the destination node that the value should be sent to.
-
setValue
public void setValue(int index, float value) throws InvalidFieldValueException, InvalidFieldException Set the value of the field at the given index as a single float. This would be used to set SFFloat field types.- Specified by:
setValue
in interfaceVRMLNodeType
- Overrides:
setValue
in classAbstractNode
- Parameters:
index
- The index of destination field to setvalue
- The new value to use for the node- Throws:
InvalidFieldException
- The field index is not knowInvalidFieldValueException
- The value provided is not in range or not appropriate for this field
-
setValue
public void setValue(int index, float[] value, int numValid) throws InvalidFieldValueException, InvalidFieldException Set the value of the field at the given index as a single float. This would be used to set SFFloat field types.- Specified by:
setValue
in interfaceVRMLNodeType
- Overrides:
setValue
in classAbstractNode
- Parameters:
index
- The index of destination field to setvalue
- The new value to use for the nodenumValid
- The number of valid values to copy from the array- Throws:
InvalidFieldException
- The field index is not knowInvalidFieldValueException
- The value provided is not in range or not appropriate for this field
-