@absolutejs/rapier3d 0.15.0 → 0.16.1

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
@@ -447,3 +447,54 @@ microseconds per assembly/substep (median paired batch ratio 1.12); this is not
447
447
  a hardware FPS result. Contact coupling, partial-subtree fracture and extreme
448
448
  thin-moment storage remain separate work. See
449
449
  `absolutejs/research/aggregate-free-transport/README.md` for evidence and limits.
450
+
451
+ ## Partial assembly splits and pending snapshots (0.16)
452
+
453
+ Removing a link from a moving fixed assembly can leave multiple assemblies.
454
+ Newly released roots inherit their body's world COM and angular velocity;
455
+ the surviving original root retains its coordinates, damping, armature,
456
+ friction and surviving couplings. Newly free root coordinates use their normal
457
+ defaults. Explicit fixed-to-dynamic activation also preserves prescribed body
458
+ velocity. Initial articulation construction semantics are unchanged.
459
+
460
+ An ordinary free fragment now retains the matched free-rotation path when an
461
+ unrelated articulation shares its solver batch. Multibody links are excluded
462
+ from ordinary-body initialization, and existing external-constraint, damping,
463
+ torque, lock and speed exclusions still apply. This corrects a batch-dependent
464
+ motion error without applying free-body integration to constrained bodies.
465
+
466
+ `takeSnapshot()` now writes the `ABSJS3DS` envelope, version 1, including ordered
467
+ pending connectivity edits and dirty impulse-joint state. Saving immediately
468
+ after a cut therefore retains changes not yet consumed by a simulation step.
469
+ Native Rust callers can capture/restore the opaque `PendingIslandEvents`
470
+ companion with the corresponding serialized world sets. Capture neither flushes
471
+ edits nor reconstructs the world's connectivity. Snapshot payloads still depend
472
+ on the native engine layout: retain `buildInfo` with diagnostic captures; the
473
+ envelope is not a promise of cross-engine save compatibility. Prior compatible
474
+ raw captures remain readable for investigation, but edits omitted by their
475
+ original writer cannot be recovered. All new saves use the versioned format.
476
+
477
+ Qualification and retained failed assumptions are in
478
+ `absolutejs/research/assembly-split/`. Tests measure the remaining material after
479
+ body removal; they do not invent a fracture-energy budget or model cutting
480
+ forces, plastic deformation or coupled-contact accuracy. Those remain separate
481
+ physical models and qualification work.
482
+
483
+ ## Stable queued wake replay (0.16.1)
484
+
485
+ Snapshots now serialize unordered pending wake/join membership in handle order.
486
+ The default backend also consumes queued wake requests in handle order, retaining
487
+ impulse-before-multibody priority. Previously, restoring a snapshot could reorder
488
+ sleeping bodies when they woke, changing active-set records on subsequent steps.
489
+ Only queued edits are sorted; there is no scan of every world body. The enhanced-
490
+ determinism feature retains its existing insertion-ordered behavior. Ordered
491
+ connectivity events and the version-1 snapshot payload layout are unchanged;
492
+ this is not a general cross-engine snapshot-compatibility promise.
493
+
494
+ Qualification includes 223 package tests, 843 game tests, exact sleeping-wake
495
+ replays, native feature/worker checks, GPU-disabled browser replay and identical
496
+ independent builds. Unaffected transport and impact states match published
497
+ 0.16.0. Sorting has a measured cost: at 256 released bodies, median first-wake
498
+ step time was 0.82 ms versus 0.98 ms, with about 26 microseconds added per pending
499
+ snapshot capture. These are bounded CPU fixtures, not hardware FPS claims.
500
+ See `absolutejs/research/snapshot-order/` for original failures and full evidence.
@@ -447,3 +447,54 @@ microseconds per assembly/substep (median paired batch ratio 1.12); this is not
447
447
  a hardware FPS result. Contact coupling, partial-subtree fracture and extreme
448
448
  thin-moment storage remain separate work. See
449
449
  `absolutejs/research/aggregate-free-transport/README.md` for evidence and limits.
