Files
Webklar.com/node_modules/@dimforge/rapier3d-compat/geometry/collider.d.ts
Basilosaurusrex f027651f9b main repo
2025-11-24 18:09:40 +01:00

764 lines
32 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Rotation, Vector } from "../math";
import { CoefficientCombineRule, RigidBody, RigidBodySet } from "../dynamics";
import { ActiveHooks, ActiveEvents } from "../pipeline";
import { InteractionGroups } from "./interaction_groups";
import { Shape, ShapeType } from "./shape";
import { Ray, RayIntersection } from "./ray";
import { PointProjection } from "./point";
import { ShapeColliderTOI, ShapeTOI } from "./toi";
import { ShapeContact } from "./contact";
import { ColliderSet } from "./collider_set";
/**
* Flags affecting whether collision-detection happens between two colliders
* depending on the type of rigid-bodies they are attached to.
*/
export declare enum ActiveCollisionTypes {
/**
* Enable collision-detection between a collider attached to a dynamic body
* and another collider attached to a dynamic body.
*/
DYNAMIC_DYNAMIC = 1,
/**
* Enable collision-detection between a collider attached to a dynamic body
* and another collider attached to a kinematic body.
*/
DYNAMIC_KINEMATIC = 12,
/**
* Enable collision-detection between a collider attached to a dynamic body
* and another collider attached to a fixed body (or not attached to any body).
*/
DYNAMIC_FIXED = 2,
/**
* Enable collision-detection between a collider attached to a kinematic body
* and another collider attached to a kinematic body.
*/
KINEMATIC_KINEMATIC = 52224,
/**
* Enable collision-detection between a collider attached to a kinematic body
* and another collider attached to a fixed body (or not attached to any body).
*/
KINEMATIC_FIXED = 8704,
/**
* Enable collision-detection between a collider attached to a fixed body (or
* not attached to any body) and another collider attached to a fixed body (or
* not attached to any body).
*/
FIXED_FIXED = 32,
/**
* The default active collision types, enabling collisions between a dynamic body
* and another body of any type, but not enabling collisions between two non-dynamic bodies.
*/
DEFAULT = 15,
/**
* Enable collisions between any kind of rigid-bodies (including between two non-dynamic bodies).
*/
ALL = 60943
}
/**
* The integer identifier of a collider added to a `ColliderSet`.
*/
export declare type ColliderHandle = number;
/**
* A geometric entity that can be attached to a body so it can be affected
* by contacts and proximity queries.
*/
export declare class Collider {
private colliderSet;
readonly handle: ColliderHandle;
private _shape;
private _parent;
constructor(colliderSet: ColliderSet, handle: ColliderHandle, parent: RigidBody | null, shape?: Shape);
/** @internal */
finalizeDeserialization(bodies: RigidBodySet): void;
private ensureShapeIsCached;
/**
* The shape of this collider.
*/
get shape(): Shape;
/**
* Checks if this collider is still valid (i.e. that it has
* not been deleted from the collider set yet).
*/
isValid(): boolean;
/**
* The world-space translation of this rigid-body.
*/
translation(): Vector;
/**
* The world-space orientation of this rigid-body.
*/
rotation(): Rotation;
/**
* Is this collider a sensor?
*/
isSensor(): boolean;
/**
* Sets whether or not this collider is a sensor.
* @param isSensor - If `true`, the collider will be a sensor.
*/
setSensor(isSensor: boolean): void;
/**
* Sets the new shape of the collider.
* @param shape - The colliders new shape.
*/
setShape(shape: Shape): void;
/**
* Sets whether this collider is enabled or not.
*
* @param enabled - Set to `false` to disable this collider (its parent rigid-body wont be disabled automatically by this).
*/
setEnabled(enabled: boolean): void;
/**
* Is this collider enabled?
*/
isEnabled(): boolean;
/**
* Sets the restitution coefficient of the collider to be created.
*
* @param restitution - The restitution coefficient in `[0, 1]`. A value of 0 (the default) means no bouncing behavior
* while 1 means perfect bouncing (though energy may still be lost due to numerical errors of the
* constraints solver).
*/
setRestitution(restitution: number): void;
/**
* Sets the friction coefficient of the collider to be created.
*
* @param friction - The friction coefficient. Must be greater or equal to 0. This is generally smaller than 1. The
* higher the coefficient, the stronger friction forces will be for contacts with the collider
* being built.
*/
setFriction(friction: number): void;
/**
* Gets the rule used to combine the friction coefficients of two colliders
* colliders involved in a contact.
*/
frictionCombineRule(): CoefficientCombineRule;
/**
* Sets the rule used to combine the friction coefficients of two colliders
* colliders involved in a contact.
*
* @param rule The combine rule to apply.
*/
setFrictionCombineRule(rule: CoefficientCombineRule): void;
/**
* Gets the rule used to combine the restitution coefficients of two colliders
* colliders involved in a contact.
*/
restitutionCombineRule(): CoefficientCombineRule;
/**
* Sets the rule used to combine the restitution coefficients of two colliders
* colliders involved in a contact.
*
* @param rule The combine rule to apply.
*/
setRestitutionCombineRule(rule: CoefficientCombineRule): void;
/**
* Sets the collision groups used by this collider.
*
* Two colliders will interact iff. their collision groups are compatible.
* See the documentation of `InteractionGroups` for details on teh used bit pattern.
*
* @param groups - The collision groups used for the collider being built.
*/
setCollisionGroups(groups: InteractionGroups): void;
/**
* Sets the solver groups used by this collider.
*
* Forces between two colliders in contact will be computed iff their solver
* groups are compatible.
* See the documentation of `InteractionGroups` for details on the used bit pattern.
*
* @param groups - The solver groups used for the collider being built.
*/
setSolverGroups(groups: InteractionGroups): void;
/**
* Get the physics hooks active for this collider.
*/
activeHooks(): number;
/**
* Set the physics hooks active for this collider.
*
* Use this to enable custom filtering rules for contact/intersecstion pairs involving this collider.
*
* @param activeHooks - The hooks active for contact/intersection pairs involving this collider.
*/
setActiveHooks(activeHooks: ActiveHooks): void;
/**
* The events active for this collider.
*/
activeEvents(): ActiveEvents;
/**
* Set the events active for this collider.
*
* Use this to enable contact and/or intersection event reporting for this collider.
*
* @param activeEvents - The events active for contact/intersection pairs involving this collider.
*/
setActiveEvents(activeEvents: ActiveEvents): void;
/**
* Gets the collision types active for this collider.
*/
activeCollisionTypes(): ActiveCollisionTypes;
/**
* Sets the total force magnitude beyond which a contact force event can be emitted.
*
* @param threshold - The new force threshold.
*/
setContactForceEventThreshold(threshold: number): void;
/**
* The total force magnitude beyond which a contact force event can be emitted.
*/
contactForceEventThreshold(): number;
/**
* Set the collision types active for this collider.
*
* @param activeCollisionTypes - The hooks active for contact/intersection pairs involving this collider.
*/
setActiveCollisionTypes(activeCollisionTypes: ActiveCollisionTypes): void;
/**
* Sets the uniform density of this collider.
*
* This will override any previous mass-properties set by `this.setDensity`,
* `this.setMass`, `this.setMassProperties`, `ColliderDesc.density`,
* `ColliderDesc.mass`, or `ColliderDesc.massProperties` for this collider.
*
* The mass and angular inertia of this collider will be computed automatically based on its
* shape.
*/
setDensity(density: number): void;
/**
* Sets the mass of this collider.
*
* This will override any previous mass-properties set by `this.setDensity`,
* `this.setMass`, `this.setMassProperties`, `ColliderDesc.density`,
* `ColliderDesc.mass`, or `ColliderDesc.massProperties` for this collider.
*
* The angular inertia of this collider will be computed automatically based on its shape
* and this mass value.
*/
setMass(mass: number): void;
/**
* Sets the mass of this collider.
*
* This will override any previous mass-properties set by `this.setDensity`,
* `this.setMass`, `this.setMassProperties`, `ColliderDesc.density`,
* `ColliderDesc.mass`, or `ColliderDesc.massProperties` for this collider.
*/
setMassProperties(mass: number, centerOfMass: Vector, principalAngularInertia: Vector, angularInertiaLocalFrame: Rotation): void;
/**
* Sets the translation of this collider.
*
* @param tra - The world-space position of the collider.
*/
setTranslation(tra: Vector): void;
/**
* Sets the translation of this collider relative to its parent rigid-body.
*
* Does nothing if this collider isn't attached to a rigid-body.
*
* @param tra - The new translation of the collider relative to its parent.
*/
setTranslationWrtParent(tra: Vector): void;
/**
* Sets the rotation quaternion of this collider.
*
* This does nothing if a zero quaternion is provided.
*
* @param rotation - The rotation to set.
*/
setRotation(rot: Rotation): void;
/**
* Sets the rotation quaternion of this collider relative to its parent rigid-body.
*
* This does nothing if a zero quaternion is provided or if this collider isn't
* attached to a rigid-body.
*
* @param rotation - The rotation to set.
*/
setRotationWrtParent(rot: Rotation): void;
/**
* The type of the shape of this collider.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
shapeType(): ShapeType;
/**
* The half-extents of this collider if it is a cuboid shape.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
halfExtents(): Vector;
/**
* Sets the half-extents of this collider if it is a cuboid shape.
*
* @param newHalfExtents - desired half extents.
*/
setHalfExtents(newHalfExtents: Vector): void;
/**
* The radius of this collider if it is a ball, cylinder, capsule, or cone shape.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
radius(): number;
/**
* Sets the radius of this collider if it is a ball, cylinder, capsule, or cone shape.
*
* @param newRadius - desired radius.
*/
setRadius(newRadius: number): void;
/**
* The radius of the round edges of this collider if it is a round cylinder.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
roundRadius(): number;
/**
* Sets the radius of the round edges of this collider if it has round edges.
*
* @param newBorderRadius - desired round edge radius.
*/
setRoundRadius(newBorderRadius: number): void;
/**
* The half height of this collider if it is a cylinder, capsule, or cone shape.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
halfHeight(): number;
/**
* Sets the half height of this collider if it is a cylinder, capsule, or cone shape.
*
* @param newHalfheight - desired half height.
*/
setHalfHeight(newHalfheight: number): void;
/**
* If this collider has a triangle mesh, polyline, convex polygon, or convex polyhedron shape,
* this returns the vertex buffer of said shape.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
vertices(): Float32Array;
/**
* If this collider has a triangle mesh, polyline, or convex polyhedron shape,
* this returns the index buffer of said shape.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
indices(): Uint32Array | undefined;
/**
* If this collider has a heightfield shape, this returns the heights buffer of
* the heightfield.
* In 3D, the returned height matrix is provided in column-major order.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
heightfieldHeights(): Float32Array;
/**
* If this collider has a heightfield shape, this returns the scale
* applied to it.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
heightfieldScale(): Vector;
/**
* If this collider has a heightfield shape, this returns the number of
* rows of its height matrix.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
heightfieldNRows(): number;
/**
* If this collider has a heightfield shape, this returns the number of
* columns of its height matrix.
* @deprecated this field will be removed in the future, please access this field on `shape` member instead.
*/
heightfieldNCols(): number;
/**
* The rigid-body this collider is attached to.
*/
parent(): RigidBody | null;
/**
* The friction coefficient of this collider.
*/
friction(): number;
/**
* The restitution coefficient of this collider.
*/
restitution(): number;
/**
* The density of this collider.
*/
density(): number;
/**
* The mass of this collider.
*/
mass(): number;
/**
* The volume of this collider.
*/
volume(): number;
/**
* The collision groups of this collider.
*/
collisionGroups(): InteractionGroups;
/**
* The solver groups of this collider.
*/
solverGroups(): InteractionGroups;
/**
* Tests if this collider contains a point.
*
* @param point - The point to test.
*/
containsPoint(point: Vector): boolean;
/**
* Find the projection of a point on this collider.
*
* @param point - The point to project.
* @param solid - If this is set to `true` then the collider shapes are considered to
* be plain (if the point is located inside of a plain shape, its projection is the point
* itself). If it is set to `false` the collider shapes are considered to be hollow
* (if the point is located inside of an hollow shape, it is projected on the shape's
* boundary).
*/
projectPoint(point: Vector, solid: boolean): PointProjection | null;
/**
* Tests if this collider intersects the given ray.
*
* @param ray - The ray to cast.
* @param maxToi - The maximum time-of-impact that can be reported by this cast. This effectively
* limits the length of the ray to `ray.dir.norm() * maxToi`.
*/
intersectsRay(ray: Ray, maxToi: number): boolean;
castShape(collider1Vel: Vector, shape2: Shape, shape2Pos: Vector, shape2Rot: Rotation, shape2Vel: Vector, maxToi: number, stopAtPenetration: boolean): ShapeTOI | null;
castCollider(collider1Vel: Vector, collider2: Collider, collider2Vel: Vector, maxToi: number, stopAtPenetration: boolean): ShapeColliderTOI | null;
intersectsShape(shape2: Shape, shapePos2: Vector, shapeRot2: Rotation): boolean;
/**
* Computes one pair of contact points between the shape owned by this collider and the given shape.
*
* @param shape2 - The second shape.
* @param shape2Pos - The initial position of the second shape.
* @param shape2Rot - The rotation of the second shape.
* @param prediction - The prediction value, if the shapes are separated by a distance greater than this value, test will fail.
* @returns `null` if the shapes are separated by a distance greater than prediction, otherwise contact details. The result is given in world-space.
*/
contactShape(shape2: Shape, shape2Pos: Vector, shape2Rot: Rotation, prediction: number): ShapeContact | null;
/**
* Computes one pair of contact points between the collider and the given collider.
*
* @param collider2 - The second collider.
* @param prediction - The prediction value, if the shapes are separated by a distance greater than this value, test will fail.
* @returns `null` if the shapes are separated by a distance greater than prediction, otherwise contact details. The result is given in world-space.
*/
contactCollider(collider2: Collider, prediction: number): ShapeContact | null;
castRay(ray: Ray, maxToi: number, solid: boolean): number;
/**
* Find the closest intersection between a ray and this collider.
*
* This also computes the normal at the hit point.
* @param ray - The ray to cast.
* @param maxToi - The maximum time-of-impact that can be reported by this cast. This effectively
* limits the length of the ray to `ray.dir.norm() * maxToi`.
* @param solid - If `false` then the ray will attempt to hit the boundary of a shape, even if its
* origin already lies inside of a shape. In other terms, `true` implies that all shapes are plain,
* whereas `false` implies that all shapes are hollow for this ray-cast.
*/
castRayAndGetNormal(ray: Ray, maxToi: number, solid: boolean): RayIntersection | null;
}
export declare enum MassPropsMode {
Density = 0,
Mass = 1,
MassProps = 2
}
export declare class ColliderDesc {
enabled: boolean;
shape: Shape;
massPropsMode: MassPropsMode;
mass: number;
centerOfMass: Vector;
principalAngularInertia: Vector;
angularInertiaLocalFrame: Rotation;
density: number;
friction: number;
restitution: number;
rotation: Rotation;
translation: Vector;
isSensor: boolean;
collisionGroups: InteractionGroups;
solverGroups: InteractionGroups;
frictionCombineRule: CoefficientCombineRule;
restitutionCombineRule: CoefficientCombineRule;
activeEvents: ActiveEvents;
activeHooks: ActiveHooks;
activeCollisionTypes: ActiveCollisionTypes;
contactForceEventThreshold: number;
/**
* Initializes a collider descriptor from the collision shape.
*
* @param shape - The shape of the collider being built.
*/
constructor(shape: Shape);
/**
* Create a new collider descriptor with a ball shape.
*
* @param radius - The radius of the ball.
*/
static ball(radius: number): ColliderDesc;
/**
* Create a new collider descriptor with a capsule shape.
*
* @param halfHeight - The half-height of the capsule, along the `y` axis.
* @param radius - The radius of the capsule basis.
*/
static capsule(halfHeight: number, radius: number): ColliderDesc;
/**
* Creates a new segment shape.
*
* @param a - The first point of the segment.
* @param b - The second point of the segment.
*/
static segment(a: Vector, b: Vector): ColliderDesc;
/**
* Creates a new triangle shape.
*
* @param a - The first point of the triangle.
* @param b - The second point of the triangle.
* @param c - The third point of the triangle.
*/
static triangle(a: Vector, b: Vector, c: Vector): ColliderDesc;
/**
* Creates a new triangle shape with round corners.
*
* @param a - The first point of the triangle.
* @param b - The second point of the triangle.
* @param c - The third point of the triangle.
* @param borderRadius - The radius of the borders of this triangle. In 3D,
* this is also equal to half the thickness of the triangle.
*/
static roundTriangle(a: Vector, b: Vector, c: Vector, borderRadius: number): ColliderDesc;
/**
* Creates a new collider descriptor with a polyline shape.
*
* @param vertices - The coordinates of the polyline's vertices.
* @param indices - The indices of the polyline's segments. If this is `undefined` or `null`,
* the vertices are assumed to describe a line strip.
*/
static polyline(vertices: Float32Array, indices?: Uint32Array | null): ColliderDesc;
/**
* Creates a new collider descriptor with a triangle mesh shape.
*
* @param vertices - The coordinates of the triangle mesh's vertices.
* @param indices - The indices of the triangle mesh's triangles.
*/
static trimesh(vertices: Float32Array, indices: Uint32Array): ColliderDesc;
/**
* Creates a new collider descriptor with a cuboid shape.
*
* @param hx - The half-width of the rectangle along its local `x` axis.
* @param hy - The half-width of the rectangle along its local `y` axis.
* @param hz - The half-width of the rectangle along its local `z` axis.
*/
static cuboid(hx: number, hy: number, hz: number): ColliderDesc;
/**
* Creates a new collider descriptor with a rectangular shape with round borders.
*
* @param hx - The half-width of the rectangle along its local `x` axis.
* @param hy - The half-width of the rectangle along its local `y` axis.
* @param hz - The half-width of the rectangle along its local `z` axis.
* @param borderRadius - The radius of the cuboid's borders.
*/
static roundCuboid(hx: number, hy: number, hz: number, borderRadius: number): ColliderDesc;
/**
* Creates a new collider descriptor with a heightfield shape.
*
* @param nrows The number of rows in the heights matrix.
* @param ncols - The number of columns in the heights matrix.
* @param heights - The heights of the heightfield along its local `y` axis,
* provided as a matrix stored in column-major order.
* @param scale - The scale factor applied to the heightfield.
*/
static heightfield(nrows: number, ncols: number, heights: Float32Array, scale: Vector): ColliderDesc;
/**
* Create a new collider descriptor with a cylinder shape.
*
* @param halfHeight - The half-height of the cylinder, along the `y` axis.
* @param radius - The radius of the cylinder basis.
*/
static cylinder(halfHeight: number, radius: number): ColliderDesc;
/**
* Create a new collider descriptor with a cylinder shape with rounded corners.
*
* @param halfHeight - The half-height of the cylinder, along the `y` axis.
* @param radius - The radius of the cylinder basis.
* @param borderRadius - The radius of the cylinder's rounded edges and vertices.
*/
static roundCylinder(halfHeight: number, radius: number, borderRadius: number): ColliderDesc;
/**
* Create a new collider descriptor with a cone shape.
*
* @param halfHeight - The half-height of the cone, along the `y` axis.
* @param radius - The radius of the cone basis.
*/
static cone(halfHeight: number, radius: number): ColliderDesc;
/**
* Create a new collider descriptor with a cone shape with rounded corners.
*
* @param halfHeight - The half-height of the cone, along the `y` axis.
* @param radius - The radius of the cone basis.
* @param borderRadius - The radius of the cone's rounded edges and vertices.
*/
static roundCone(halfHeight: number, radius: number, borderRadius: number): ColliderDesc;
/**
* Computes the convex-hull of the given points and use the resulting
* convex polyhedron as the shape for this new collider descriptor.
*
* @param points - The point that will be used to compute the convex-hull.
*/
static convexHull(points: Float32Array): ColliderDesc | null;
/**
* Creates a new collider descriptor that uses the given set of points assumed
* to form a convex polyline (no convex-hull computation will be done).
*
* @param vertices - The vertices of the convex polyline.
*/
static convexMesh(vertices: Float32Array, indices?: Uint32Array | null): ColliderDesc | null;
/**
* Computes the convex-hull of the given points and use the resulting
* convex polyhedron as the shape for this new collider descriptor. A
* border is added to that convex polyhedron to give it round corners.
*
* @param points - The point that will be used to compute the convex-hull.
* @param borderRadius - The radius of the round border added to the convex polyhedron.
*/
static roundConvexHull(points: Float32Array, borderRadius: number): ColliderDesc | null;
/**
* Creates a new collider descriptor that uses the given set of points assumed
* to form a round convex polyline (no convex-hull computation will be done).
*
* @param vertices - The vertices of the convex polyline.
* @param borderRadius - The radius of the round border added to the convex polyline.
*/
static roundConvexMesh(vertices: Float32Array, indices: Uint32Array | null, borderRadius: number): ColliderDesc | null;
/**
* Sets the position of the collider to be created relative to the rigid-body it is attached to.
*/
setTranslation(x: number, y: number, z: number): ColliderDesc;
/**
* Sets the rotation of the collider to be created relative to the rigid-body it is attached to.
*
* @param rot - The rotation of the collider to be created relative to the rigid-body it is attached to.
*/
setRotation(rot: Rotation): ColliderDesc;
/**
* Sets whether or not the collider being created is a sensor.
*
* A sensor collider does not take part of the physics simulation, but generates
* proximity events.
*
* @param sensor - Set to `true` of the collider built is to be a sensor.
*/
setSensor(sensor: boolean): ColliderDesc;
/**
* Sets whether the created collider will be enabled or disabled.
* @param enabled If set to `false` the collider will be disabled at creation.
*/
setEnabled(enabled: boolean): ColliderDesc;
/**
* Sets the density of the collider being built.
*
* The mass and angular inertia tensor will be computed automatically based on this density and the colliders shape.
*
* @param density - The density to set, must be greater or equal to 0. A density of 0 means that this collider
* will not affect the mass or angular inertia of the rigid-body it is attached to.
*/
setDensity(density: number): ColliderDesc;
/**
* Sets the mass of the collider being built.
*
* The angular inertia tensor will be computed automatically based on this mass and the colliders shape.
*
* @param mass - The mass to set, must be greater or equal to 0.
*/
setMass(mass: number): ColliderDesc;
/**
* Sets the mass properties of the collider being built.
*
* This replaces the mass-properties automatically computed from the collider's density and shape.
* These mass-properties will be added to the mass-properties of the rigid-body this collider will be attached to.
*
* @param mass The mass of the collider to create.
* @param centerOfMass The center-of-mass of the collider to create.
* @param principalAngularInertia The initial principal angular inertia of the collider to create.
* These are the eigenvalues of the angular inertia matrix.
* @param angularInertiaLocalFrame The initial local angular inertia frame of the collider to create.
* These are the eigenvectors of the angular inertia matrix.
*/
setMassProperties(mass: number, centerOfMass: Vector, principalAngularInertia: Vector, angularInertiaLocalFrame: Rotation): ColliderDesc;
/**
* Sets the restitution coefficient of the collider to be created.
*
* @param restitution - The restitution coefficient in `[0, 1]`. A value of 0 (the default) means no bouncing behavior
* while 1 means perfect bouncing (though energy may still be lost due to numerical errors of the
* constraints solver).
*/
setRestitution(restitution: number): ColliderDesc;
/**
* Sets the friction coefficient of the collider to be created.
*
* @param friction - The friction coefficient. Must be greater or equal to 0. This is generally smaller than 1. The
* higher the coefficient, the stronger friction forces will be for contacts with the collider
* being built.
*/
setFriction(friction: number): ColliderDesc;
/**
* Sets the rule used to combine the friction coefficients of two colliders
* colliders involved in a contact.
*
* @param rule The combine rule to apply.
*/
setFrictionCombineRule(rule: CoefficientCombineRule): ColliderDesc;
/**
* Sets the rule used to combine the restitution coefficients of two colliders
* colliders involved in a contact.
*
* @param rule The combine rule to apply.
*/
setRestitutionCombineRule(rule: CoefficientCombineRule): ColliderDesc;
/**
* Sets the collision groups used by this collider.
*
* Two colliders will interact iff. their collision groups are compatible.
* See the documentation of `InteractionGroups` for details on teh used bit pattern.
*
* @param groups - The collision groups used for the collider being built.
*/
setCollisionGroups(groups: InteractionGroups): ColliderDesc;
/**
* Sets the solver groups used by this collider.
*
* Forces between two colliders in contact will be computed iff their solver
* groups are compatible.
* See the documentation of `InteractionGroups` for details on the used bit pattern.
*
* @param groups - The solver groups used for the collider being built.
*/
setSolverGroups(groups: InteractionGroups): ColliderDesc;
/**
* Set the physics hooks active for this collider.
*
* Use this to enable custom filtering rules for contact/intersecstion pairs involving this collider.
*
* @param activeHooks - The hooks active for contact/intersection pairs involving this collider.
*/
setActiveHooks(activeHooks: ActiveHooks): ColliderDesc;
/**
* Set the events active for this collider.
*
* Use this to enable contact and/or intersection event reporting for this collider.
*
* @param activeEvents - The events active for contact/intersection pairs involving this collider.
*/
setActiveEvents(activeEvents: ActiveEvents): ColliderDesc;
/**
* Set the collision types active for this collider.
*
* @param activeCollisionTypes - The hooks active for contact/intersection pairs involving this collider.
*/
setActiveCollisionTypes(activeCollisionTypes: ActiveCollisionTypes): ColliderDesc;
/**
* Sets the total force magnitude beyond which a contact force event can be emitted.
*
* @param threshold - The force threshold to set.
*/
setContactForceEventThreshold(threshold: number): ColliderDesc;
}