@absolutejs/rapier3d 0.2.1 → 0.3.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.
package/README.md CHANGED
@@ -42,8 +42,8 @@ web/Node/Bun; it does not claim a 2D, f64, CommonJS or SIMD distribution.
42
42
 
43
43
  Source base: dimforge/rapier commit
44
44
  `b716d375efc0201003f0cd9ef7168eee0b62c177`. Upstream Apache-2.0 licensing is retained.
45
- All engine source remains upstream; changes are confined to binding queries and
46
- this package's build/test tooling.
45
+ Engine calculations remain upstream. Additions cover binding queries, package
46
+ build/test tooling, and CCD profiler timer wiring; no solver equations are changed.
47
47
 
48
48
  Use Bun 1.4.4+absolute.1, Rust 1.94.0 with `wasm32-unknown-unknown`, and Python 3.12.
49
49
  Run `bun install --frozen-lockfile`, then `bash absolutejs/scripts/build-native.sh`.
@@ -92,3 +92,21 @@ Previously an absent native handle could be coerced to body zero during JavaScri
92
92
  wrapper reconstruction. Real body-zero and fixed-body attachments remain intact.
93
93
  This changes wrapper metadata only; native ownership, WASM and solver behavior are
94
94
  unchanged. Repeated snapshot restoration and browser workers are regression tested.
95
+
96
+ ## Actual CCD substeps (0.3)
97
+
98
+ Enable `world.profilerEnabled = true`, step the world, then read
99
+ `world.ccdSubsteps()`. It reports the native count of CCD passes in the last
100
+ completed profiled step, rather than the configured maximum. Zero means CCD did
101
+ not act, not that the world failed to advance. It returns null when unavailable:
102
+ before a profiled step, while profiling is disabled, or after toggling profiling
103
+ until a new step completes. Setting an already enabled profiler to true is idempotent.
104
+ Restored worlds start with profiling disabled and no sample. Event-enabled stepping
105
+ is covered too. This is opt-in telemetry; no physics policy or defaults change.
106
+ The counter does not expose individual substep durations or times of impact.
107
+
108
+ CCD timing now accumulates activation/impact-planning and motion-clamping work
109
+ across all passes in a step. The TOI timer also accumulates instead of resetting
110
+ for every clamp pass. Both are recorded only with profiling enabled. The timing
111
+ fix leaves contact equations and trajectories unchanged; package tests compare
112
+ profiled/unprofiled poses and official upstream trajectories.
@@ -42,8 +42,8 @@ web/Node/Bun; it does not claim a 2D, f64, CommonJS or SIMD distribution.
42
42
 
43
43
  Source base: dimforge/rapier commit
44
44
  `b716d375efc0201003f0cd9ef7168eee0b62c177`. Upstream Apache-2.0 licensing is retained.
45
- All engine source remains upstream; changes are confined to binding queries and
46
- this package's build/test tooling.
45
+ Engine calculations remain upstream. Additions cover binding queries, package
46
+ build/test tooling, and CCD profiler timer wiring; no solver equations are changed.
47
47
 
48
48
  Use Bun 1.4.4+absolute.1, Rust 1.94.0 with `wasm32-unknown-unknown`, and Python 3.12.
49
49
  Run `bun install --frozen-lockfile`, then `bash absolutejs/scripts/build-native.sh`.
@@ -92,3 +92,21 @@ Previously an absent native handle could be coerced to body zero during JavaScri
92
92
  wrapper reconstruction. Real body-zero and fixed-body attachments remain intact.
93
93
  This changes wrapper metadata only; native ownership, WASM and solver behavior are
94
94
  unchanged. Repeated snapshot restoration and browser workers are regression tested.
95
+
96
+ ## Actual CCD substeps (0.3)
97
+
98
+ Enable `world.profilerEnabled = true`, step the world, then read
99
+ `world.ccdSubsteps()`. It reports the native count of CCD passes in the last
100
+ completed profiled step, rather than the configured maximum. Zero means CCD did
101
+ not act, not that the world failed to advance. It returns null when unavailable:
102
+ before a profiled step, while profiling is disabled, or after toggling profiling
103
+ until a new step completes. Setting an already enabled profiler to true is idempotent.
104
+ Restored worlds start with profiling disabled and no sample. Event-enabled stepping
105
+ is covered too. This is opt-in telemetry; no physics policy or defaults change.
106
+ The counter does not expose individual substep durations or times of impact.
107
+
108
+ CCD timing now accumulates activation/impact-planning and motion-clamping work
109
+ across all passes in a step. The TOI timer also accumulates instead of resetting
110
+ for every clamp pass. Both are recorded only with profiling enabled. The timing
111
+ fix leaves contact equations and trajectories unchanged; package tests compare
112
+ profiled/unprofiled poses and official upstream trajectories.
@@ -3,8 +3,8 @@
3
3
  "engine": "0.36.0",
4
4
  "bindings": "0.21.0",
5
5
  "bindgen": "0.2.129",
6
- "wasmSha256": "91d68ed4f46fa1febbaf82abb7e8018150a3ad982560381df700e009997e6721",
7
- "wasmBytes": 3297510,
6
+ "wasmSha256": "82c8735acd1b112c2d1368c8e46c91ce46a87e3d941b1a8d2fe11d46a8acbd3a",
7
+ "wasmBytes": 3298797,
8
8
  "solverChanges": false,
9
- "addition": "Live solver anchors, explicit diagnostic controls, and correct restored collider ownership"
9
+ "addition": "Live contacts, fresh CCD pass counts, and aggregate CCD/TOI timing repair"
10
10
  }