450
+
451
+ ## Partial assembly splits and pending snapshots (0.16)
452
+
453
+ Removing a link from a moving fixed assembly can leave multiple assemblies.
454
+ Newly released roots inherit their body's world COM and angular velocity;
455
+ the surviving original root retains its coordinates, damping, armature,
456
+ friction and surviving couplings. Newly free root coordinates use their normal
457
+ defaults. Explicit fixed-to-dynamic activation also preserves prescribed body
458
+ velocity. Initial articulation construction semantics are unchanged.
459
+
460
+ An ordinary free fragment now retains the matched free-rotation path when an
461
+ unrelated articulation shares its solver batch. Multibody links are excluded
462
+ from ordinary-body initialization, and existing external-constraint, damping,
463
+ torque, lock and speed exclusions still apply. This corrects a batch-dependent
464
+ motion error without applying free-body integration to constrained bodies.
465
+
466
+ `takeSnapshot()` now writes the `ABSJS3DS` envelope, version 1, including ordered
467
+ pending connectivity edits and dirty impulse-joint state. Saving immediately
468
+ after a cut therefore retains changes not yet consumed by a simulation step.
469
+ Native Rust callers can capture/restore the opaque `PendingIslandEvents`
470
+ companion with the corresponding serialized world sets. Capture neither flushes
471
+ edits nor reconstructs the world's connectivity. Snapshot payloads still depend
472
+ on the native engine layout: retain `buildInfo` with diagnostic captures; the
473
+ envelope is not a promise of cross-engine save compatibility. Prior compatible
474
+ raw captures remain readable for investigation, but edits omitted by their
475
+ original writer cannot be recovered. All new saves use the versioned format.
476
+
477
+ Qualification and retained failed assumptions are in
478
+ `absolutejs/research/assembly-split/`. Tests measure the remaining material after
479
+ body removal; they do not invent a fracture-energy budget or model cutting
480
+ forces, plastic deformation or coupled-contact accuracy. Those remain separate
481
+ physical models and qualification work.
482
+
483
+ ## Stable queued wake replay (0.16.1)
484
+
485
+ Snapshots now serialize unordered pending wake/join membership in handle order.
486
+ The default backend also consumes queued wake requests in handle order, retaining
487
+ impulse-before-multibody priority. Previously, restoring a snapshot could reorder
488
+ sleeping bodies when they woke, changing active-set records on subsequent steps.
489
+ Only queued edits are sorted; there is no scan of every world body. The enhanced-
490
+ determinism feature retains its existing insertion-ordered behavior. Ordered
491
+ connectivity events and the version-1 snapshot payload layout are unchanged;
492
+ this is not a general cross-engine snapshot-compatibility promise.
493
+
494
+ Qualification includes 223 package tests, 843 game tests, exact sleeping-wake
495
+ replays, native feature/worker checks, GPU-disabled browser replay and identical
496
+ independent builds. Unaffected transport and impact states match published
497
+ 0.16.0. Sorting has a measured cost: at 256 released bodies, median first-wake
498
+ step time was 0.82 ms versus 0.98 ms, with about 26 microseconds added per pending
499
+ snapshot capture. These are bounded CPU fixtures, not hardware FPS claims.
500
+ See `absolutejs/research/snapshot-order/` for original failures and full evidence.
@@ -1 +1 @@
1
- var e=Object.freeze({schemaVersion:1,scope:"package",packageName:"@absolutejs/rapier3d",packageVersion:"0.15.0",qualifiedKernelRelease:"0.15.0",upstream:"b716d375efc0201003f0cd9ef7168eee0b62c177",engine:"0.36.0",collisionLibraryVersion:"0.31.1",collisionSource:"git+https://github.com/absolutejs/parry?rev=c566aabd77be8ac7a427c2b704860c47e34657b9#c566aabd77be8ac7a427c2b704860c47e34657b9",bindings:"0.21.0",bindgen:"0.2.129",wasmSha256:"10892b275313607d9983431590c4b1bce07945cf90d2b1c9340173373da3273c",wasmBytes:3317524,solverChanges:!0});export{e as buildInfo};
1
+ var e=Object.freeze({schemaVersion:1,scope:"package",packageName:"@absolutejs/rapier3d",packageVersion:"0.16.1",qualifiedKernelRelease:"0.16.1",upstream:"b716d375efc0201003f0cd9ef7168eee0b62c177",engine:"0.36.0",collisionLibraryVersion:"0.31.1",collisionSource:"git+https://github.com/absolutejs/parry?rev=c566aabd77be8ac7a427c2b704860c47e34657b9#c566aabd77be8ac7a427c2b704860c47e34657b9",bindings:"0.21.0",bindgen:"0.2.129",wasmSha256:"8639aa4bc16710820fcfc99274e1065bdf9ebfba7e3b5a27acc41fa2bdb8ca5d",wasmBytes:3357015,solverChanges:!0});export{e as buildInfo};
@@ -2,15 +2,15 @@
2
2
  "schemaVersion": 1,
3
3
  "scope": "package",
4
4
  "packageName": "@absolutejs/rapier3d",
5
- "packageVersion": "0.15.0",
6
- "qualifiedKernelRelease": "0.15.0",
5
+ "packageVersion": "0.16.1",
6
+ "qualifiedKernelRelease": "0.16.1",
7
7
  "upstream": "b716d375efc0201003f0cd9ef7168eee0b62c177",
8
8
  "engine": "0.36.0",
9
9
  "collisionLibraryVersion": "0.31.1",
10
10
  "collisionSource": "git+https://github.com/absolutejs/parry?rev=c566aabd77be8ac7a427c2b704860c47e34657b9#c566aabd77be8ac7a427c2b704860c47e34657b9",
11
11
  "bindings": "0.21.0",
12
12
  "bindgen": "0.2.129",
13
- "wasmSha256": "10892b275313607d9983431590c4b1bce07945cf90d2b1c9340173373da3273c",
14
- "wasmBytes": 3317524,
13
+ "wasmSha256": "8639aa4bc16710820fcfc99274e1065bdf9ebfba7e3b5a27acc41fa2bdb8ca5d",
14
+ "wasmBytes": 3357015,
15
15
  "solverChanges": true
16
16
  }