## Libraries.Game.Physics.ConstraintDescription3D Documentation

This class stores different constraint values that allows us to describe a joint constraint.

Inherits from: Libraries.Language.Object

## Actions Documentation

### 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.

#### 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.

#### 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)
``````

### GetDiagonal()

This action returns a number whose reciprocal will be used to scale the impulse change applied to linear velocity.

number:

### 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()
``````

### GetLinearJointAxis()

This action initializes this ConstraintDescription3D such that this class is used to store one constraitn on one rigid body. action Initialize(Matrix3 world2A, Vector3 relativePosition1, Vector3 relativePosition2, Vector3 jointAxis, Vector3 inertiaInverseA, number massInverseA) linearJointAxis:Set(jointAxis) aJ:Set(relativePosition1):CrossProduct(jointAxis) world2A:Transform(aJ) bJ:Set(jointAxis) bJ:Scale(-1) Vector3 temp temp:Set(relativePosition2):CrossProduct(bJ) bJ:Set(temp) world2A:Transform(bJ) minvJt0:SetX(inertiaInverseA:GetX() * aJ:GetX()) minvJt0:SetY(inertiaInverseA:GetY() * aJ:GetY()) minvJt0:SetZ(inertiaInverseA:GetZ() * aJ:GetZ()) minvJt1:Set(0, 0, 0) diag = massInverseA + minvJt0:DotProduct(aJ) end

### GetNonDiagonal(Libraries.Game.Physics.ConstraintDescription3D descriptionB, number massInverseA, number massInverseB)

This action returns a number whose reciprocal will be used to scale the impulse change applied to angular velocity if this ConstraintDescription3D describes 2 constraints shared by two different rigid bodies.

number:

### GetNonDiagonal(Libraries.Game.Physics.ConstraintDescription3D descriptionB, number massInverseA)

This action returns a number whose reciprocal will be used to scale the impulse change applied to angular velocity if this ConstraintDescription3D describes 2 constraints on the same rigid body.

number:

### GetRelativeVelocity(Libraries.Compute.Vector3 linearVelocityA, Libraries.Compute.Vector3 angularVelocityA, Libraries.Compute.Vector3 linearVelocityB, Libraries.Compute.Vector3 angularVelocityB)

This action returns the relative velocities between two 3D objects whose constraints are stored inside this ConstraintDescription3D.

number:

### Initialize(Libraries.Compute.Vector3 jointAxis, Libraries.Compute.Matrix3 world2A, Libraries.Compute.Matrix3 world2B, Libraries.Compute.Vector3 inertiaInverseA, Libraries.Compute.Vector3 inertiaInverseB)

This action initializes this ConstraintDescription3D such that this class is used to store the angular constraint between two rigid bodies.

### Initialize(Libraries.Compute.Vector3 axisInA, Libraries.Compute.Vector3 axisInB, Libraries.Compute.Vector3 inertiaInverseA, Libraries.Compute.Vector3 inertiaInverseB)

This action initializes this ConstraintDescription3D such that this class is used to store the angular constraint between two rigid bodies.

### Initialize(Libraries.Compute.Matrix3 world2A, Libraries.Compute.Matrix3 world2B, Libraries.Compute.Vector3 relativePosition1, Libraries.Compute.Vector3 relativePosition2, Libraries.Compute.Vector3 jointAxis, Libraries.Compute.Vector3 inertiaInverseA, number massInverseA, Libraries.Compute.Vector3 inertiaInverseB, number massInverseB)

relativePosition1: relative position of constraint coordinate system center in world coordinates relativePosition2: relative position of constraint coordinate system center in world coordinates This action intializeds the description such that this ConstraintDescription3D is used for the constraint between two different rigid bodies.