Libraries.Game.Physics.Joints.CustomizableJoint3D Documentation
This class is a class that allows a joint to have the ability to rotate around any axis and move anywhere in 3D space. The angular limit in the x-direction is from -pi to pi; y-direction is from -pi/2 to pi/2; z-direction is from -pi/2 to pi/2.
Inherits from: Libraries.Game.Physics.Joints.Joint3D, Libraries.Language.Object
Actions Documentation
BuildAngularJacobian(integer jacobianAngularIndex, Libraries.Compute.Vector3 jointAxisW)
This action finds values that are useful for calculating the angular difference between the two objects. This action is used internally.
Parameters
- integer jacobianAngularIndex
- Libraries.Compute.Vector3
BuildJacobian()
This action calls the BuildAngularJacobian and BuildLinearJacobian. This action is called by the Collision Solver to gather information on the joint before calling the SolveJoint action. This action is used internally.
BuildLinearJacobian(integer jacobianLinearIndex, Libraries.Compute.Vector3 normalWorld, Libraries.Compute.Vector3 pivotAInW, Libraries.Compute.Vector3 pivotBInW)
This action finds the values that are useful to calculate if the two objects are within the position limits. This action is used internally.
Parameters
- integer jacobianLinearIndex
- Libraries.Compute.Vector3
- Libraries.Compute.Vector3
- Libraries.Compute.Vector3
CalculateAnchorPosition()
This action calculates the center of the system that composes of object A and object B. This action is used internally.
CalculateAngleInfo()
This action calculates the angular difference between object A and object B. This action is used internally.
CalculateTransforms()
This action calculates the angular difference and position difference of the joint between objects A and B. This action is used internally.
Compare(Libraries.Language.Object object)
This action compares two object hash codes and returns an integer. The result is larger if this hash code is larger than the object passed as a parameter, smaller, or equal. In this case, -1 means smaller, 0 means equal, and 1 means larger. This action was changed in Quorum 7 to return an integer, instead of a CompareResult object, because the previous implementation was causing efficiency issues.
Parameters
- Libraries.Language.Object: The object to compare to.
Return
integer: The Compare result, Smaller, Equal, or Larger.
Example
Object o
Object t
integer result = o:Compare(t) //1 (larger), 0 (equal), or -1 (smaller)
Equals(Libraries.Language.Object object)
This action determines if two objects are equal based on their hash code values.
Parameters
- Libraries.Language.Object: The to be compared.
Return
boolean: True if the hash codes are equal and false if they are not equal.
Example
use Libraries.Language.Object
use Libraries.Language.Types.Text
Object o
Text t
boolean result = o:Equals(t)
GetAngle(integer axisIndex)
This action returns the relative angle.
Parameters
- integer axisIndex: The axis that you want to test, 0 for x, 1 for y, 2 for z.
Return
number: the relative angle.
GetAppliedImpulse()
This action returns the amount of impulse that should be applied to the items in the joints to allow them to continue to be joined.
Return
number: the amount of impulse that should be applied to the items.
GetAxis(integer axisIndex)
This action returns the rotational axis in global coordinates.
Parameters
- integer axisIndex: The axis that you want to test, 0 for x, 1 for y, 2 for z.
Return
Libraries.Compute.Vector3: the rotational axis in global coordinates.
GetCalculatedTransformA()
This action returns the position and tilt of the object A.
Return
Libraries.Game.Collision.PhysicsPosition3D: the position and tilt of the object A.
GetCalculatedTransformB()
This action returns the position and tilt of the object B.
Return
Libraries.Game.Collision.PhysicsPosition3D: the position and tilt of the object B.
GetEdgeA()
This action returns the first JointEdge3D stored inside this Joint3D.
Return
Libraries.Game.Physics.Joints.JointEdge3D: the first JointEdge3D stored inside this Joint3D.
GetEdgeB()
This action returns the second JointEdge3D stored inside this Joint3D.
Return
Libraries.Game.Physics.Joints.JointEdge3D: the second JointEdge3D stored inside this Joint3D.
GetFrameOffsetA()
This action returns the position and tilt of the joint relative to object A.
Return
Libraries.Game.Collision.PhysicsPosition3D: the position and tilt of the joint relative to object A.
GetFrameOffsetB()
This action returns the position and tilt of the joint relative to object B.
Return
Libraries.Game.Collision.PhysicsPosition3D: the position and tilt of the joint relative to object B.
GetHashCode()
This action gets the hash code for an object.
Return
integer: The integer hash code of the object.
Example
Object o
integer hash = o:GetHashCode()
GetInformation(Libraries.Game.Physics.CollisionSolverInformation3D information)
This action returns the type of joint that you have.
Parameters
GetItemA()
This action returns the first 3D item that is joined by this Joint3D.
Return
Libraries.Interface.Item3D: the first 3D item that is joined by this Joint3D.
GetItemB()
This action returns the second 3D item that is joined by this Joint3D.
Return
Libraries.Interface.Item3D: the second 3D item that is joined by this Joint3D.
GetNext()
This action gets you the next information about a joint (stored in another Joint3D) inside a linked list of Joint3Ds.
Return
Libraries.Game.Physics.Joints.Joint3D: the next joint.
GetPrevious()
This action gets you the previous information about a joint (stored in another Joint3D) inside a linked list of Joint3Ds.
Return
Libraries.Game.Physics.Joints.Joint3D: the previous joint.
GetRotationalLimitMotor(integer index)
This action returns the angular limit.
Parameters
- integer index: The axis that you want to test, 0 for x, 1 for y, 2 for z.
Return
Libraries.Game.Physics.Joints.RotationalLimitMotor3D: the angular limit stored inside a RotationalLimitMotor3D object.
GetTranslationalLimitMotor()
This action returns the position limit.
Return
Libraries.Game.Physics.Joints.TranslationalLimitMotor3D: the position limit stored inside a TranslationalLimitMotor3D object.
GetType()
This action returns the type of joint that you have.
Return
integer: the type of joint that you have.
InCollisionGroup()
This action returns whether this joint is been accounted for in a collision group.
Return
boolean: true when the joint has already been assigned to a collision group, false if the joint is not
Initialize(Libraries.Interface.Item3D itemA, Libraries.Interface.Item3D itemB, Libraries.Game.Collision.PhysicsPosition3D positionA, Libraries.Game.Collision.PhysicsPosition3D positionB, boolean useLinearReferenceFrameA)
This action initializes the joint.
Parameters
- Libraries.Interface.Item3D: The first item.
- Libraries.Interface.Item3D: The second item.
- Libraries.Game.Collision.PhysicsPosition3D: The center and orientation of the joint connection in A's point of view.
- Libraries.Game.Collision.PhysicsPosition3D: The center and orientation of the joint connection in B's point of view.
- boolean useLinearReferenceFrameA: This is set to true when you want to define the limits from the point of view of the first object's center and orientation.
IsLimited(integer limitIndex)
This action returns if one of the axis is limited in position.
Parameters
- integer limitIndex: The axis that you want to test, 0 for x, 1 for y, 2 for z.
Return
boolean: false if the axis is not limited, true if the axis is limited.
MatrixToEulerXYZ(Libraries.Compute.Matrix3 mat, Libraries.Compute.Vector3 xyz)
This action converts a rotational matrix to a another representation of rotation: Euler angles. This action is used internally.
Parameters
- Libraries.Compute.Matrix3: The matrix that you are going to convert from.
- Libraries.Compute.Vector3: The Euler angles.
Return
boolean: false if this conversion was unsuccessful, true if this conversion was successful.
SetAngularLowerLimit(Libraries.Compute.Vector3 angularLower)
This action sets the lower angular limit.
Parameters
- Libraries.Compute.Vector3: The lower angular limit.
SetAngularUpperLimit(Libraries.Compute.Vector3 angularUpper)
This action sets the upper angular limit.
Parameters
- Libraries.Compute.Vector3: The upper angular limit.
SetAppliedImpulse(number impulse)
This action sets the amount of impulse that should be applied to the items in the joints to allow them to continue to be joined.
Parameters
- number impulse: The amount of impulse that should be applied to the items
SetEdgeA(Libraries.Game.Physics.Joints.JointEdge3D edgeA)
This action sets the first JointEdge3D stored inside this Joint3D.
Parameters
- Libraries.Game.Physics.Joints.JointEdge3D: The first JointEdge3D stored inside this Joint3D.
SetEdgeB(Libraries.Game.Physics.Joints.JointEdge3D edgeB)
This action sets the second JointEdge3D stored inside this Joint3D.
Parameters
SetInCollisionGroup(boolean flag)
This action sets whether this joint is been accounted for in a collision group.
Parameters
- boolean flag: True if the joint has been assigned to a collision group.
SetItemA(Libraries.Interface.Item3D item)
This action sets the first 3D item that is joined by this Joint3D.
Parameters
- Libraries.Interface.Item3D: The first 3D item that is joined by this Joint3D.
SetItemB(Libraries.Interface.Item3D item)
This action sets the second 3D item that is joined by this Joint3D.
Parameters
- Libraries.Interface.Item3D: The second 3D item that is joined by this Joint3D.
SetLimit(integer axis, number lo, number hi)
This action sets the position limit of the one of the axis.
Parameters
- integer axis: The axis that you want to set, 0 for x, 1 for y, 2 for z.
- number lo: The lower position limit.
- number hi: The higher position limit.
SetLinearLowerLimit(Libraries.Compute.Vector3 linearLower)
This action sets the lower position limit.
Parameters
- Libraries.Compute.Vector3: The lower position limit.
SetLinearUpperLimit(Libraries.Compute.Vector3 linearUpper)
This action sets the upper position limit.
Parameters
- Libraries.Compute.Vector3: The upper position limit.
SetNext(Libraries.Game.Physics.Joints.Joint3D next)
This action lets you store another information about a joint (stored in another Joint3D) as a next link to the current Joint3D.
Parameters
- Libraries.Game.Physics.Joints.Joint3D: The next joint.
SetPrevious(Libraries.Game.Physics.Joints.Joint3D previous)
This action lets you store another information about a joint (stored in another Joint3D) as a previous link to the current Joint3D.
Parameters
- Libraries.Game.Physics.Joints.Joint3D: The previous joint.
SetType(integer type)
This action sets the type of joint that you have. BallAndSocket = 0, Hinge = 1, Customizable = 2, Slider = 3
Parameters
- integer type: The type of joint that you have.
SolveJoint(number localtimeStep)
This action solves the constraint of this joint and make sure that objects A and B is able to move accordint to the joint constraint applied. This action is used internally.
Parameters
- number localtimeStep
TestAngularLimitMotor(integer axisIndex)
This action tests if the relative angle between the two objects is within the angular limit that we defined. This action is used internally.
Parameters
- integer axisIndex: The axis that you want to test, 0 for x, 1 for y, 2 for z.
Return
boolean: false if outside of limit, true if within limit.
getMatrixElement(Libraries.Compute.Matrix3 mat, integer index)
This action returns a number inside a matrix. This action is used internally.
Parameters
- Libraries.Compute.Matrix3: The matrix that you want to extract from.
- integer index: The number that determines which element of the matrix you are extracting. Matrix3 mat = [index0, index1, index2; index3, index4, index5; index6, index7, index8]
Return
number: the matrix value at row number "index mod 3" and column number "index/3"
updateRHS(number timeStep)
This action solves the constraint of this joint and make sure that objects A and B is able to move accordint to the joint constraint applied. This action is used internally.
Parameters
- number timeStep
On this page
Variables TableAction Documentation- BuildAngularJacobian(integer jacobianAngularIndex, Libraries.Compute.Vector3 jointAxisW)
- BuildJacobian()
- BuildLinearJacobian(integer jacobianLinearIndex, Libraries.Compute.Vector3 normalWorld, Libraries.Compute.Vector3 pivotAInW, Libraries.Compute.Vector3 pivotBInW)
- CalculateAnchorPosition()
- CalculateAngleInfo()
- CalculateTransforms()
- Compare(Libraries.Language.Object object)
- Equals(Libraries.Language.Object object)
- GetAngle(integer axisIndex)
- GetAppliedImpulse()
- GetAxis(integer axisIndex)
- GetCalculatedTransformA()
- GetCalculatedTransformB()
- GetEdgeA()
- GetEdgeB()
- GetFrameOffsetA()
- GetFrameOffsetB()
- GetHashCode()
- GetInformation(Libraries.Game.Physics.CollisionSolverInformation3D information)
- GetItemA()
- GetItemB()
- GetNext()
- GetPrevious()
- GetRotationalLimitMotor(integer index)
- GetTranslationalLimitMotor()
- GetType()
- InCollisionGroup()
- Initialize(Libraries.Interface.Item3D itemA, Libraries.Interface.Item3D itemB, Libraries.Game.Collision.PhysicsPosition3D positionA, Libraries.Game.Collision.PhysicsPosition3D positionB, boolean useLinearReferenceFrameA)
- IsLimited(integer limitIndex)
- MatrixToEulerXYZ(Libraries.Compute.Matrix3 mat, Libraries.Compute.Vector3 xyz)
- SetAngularLowerLimit(Libraries.Compute.Vector3 angularLower)
- SetAngularUpperLimit(Libraries.Compute.Vector3 angularUpper)
- SetAppliedImpulse(number impulse)
- SetEdgeA(Libraries.Game.Physics.Joints.JointEdge3D edgeA)
- SetEdgeB(Libraries.Game.Physics.Joints.JointEdge3D edgeB)
- SetInCollisionGroup(boolean flag)
- SetItemA(Libraries.Interface.Item3D item)
- SetItemB(Libraries.Interface.Item3D item)
- SetLimit(integer axis, number lo, number hi)
- SetLinearLowerLimit(Libraries.Compute.Vector3 linearLower)
- SetLinearUpperLimit(Libraries.Compute.Vector3 linearUpper)
- SetNext(Libraries.Game.Physics.Joints.Joint3D next)
- SetPrevious(Libraries.Game.Physics.Joints.Joint3D previous)
- SetType(integer type)
- SolveJoint(number localtimeStep)
- TestAngularLimitMotor(integer axisIndex)
- getMatrixElement(Libraries.Compute.Matrix3 mat, integer index)
- updateRHS(number timeStep)