Class BaseDoubleAxisHingeJoint
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.BaseDoubleAxisHingeJoint
- All Implemented Interfaces:
VRMLNode,FrameStateListener,VRMLNodeType,VRMLRigidJointNodeType
- Direct Known Subclasses:
NRDoubleAxisHingeJoint,OGLDoubleAxisHingeJoint
Implementation of the DoubleAxisHingeJoint node.
- Version:
- $Revision: 1.15 $
- Author:
- Justin Couch
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final StringMessage when the stopBounce value is out of rangeprotected static final intThe field index for anchorPointprotected static final intThe field index for desiredAngularVelocity1protected static final intThe field index for desiredAngularVelocity2protected static final intThe field index for axis1protected static final intThe field index for axis2protected static final intThe field index for body1AnchorPointprotected static final intThe field index for body1Axisprotected static final intThe field index for body2AnchorPointprotected static final intThe field index for body2Axisprotected static final intThe field index for hinge1Angleprotected static final intThe field index for hinge1AngleRateprotected static final intThe field index for hinge2Angleprotected static final intThe field index for hinge2AngleRateprotected static final intThe field index for maxAngle1protected static final intThe field index for maxTorque1protected static final intThe field index for maxTorque2protected static final intThe field index for minAngle1protected static final intThe field index for stopBounce1protected static final intThe field index for stopConstantForceMix1protected static final intThe field index for stopErrorCorrection1protected static final intThe field index for suspensionErrorCorrectionprotected static final intThe field index for suspensionForceprotected static final intLast index used by this base nodeprotected static final StringMessage when the maxAngle1 value is out of rangeprotected static final StringMessage when the minAngle1 value is out of rangeprotected org.odejava.JointHinge2The ODE representation of the jointprotected static final StringMessage when the suspension force value is negativeprotected static final StringMessage when the stopErrorCorrection1 value is out of rangeprotected static final StringThe suspenion error correction is out of rangeprotected static final StringMessage when the suspension force value is negativeprotected float[]The value of the anchorPoint fieldprotected float[]The value of the axis1 fieldprotected float[]The value of the axis2 fieldprotected float[]The value of the body1AnchorPoint fieldprotected float[]The value of the body1Axis fieldprotected float[]The value of the body1AnchorPoint fieldprotected float[]The value of the body1Axis fieldprotected floatThe value of the desiredAngularVelocity1 fieldprotected floatThe value of the desiredAngularVelocity2 fieldprotected floatThe value of the hinge1Angle fieldprotected floatThe value of the hinge1AngleRate fieldprotected floatThe value of the hinge2Angle fieldprotected floatThe value of the hinge2AngleRate fieldprotected floatThe value of the maxAngle1 fieldprotected floatThe value of the maxTorque1 fieldprotected floatThe value of the maxTorque2 fieldprotected floatThe value of the minAngle1 fieldprotected floatThe value of the stopBounce1 fieldprotected floatThe value of the stopConstantForceMix1 fieldprotected floatThe value of the stopErrorCorrection1 fieldprotected floatThe value of the suspensionErrorCorrection fieldprotected floatThe value of the suspensionForce 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, vfMustOutputFields 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 double axis hinge joint node object.Construct a new instance of this node based on the details from the given node. -
Method Summary
Modifier and TypeMethodDescriptionvoiddelete()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.intgetFieldIndex(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).intGet the number of fields.intGet the primary type of this node.voidsendRoute(double time, int srcIndex, VRMLNodeType destNode, int destIndex) Send a routed value from this node to the given destination node.voidsetBody1(VRMLNodeType body) Set node content as replacement for the body1 field.voidsetBody2(VRMLNodeType body) Set node content as replacement for the body1 field.voidsetODEWorld(org.odejava.World wld, org.odejava.JointGroup grp) Set the parent world that this body belongs to.voidNotification that the construction phase of this node has finished.voidsetValue(int index, float value) Set the value of the field at the given index as a single float.voidsetValue(int index, float[] value, int numValid) Set the value of the field at the given index as a single float.voidInstruction 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, setValueMethods 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, updateRefsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.web3d.vrml.nodes.FrameStateListener
allEventsCompleteMethods inherited from interface org.web3d.vrml.lang.VRMLNode
getSecondaryType, getUserData, getVRMLNodeName, isDEF, setErrorReporter, setUserData, setVersionMethods 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_ANCHOR_POINT
protected static final int FIELD_ANCHOR_POINTThe field index for anchorPoint- See Also:
-
FIELD_AXIS1
protected static final int FIELD_AXIS1The field index for axis1- See Also:
-
FIELD_AXIS2
protected static final int FIELD_AXIS2The field index for axis2- See Also:
-
FIELD_BODY1_ANCHOR_POINT
protected static final int FIELD_BODY1_ANCHOR_POINTThe field index for body1AnchorPoint- See Also:
-
FIELD_BODY2_ANCHOR_POINT
protected static final int FIELD_BODY2_ANCHOR_POINTThe field index for body2AnchorPoint- See Also:
-
FIELD_ANGULAR_VELOCITY1
protected static final int FIELD_ANGULAR_VELOCITY1The field index for desiredAngularVelocity1- See Also:
-
FIELD_ANGULAR_VELOCITY2
protected static final int FIELD_ANGULAR_VELOCITY2The field index for desiredAngularVelocity2- See Also:
-
FIELD_BODY1_AXIS
protected static final int FIELD_BODY1_AXISThe field index for body1Axis- See Also:
-
FIELD_BODY2_AXIS
protected static final int FIELD_BODY2_AXISThe field index for body2Axis- See Also:
-
FIELD_MIN_ANGLE1
protected static final int FIELD_MIN_ANGLE1The field index for minAngle1- See Also:
-
FIELD_MAX_ANGLE1
protected static final int FIELD_MAX_ANGLE1The field index for maxAngle1- See Also:
-
FIELD_MAX_TORQUE1
protected static final int FIELD_MAX_TORQUE1The field index for maxTorque1- See Also:
-
FIELD_MAX_TORQUE2
protected static final int FIELD_MAX_TORQUE2The field index for maxTorque2- See Also:
-
FIELD_HINGE1_ANGLE
protected static final int FIELD_HINGE1_ANGLEThe field index for hinge1Angle- See Also:
-
FIELD_HINGE2_ANGLE
protected static final int FIELD_HINGE2_ANGLEThe field index for hinge2Angle- See Also:
-
FIELD_HINGE1_ANGLE_RATE
protected static final int FIELD_HINGE1_ANGLE_RATEThe field index for hinge1AngleRate- See Also:
-
FIELD_HINGE2_ANGLE_RATE
protected static final int FIELD_HINGE2_ANGLE_RATEThe field index for hinge2AngleRate- See Also:
-
FIELD_STOP_BOUNCE1
protected static final int FIELD_STOP_BOUNCE1The field index for stopBounce1- See Also:
-
FIELD_STOP_ERROR_CORRECTION1
protected static final int FIELD_STOP_ERROR_CORRECTION1The field index for stopErrorCorrection1- See Also:
-
FIELD_STOP_CFM1
protected static final int FIELD_STOP_CFM1The field index for stopConstantForceMix1- See Also:
-
FIELD_SUSPENSION_FORCE
protected static final int FIELD_SUSPENSION_FORCEThe field index for suspensionForce- See Also:
-
FIELD_SUSPENSION_ERP
protected static final int FIELD_SUSPENSION_ERPThe field index for suspensionErrorCorrection- See Also:
-
LAST_INDEX
protected static final int LAST_INDEXLast index used by this base node- See Also:
-
MIN_ANGLE1_MSG
Message when the minAngle1 value is out of range- See Also:
-
MAX_ANGLE1_MSG
Message when the maxAngle1 value is out of range- See Also:
-
BOUNCE1_RANGE_MSG
Message when the stopBounce value is out of range- See Also:
-
STOP_ERROR1_RANGE_MSG
Message when the stopErrorCorrection1 value is out of range- See Also:
-
STOP_CFM1_NEG_MSG
Message when the suspension force value is negative- See Also:
-
SUSP_NEG_MSG
Message when the suspension force value is negative- See Also:
-
SUSP_ERROR_RANGE_MSG
The suspenion error correction is out of range- See Also:
-
vfAnchorPoint
protected float[] vfAnchorPointThe value of the anchorPoint field -
vfBody1AnchorPoint
protected float[] vfBody1AnchorPointThe value of the body1AnchorPoint field -
vfBody2AnchorPoint
protected float[] vfBody2AnchorPointThe value of the body1AnchorPoint field -
vfAxis1
protected float[] vfAxis1The value of the axis1 field -
vfAxis2
protected float[] vfAxis2The value of the axis2 field -
vfBody1Axis
protected float[] vfBody1AxisThe value of the body1Axis field -
vfBody2Axis
protected float[] vfBody2AxisThe value of the body1Axis field -
vfDesiredAngularVelocity1
protected float vfDesiredAngularVelocity1The value of the desiredAngularVelocity1 field -
vfDesiredAngularVelocity2
protected float vfDesiredAngularVelocity2The value of the desiredAngularVelocity2 field -
vfMaxTorque1
protected float vfMaxTorque1The value of the maxTorque1 field -
vfMaxTorque2
protected float vfMaxTorque2The value of the maxTorque2 field -
vfMinAngle1
protected float vfMinAngle1The value of the minAngle1 field -
vfMaxAngle1
protected float vfMaxAngle1The value of the maxAngle1 field -
vfHinge1Angle
protected float vfHinge1AngleThe value of the hinge1Angle field -
vfHinge2Angle
protected float vfHinge2AngleThe value of the hinge2Angle field -
vfHinge1AngleRate
protected float vfHinge1AngleRateThe value of the hinge1AngleRate field -
vfHinge2AngleRate
protected float vfHinge2AngleRateThe value of the hinge2AngleRate field -
vfStopBounce1
protected float vfStopBounce1The value of the stopBounce1 field -
vfStopErrorCorrection1
protected float vfStopErrorCorrection1The value of the stopErrorCorrection1 field -
vfStopConstantForceMix1
protected float vfStopConstantForceMix1The value of the stopConstantForceMix1 field -
vfSuspensionForce
protected float vfSuspensionForceThe value of the suspensionForce field -
vfSuspensionErrorCorrection
protected float vfSuspensionErrorCorrectionThe value of the suspensionErrorCorrection field -
odeJoint
protected org.odejava.JointHinge2 odeJointThe ODE representation of the joint
-
-
Constructor Details
-
BaseDoubleAxisHingeJoint
public BaseDoubleAxisHingeJoint()Construct a new double axis hinge joint node object. -
BaseDoubleAxisHingeJoint
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:
setBody1in interfaceVRMLRigidJointNodeType- Overrides:
setBody1in 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:
setBody2in interfaceVRMLRigidJointNodeType- Overrides:
setBody2in classBaseJointNode- Parameters:
body- The new body representation. null will act like delete- Throws:
InvalidFieldValueException- The node does not match the required 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:
setupFinishedin interfaceVRMLNodeType- Overrides:
setupFinishedin classBaseJointNode
-
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:
getPrimaryTypein interfaceVRMLNode- Overrides:
getPrimaryTypein classBaseJointNode- Returns:
- The primary type
-
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:
getFieldValuein interfaceVRMLNodeType- Overrides:
getFieldValuein 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:
sendRoutein interfaceVRMLNodeType- Overrides:
sendRoutein 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:
setValuein interfaceVRMLNodeType- Overrides:
setValuein 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:
setValuein interfaceVRMLNodeType- Overrides:
setValuein 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
-