Class CapsuleShape
Represents a capsule shape defined by a radius and the length of its cylindrical section.
public class CapsuleShape : RigidBodyShape, IDynamicTreeProxy, IPartitionedSetIndex, IUpdatableBoundingBox, ISupportFeature, ISupportMappable, IRayCastable, IAngularSweepTestable, ISweepTestable, IDistanceTestable, IDebugDrawable
- Inheritance
-
CapsuleShape
- Implements
- Inherited Members
Constructors
CapsuleShape(float, float)
Creates a capsule with its symmetry axis along the local Y-axis.
public CapsuleShape(float radius = 0.5, float length = 1)
Parameters
radiusfloatThe radius of the capsule.
lengthfloatThe length of the cylindrical part of the capsule, excluding the half-spheres at both ends.
Exceptions
- ArgumentOutOfRangeException
Thrown when
radiusis less than or equal to zero or whenlengthis negative.
Properties
Length
Gets or sets the length of the cylindrical part of the capsule, excluding the half-spheres on both ends.
public float Length { get; set; }
Property Value
Exceptions
- ArgumentOutOfRangeException
Thrown when
valueis negative.
Radius
Gets or sets the radius of the capsule.
public float Radius { get; set; }
Property Value
Exceptions
- ArgumentOutOfRangeException
Thrown when
valueis less than or equal to zero.
Methods
CalculateBoundingBox(in JQuaternion, in JVector, out JBoundingBox)
public override void CalculateBoundingBox(in JQuaternion orientation, in JVector position, out JBoundingBox box)
Parameters
orientationJQuaternionpositionJVectorboxJBoundingBox
CalculateMassInertia(out JSymmetricMatrix, out JVector, out float)
Calculates the shape's mass, center of mass, and inertia at unit density. The default implementation approximates the surface; overrides can provide exact mass properties.
public override void CalculateMassInertia(out JSymmetricMatrix inertia, out JVector com, out float mass)
Parameters
inertiaJSymmetricMatrixcomJVectormassfloat
Remarks
The inertia tensor is computed relative to the coordinate system origin (0,0,0), not the center of mass.
DebugDrawLocal<TSink>(ref TSink, in DebugDrawSettings)
Draws the shape's surface as triangles in local coordinates.
protected override void DebugDrawLocal<TSink>(ref TSink triangleSink, in DebugDrawSettings settings) where TSink : ISink<JTriangle>
Parameters
triangleSinkTSinkThe destination for generated triangles.
settingsDebugDrawSettingsThe visualization settings.
Type Parameters
TSink
Remarks
Override to provide custom debug geometry; otherwise, the surface is approximated. Use outward-facing triangles for closed surfaces. Body and shape transforms are applied automatically.
GetCenter(out JVector)
Returns a point inside the shape. It does not need to be the center of mass.
public override void GetCenter(out JVector point)
Parameters
pointJVectorAn interior point in local space.
SupportFeature(in JVector, float, Span<JVector>)
Writes the outermost feature of the shape in the given direction.
public override int SupportFeature(in JVector direction, float tolerance, Span<JVector> vertices)
Parameters
directionJVectorThe direction in local space. Does not need to be normalized.
tolerancefloatThe sine of the angle within which directions share the feature.
verticesSpan<JVector>Receives the vertices in local space: one for a point, two for a segment, three or more for a convex polygon in winding order. At least MaxVertices entries long.
Returns
- int
The number of vertices written, at least one.
Remarks
The default samples the support mapping with SupportFeatureSampler. Shapes that know their features analytically should override it.
SupportMap(in JVector, out JVector)
Computes the point on the shape that is furthest in the specified direction.
public override void SupportMap(in JVector direction, out JVector result)