@absolutejs/rapier3d 0.14.1 → 0.15.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.
@@ -1,4 +1,4 @@
1
- import type { World, ContactConvergenceStats, FreeRotationStats } from "./world";
1
+ import type { World, ContactConvergenceStats, FreeRotationStats, FreeAssemblyStats } from "./world";
2
2
  import type { EventQueue } from "./event_queue";
3
3
  import type { PhysicsHooks } from "./physics_hooks";
4
4
  export interface PhysicsStepSample {
@@ -23,6 +23,7 @@ export interface PhysicsStepSample {
23
23
  };
24
24
  convergence: ContactConvergenceStats;
25
25
  freeRotation: FreeRotationStats;
26
+ freeAssembly: FreeAssemblyStats;
26
27
  } | null;
27
28
  }
28
29
  export interface PhysicsStepProfile {
@@ -40,6 +40,17 @@ export interface FreeRotationStats {
40
40
  /** Maximum accepted angular-velocity equation residual in radians/second. */
41
41
  maxResidualRadiansPerSecond: number;
42
42
  }
43
+ /** Isolated fixed-assembly attempts under uniform gravity. Counts include
44
+ * solver substeps and CCD passes. Unsupported topology, loads, damping or
45
+ * invalid aggregate construction are excluded before any attempt and therefore
46
+ * are not rejection counts. Zero attempts does not establish conservation.
47
+ */
48
+ export interface FreeAssemblyStats {
49
+ acceptedSteps: number;
50
+ nonphysicalInertiaRejections: number;
51
+ rotationLimitRejections: number;
52
+ invalidOrFailedSolves: number;
53
+ }
43
54
  /**
44
55
  * The physics world.
45
56
  *
@@ -598,6 +609,11 @@ export declare class World {
598
609
  * This count does not expose internal substep durations or time of impact.
599
610
  */
600
611
  ccdSubsteps(): number | null;
612
+ /** Owned assembly observations from the last completed profiled step.
613
+ * Null before a profiled step, after restoration or a profiling toggle,
614
+ * and while profiling is disabled. Reading does not alter physics.
615
+ */
616
+ freeAssemblyStats(): FreeAssemblyStats | null;
601
617
  /** Owned isolated-body rotation observations from the last completed profiled
602
618
  * step; null before that step, after toggling profiling, when disabled, or
603
619
  * after restoration. Zero accepted steps does not establish conservation.
@@ -896,6 +896,7 @@ export class RawPhysicsPipeline {
896
896
  [Symbol.dispose](): void;
897
897
  ccd_substeps(): number | undefined;
898
898
  contact_convergence(): Float64Array | undefined;
899
+ free_assembly_candidate(): Float64Array | undefined;
899
900
  free_rotation_candidate(): Float64Array | undefined;
900
901
  is_profiler_enabled(): boolean;
901
902
  constructor();
@@ -2405,6 +2406,7 @@ export interface InitOutput {
2405
2406
  readonly rawnarrowphase_new: () => number;
2406
2407
  readonly rawphysicspipeline_ccd_substeps: (a: number) => number;
2407
2408
  readonly rawphysicspipeline_contact_convergence: (a: number, b: number) => void;
2409
+ readonly rawphysicspipeline_free_assembly_candidate: (a: number, b: number) => void;
2408
2410
  readonly rawphysicspipeline_free_rotation_candidate: (a: number, b: number) => void;
2409
2411
  readonly rawphysicspipeline_is_profiler_enabled: (a: number) => number;
2410
2412
  readonly rawphysicspipeline_new: () => number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/rapier3d",
3
- "version": "0.14.1",
3
+ "version": "0.15.0",
4
4
  "description": "Rapier 3D with matched free-body rotation, corrected contact witnesses and solver diagnostics",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",