Table of Contents

Class TwistAngle

Namespace
Jitter2.Dynamics.Constraints
Assembly
Jitter2.dll

Limits relative twist around axes attached to two bodies, leaving swing and translation free.

public class TwistAngle : Constraint<TwistAngle.TwistLimitData>, IDebugDrawable
Inheritance
TwistAngle
Implements
Inherited Members

Properties

Angle

Gets the current twist angle relative to the initial pose.

public JAngle Angle { get; }

Property Value

JAngle

Bias

Gets or sets the bias factor controlling how aggressively angular error is corrected.

public float Bias { get; set; }

Property Value

float

Default is 0.2. Higher values correct errors faster but may cause instability.

Impulse

Gets the accumulated solver impulse from the last solved substep.

public float Impulse { get; }

Property Value

float

Limit

Sets the angular limits for the twist rotation.

public AngularLimit Limit { set; }

Property Value

AngularLimit

Exceptions

ArgumentException

Thrown when either assigned limit value is not finite.

Softness

Gets or sets the softness (compliance) of the constraint.

public float Softness { get; set; }

Property Value

float

Default is DefaultAngularSoftness. Higher values allow more angular error but improve stability.

Methods

Create()

Called when the world creates this constraint. Override to set DispatchId to the ID returned by registering the constraint's solver methods.

protected override void Create()

DebugDraw(IDebugDrawer)

Draws a debug visualization of this constraint.

public override void DebugDraw(IDebugDrawer drawer)

Parameters

drawer IDebugDrawer

The debug drawer to receive visualization primitives.

Exceptions

NotImplementedException

Thrown if the derived class does not override this method.

DebugDraw(IDebugDrawer, in DebugDrawSettings)

Draws this constraint using the supplied visualization settings. Custom constraints that only override DebugDraw(IDebugDrawer) use their default visualization.

public override void DebugDraw(IDebugDrawer drawer, in DebugDrawSettings settings)

Parameters

drawer IDebugDrawer
settings DebugDrawSettings

Initialize(JVector, JVector)

Initializes the constraint with a fixed twist angle (no rotation allowed).

public void Initialize(JVector axis1, JVector axis2)

Parameters

axis1 JVector

The twist axis for body 1 in world space.

axis2 JVector

The twist axis for body 2 in world space.

Exceptions

ArgumentException

Thrown when axis1 or axis2 is zero or contains a non-finite value.

Initialize(JVector, JVector, AngularLimit)

Initializes the constraint from world-space axes and angular limits.

public void Initialize(JVector axis1, JVector axis2, AngularLimit limit)

Parameters

axis1 JVector

The twist axis for body 1 in world space.

axis2 JVector

The twist axis for body 2 in world space.

limit AngularLimit

The allowed relative twist angle range.

Remarks

The axes rotate with their respective bodies. The initial pose defines zero twist. Equal or reversed limits fix the twist at their midpoint. Default values: Softness = DefaultAngularSoftness, Bias = DefaultAngularBias.

Exceptions

ArgumentException

Thrown when axis1 or axis2 is zero or contains a non-finite value, or when either value in limit is not finite.

IterateTwistAngle(ref ConstraintData, in TimeStep)

public static void IterateTwistAngle(ref ConstraintData constraint, in TimeStep timeStep)

Parameters

constraint ConstraintData
timeStep TimeStep

PrepareForIterationTwistAngle(ref ConstraintData, in TimeStep)

public static void PrepareForIterationTwistAngle(ref ConstraintData constraint, in TimeStep timeStep)

Parameters

constraint ConstraintData
timeStep TimeStep

ResetWarmStart()

Clears impulses saved from the previous solve, without changing constraint settings.

public override void ResetWarmStart()

Remarks

Use after restoring a saved state or making a sudden change to the bodies, when impulses from their previous state should no longer be reused.

ToString()

Returns a short description of the constraint's ID, connected bodies, and state.

public override string ToString()

Returns

string