@absolutejs/rapier3d 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,15 @@ export declare class IntegrationParameters {
11
11
  get contactClustering(): boolean;
12
12
  /** Change between simulation steps; false may increase solver workload. */
13
13
  set contactClustering(value: boolean);
14
+ /** Reuse nearby contact manifolds between updates. Default true; false increases narrow-phase work. */
15
+ get contactRecycling(): boolean;
16
+ set contactRecycling(value: boolean);
17
+ /** Relative-pose drift threshold, multiplied by lengthUnit. Default 0.05. Change between steps. */
18
+ get normalizedContactRecycleDistance(): number;
19
+ set normalizedContactRecycleDistance(value: number);
20
+ /** Fraction of cached impulses reused by the solver, in [0, 1]. Default 1. Change between steps. */
21
+ get warmstartCoefficient(): number;
22
+ set warmstartCoefficient(value: number);
14
23
  /** Minimum CCD substep duration in seconds; upstream default is 1/60/100. */
15
24
  get minCcdDt(): number;
16
25
  /** Change between steps. Very small values may introduce numerical instability. */
@@ -632,6 +632,23 @@ export declare class Collider {
632
632
  * @returns `null` if the shapes are separated by a distance greater than prediction, otherwise contact details. The result is given in world-space.
633
633
  */
634
634
  contactCollider(collider2: Collider, prediction: number, target?: ShapeContact): ShapeContact | null;
635
+ /**
636
+ * Queries the two native shapes at their current parent-body poses without stepping
637
+ * the world or propagating body poses into the collider set. Includes each collider's
638
+ * local translation and rotation; parentless colliders use their stored world pose.
639
+ *
640
+ * Useful for explicit diagnostics after body edits, when contactCollider and stored
641
+ * manifolds may still refer to the previous collider poses. This is an allocating shape
642
+ * query, not a solver contact, continuous sweep, or authored-material penetration bound.
643
+ * Collision filters, hooks, and contact skin are not applied. The result is world-space.
644
+ * A null result can also indicate an unsupported native shape pair; it is not a proof
645
+ * that arbitrary compound or authored material is disjoint.
646
+ *
647
+ * @param prediction - Finite nonnegative prediction distance in world length units.
648
+ * @param target - Optional reusable result object.
649
+ */
650
+ contactColliderAtCurrentBodyPoses(collider2: Collider, prediction?: number, target?: ShapeContact): ShapeContact | null;
651
+ private currentBodyPose;
635
652
  /**
636
653
  * Find the closest intersection between a ray and this collider.
637
654
  *
@@ -706,12 +706,14 @@ export class RawIntegrationParameters {
706
706
  [Symbol.dispose](): void;
707
707
  constructor();
708
708
  contactClustering: boolean;
709
+ contactRecycling: boolean;
709
710
  readonly contact_erp: number;
710
711
  dt: number;
711
712
  lengthUnit: number;
712
713
  maxCcdSubsteps: number;
713
714
  minCcdDt: number;
714
715
  normalizedAllowedLinearError: number;
716
+ normalizedContactRecycleDistance: number;
715
717
  normalizedPredictionDistance: number;
716
718
  numInternalPgsIterations: number;
717
719
  numSolverIterations: number;
@@ -723,6 +725,7 @@ export class RawIntegrationParameters {
723
725
  softBodiesMaxExtraSubsteps: number;
724
726
  softBodiesRecovery: RawSoftRecoverySettings;
725
727
  softBodiesResweepStrain: number;
728
+ warmstartCoefficient: number;
726
729
  }
727
730
 
728
731
  export class RawIslandManager {
@@ -2297,6 +2300,7 @@ export interface InitOutput {
2297
2300
  readonly rawimpulsejointset_new: () => number;
2298
2301
  readonly rawimpulsejointset_remove: (a: number, b: number, c: number) => void;
2299
2302
  readonly rawintegrationparameters_contactClustering: (a: number) => number;
2303
+ readonly rawintegrationparameters_contactRecycling: (a: number) => number;
2300
2304
  readonly rawintegrationparameters_contact_erp: (a: number) => number;
2301
2305
  readonly rawintegrationparameters_dt: (a: number) => number;
2302
2306
  readonly rawintegrationparameters_lengthUnit: (a: number) => number;
@@ -2304,16 +2308,19 @@ export interface InitOutput {
2304
2308
  readonly rawintegrationparameters_minCcdDt: (a: number) => number;
2305
2309
  readonly rawintegrationparameters_new: () => number;
2306
2310
  readonly rawintegrationparameters_normalizedAllowedLinearError: (a: number) => number;
2311
+ readonly rawintegrationparameters_normalizedContactRecycleDistance: (a: number) => number;
2307
2312
  readonly rawintegrationparameters_normalizedPredictionDistance: (a: number) => number;
2308
2313
  readonly rawintegrationparameters_numInternalPgsIterations: (a: number) => number;
2309
2314
  readonly rawintegrationparameters_numSolverIterations: (a: number) => number;
2310
2315
  readonly rawintegrationparameters_set_contactClustering: (a: number, b: number) => void;
2316
+ readonly rawintegrationparameters_set_contactRecycling: (a: number, b: number) => void;
2311
2317
  readonly rawintegrationparameters_set_contact_natural_frequency: (a: number, b: number) => void;
2312
2318
  readonly rawintegrationparameters_set_dt: (a: number, b: number) => void;
2313
2319
  readonly rawintegrationparameters_set_lengthUnit: (a: number, b: number) => void;
2314
2320
  readonly rawintegrationparameters_set_maxCcdSubsteps: (a: number, b: number) => void;
2315
2321
  readonly rawintegrationparameters_set_minCcdDt: (a: number, b: number) => void;
2316
2322
  readonly rawintegrationparameters_set_normalizedAllowedLinearError: (a: number, b: number) => void;
2323
+ readonly rawintegrationparameters_set_normalizedContactRecycleDistance: (a: number, b: number) => void;
2317
2324
  readonly rawintegrationparameters_set_normalizedPredictionDistance: (a: number, b: number) => void;
2318
2325
  readonly rawintegrationparameters_set_numInternalPgsIterations: (a: number, b: number) => void;
2319
2326
  readonly rawintegrationparameters_set_numSolverIterations: (a: number, b: number) => void;
@@ -2324,6 +2331,7 @@ export interface InitOutput {
2324
2331
  readonly rawintegrationparameters_set_softBodiesMaxExtraSubsteps: (a: number, b: number) => void;
2325
2332
  readonly rawintegrationparameters_set_softBodiesRecovery: (a: number, b: number) => void;
2326
2333
  readonly rawintegrationparameters_set_softBodiesResweepStrain: (a: number, b: number) => void;
2334
+ readonly rawintegrationparameters_set_warmstartCoefficient: (a: number, b: number) => void;
2327
2335
  readonly rawintegrationparameters_softBodiesContactStiffening: (a: number) => number;
2328
2336
  readonly rawintegrationparameters_softBodiesFemLinearTolerance: (a: number) => number;
2329
2337
  readonly rawintegrationparameters_softBodiesFemMaxDenseDofs: (a: number) => number;
@@ -2331,6 +2339,7 @@ export interface InitOutput {
2331
2339
  readonly rawintegrationparameters_softBodiesMaxExtraSubsteps: (a: number) => number;
2332
2340
  readonly rawintegrationparameters_softBodiesRecovery: (a: number) => number;
2333
2341
  readonly rawintegrationparameters_softBodiesResweepStrain: (a: number) => number;
2342
+ readonly rawintegrationparameters_warmstartCoefficient: (a: number) => number;
2334
2343
  readonly rawislandmanager_forEachActiveRigidBodyHandle: (a: number, b: number) => void;
2335
2344
  readonly rawislandmanager_new: () => number;
2336
2345
  readonly rawkinematiccharactercontroller_autostepEnabled: (a: number) => number;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@absolutejs/rapier3d",
3
- "version": "0.3.0",
4
- "description": "Rapier 3D with separate geometric and clustered solver-contact inspection",
3
+ "version": "0.5.0",
4
+ "description": "Rapier 3D with current-body shape queries and solver-contact diagnostics",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {