Babylon.js 8 → 9. Peer range for @babylonjs/core, @babylonjs/gui,
@babylonjs/loaders, @babylonjs/materials moved ^8 → ^9. Consumers must
upgrade their Babylon to 9.x. A project still on Babylon 8 will hit an
ERESOLVE on install.
Jolt physics ^1.0 → ^1.1 (Jolt 5.6.0 — the friction model moved). Only
relevant if you use <tosi-b3d-physics>; retune friction if grip/slide changed.
Packaging fix:@babylonjs/* and jolt-physics are now peer-only (they
were previously declared in both dependencies and peerDependencies). A hard
Babylon dependency would nest a second engine copy in a consumer holding a
direct Babylon dep — silently breaking instanceof, engine singletons, and
plugin registration. No action needed by consumers; this just makes install
resolution correct.
Added
Clouds (<tosi-b3d-clouds>) — an opaque blob cloud layer you can fly into
and lose the world inside (a fog whiteout, not a texture). A coverage weather
dial from wisps to thunderheads, and insideCloud so a cloud is a tactic
(break a radar lock, shake a pursuer).
Projected cloud shadows (cloud-shadows.ts) — the field painted top-down
into one texture, sampled by world position in a material plugin, so shadows
conform to terrain and fall on elevated receivers (the aircraft) too. Reusable.
Shadow decals (shadow-decal.ts) — a reusable soft blob-shadow for a single
caster (character, vehicle, dropped item).
Death (<tosi-b3d-death>) — death's exit: explode + burning wreckage,
release input, a third-person spectate shot, then a respawn panel. Flat and VR.
Encounters — <tosi-b3d-spawner> (seeded, "same seed, same battles"),
formations.ts (pure placement math), and a named prefab registry with
spawnPrefab for the set-dressing a death or spawn drops.
Ambient effects (<tosi-b3d-ambient>) — device-budgeted garnish (motes,
bubbles, tumbling leaves) that competes for one pool and switches off rather
than thinning into a lie. Pure budget allocator in ambient-budget.ts.
Atmosphere (atmosphere.ts) — pure fog compositing so underwater / cloud /
space whiteouts layer over the base fog instead of fighting it.
setGameplayCamera — an XR-safe viewpoint affordance (move the rig in a
headset, swap the camera when flat), so chase/death/vehicle transitions stop
breaking in VR.
PLATFORM.md — the platform bet (stay on the web, don't abstract the
renderer; the real risk of the Android XR / Vision Pro shift is input).
Changed
Aircraft — the stick is dead on the ground (only the throttle lifts off);
you can't crash-land until you've actually cleared the pad; chase camera banks
smoothly and no longer jitters on throttle.
Water follows the camera as an endless sea; terrain auto-centers so a sea
at y=0 floods the valleys.
Death explosion/wreck FX land at the real wreck; a respawn is no longer charred
(char a cloned material, not the shared library one).
The aircraft ground-ray no longer picks a cloud blob as "ground" (mid-air
"crash"); cloud whiteout is opaque under LINEAR fog and builds from every
direction; the live-debug timer is cleared on scene disconnect (no leak).