@absolutejs/rapier3d 0.2.1 → 0.4.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. */
@@ -560,6 +560,14 @@ export declare class World {
560
560
  * Only works if the internal profiler is enabled with `World.profilerEnabled = true`.
561
561
  */
562
562
  get profilerEnabled(): boolean;
563
+ /**
564
+ * Actual CCD passes recorded by the last completed profiled step, not the
565
+ * configured maximum. Zero means CCD did not act; the world still advanced.
566
+ * Returns null before a profiled step, while profiling is disabled, and after
567
+ * changing profilerEnabled until another step completes. Profiling is opt-in.
568
+ * This count does not expose internal substep durations or time of impact.
569
+ */
570
+ ccdSubsteps(): number | null;
563
571
  /**
564
572
  * The time spent in milliseconds by the last step to run the entire simulation step.
565
573
  *
@@ -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 {
@@ -883,6 +886,7 @@ export class RawNarrowPhase {
883
886
  export class RawPhysicsPipeline {
884
887
  free(): void;
885
888
  [Symbol.dispose](): void;
889
+ ccd_substeps(): number | undefined;
886
890
  is_profiler_enabled(): boolean;
887
891
  constructor();
888
892
  set_profiler_enabled(enabled: boolean): void;
@@ -2296,6 +2300,7 @@ export interface InitOutput {
2296
2300
  readonly rawimpulsejointset_new: () => number;
2297
2301
  readonly rawimpulsejointset_remove: (a: number, b: number, c: number) => void;
2298
2302
  readonly rawintegrationparameters_contactClustering: (a: number) => number;
2303
+ readonly rawintegrationparameters_contactRecycling: (a: number) => number;
2299
2304
  readonly rawintegrationparameters_contact_erp: (a: number) => number;
2300
2305
  readonly rawintegrationparameters_dt: (a: number) => number;
2301
2306
  readonly rawintegrationparameters_lengthUnit: (a: number) => number;
@@ -2303,16 +2308,19 @@ export interface InitOutput {
2303
2308
  readonly rawintegrationparameters_minCcdDt: (a: number) => number;
2304
2309
  readonly rawintegrationparameters_new: () => number;
2305
2310
  readonly rawintegrationparameters_normalizedAllowedLinearError: (a: number) => number;
2311
+ readonly rawintegrationparameters_normalizedContactRecycleDistance: (a: number) => number;
2306
2312
  readonly rawintegrationparameters_normalizedPredictionDistance: (a: number) => number;
2307
2313
  readonly rawintegrationparameters_numInternalPgsIterations: (a: number) => number;
2308
2314
  readonly rawintegrationparameters_numSolverIterations: (a: number) => number;
2309
2315
  readonly rawintegrationparameters_set_contactClustering: (a: number, b: number) => void;
2316
+ readonly rawintegrationparameters_set_contactRecycling: (a: number, b: number) => void;
2310
2317
  readonly rawintegrationparameters_set_contact_natural_frequency: (a: number, b: number) => void;
2311
2318
  readonly rawintegrationparameters_set_dt: (a: number, b: number) => void;
2312
2319
  readonly rawintegrationparameters_set_lengthUnit: (a: number, b: number) => void;
2313
2320
  readonly rawintegrationparameters_set_maxCcdSubsteps: (a: number, b: number) => void;
2314
2321
  readonly rawintegrationparameters_set_minCcdDt: (a: number, b: number) => void;
2315
2322
  readonly rawintegrationparameters_set_normalizedAllowedLinearError: (a: number, b: number) => void;
2323
+ readonly rawintegrationparameters_set_normalizedContactRecycleDistance: (a: number, b: number) => void;
2316
2324
  readonly rawintegrationparameters_set_normalizedPredictionDistance: (a: number, b: number) => void;
2317
2325
  readonly rawintegrationparameters_set_numInternalPgsIterations: (a: number, b: number) => void;
2318
2326
  readonly rawintegrationparameters_set_numSolverIterations: (a: number, b: number) => void;
@@ -2323,6 +2331,7 @@ export interface InitOutput {
2323
2331
  readonly rawintegrationparameters_set_softBodiesMaxExtraSubsteps: (a: number, b: number) => void;
2324
2332
  readonly rawintegrationparameters_set_softBodiesRecovery: (a: number, b: number) => void;
2325
2333
  readonly rawintegrationparameters_set_softBodiesResweepStrain: (a: number, b: number) => void;
2334
+ readonly rawintegrationparameters_set_warmstartCoefficient: (a: number, b: number) => void;
2326
2335
  readonly rawintegrationparameters_softBodiesContactStiffening: (a: number) => number;
2327
2336
  readonly rawintegrationparameters_softBodiesFemLinearTolerance: (a: number) => number;
2328
2337
  readonly rawintegrationparameters_softBodiesFemMaxDenseDofs: (a: number) => number;
@@ -2330,6 +2339,7 @@ export interface InitOutput {
2330
2339
  readonly rawintegrationparameters_softBodiesMaxExtraSubsteps: (a: number) => number;
2331
2340
  readonly rawintegrationparameters_softBodiesRecovery: (a: number) => number;
2332
2341
  readonly rawintegrationparameters_softBodiesResweepStrain: (a: number) => number;
2342
+ readonly rawintegrationparameters_warmstartCoefficient: (a: number) => number;
2333
2343
  readonly rawislandmanager_forEachActiveRigidBodyHandle: (a: number, b: number) => void;
2334
2344
  readonly rawislandmanager_new: () => number;
2335
2345
  readonly rawkinematiccharactercontroller_autostepEnabled: (a: number) => number;
@@ -2381,6 +2391,7 @@ export interface InitOutput {
2381
2391
  readonly rawnarrowphase_intersection_pair: (a: number, b: number, c: number) => number;
2382
2392
  readonly rawnarrowphase_intersection_pairs_with: (a: number, b: number, c: number) => void;
2383
2393
  readonly rawnarrowphase_new: () => number;
2394
+ readonly rawphysicspipeline_ccd_substeps: (a: number) => number;
2384
2395
  readonly rawphysicspipeline_is_profiler_enabled: (a: number) => number;
2385
2396
  readonly rawphysicspipeline_new: () => number;
2386
2397
  readonly rawphysicspipeline_set_profiler_enabled: (a: number, b: number) => void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@absolutejs/rapier3d",
3
- "version": "0.2.1",
4
- "description": "Rapier 3D with separate geometric and clustered solver-contact inspection",
3
+ "version": "0.4.0",
4
+ "description": "Rapier 3D with solver-contact diagnostics and validated contact-policy controls",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {