wip(assembler): M3 round 3 -- separated islands + Unreal island route (owner build 18:46)

Islands read as separate (91.89% open sky at mid-height), underside cavity closed,
rim teeth were capture shading. Island manifest import + BuildHost proof passed on the
pre-cache tree; M1 SurfaceWorld and M2 V1/V2 gates passed.

Known open: final XY-column cache compiled in the owner build but is unverified;
island LOD0 p95 ~155 ms misses the 133 ms sprint deadline (legacy ~43 ms); the island
manifest only fits the BuildHost fixture layout (owner's world: Core init fails,
empty world) -> round 4 builds plans inside Unreal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-10 20:53:03 +02:00
1 parent 4afea7c802
commit 48fa028086
37 files changed
+3788 -107

No files matched your search

@@ -43,6 +43,8 @@
#include "CoreMinimal.h"
#include "Containers/Queue.h"
struct FCoreFloatingIslandSnapshot;
#include "VoxelTypes.h"
#include "VoxelStrateTypes.h" // FStrateDecoration (resolved per dominant biome)
#include "VoxelBiomeTypes.h" // FBiomeContext (per-column biome resolve on the worker)
@@ -103,6 +105,16 @@ public:
float& OutGroundLocalZCm, bool& bOutHasWater,
float& OutWaterLocalZCm) const;
/** Find the top air-to-rock crossing in a Core FloatingIslands plan for content placement.
* / Trouve le premier contact air-roche d'un plan Core FloatingIslands pour placer le contenu. */
bool QueryNativeFloatingIslandAnchor(int32 StrateIndex, const FVector2D& LocalXYCm,
float& OutGroundLocalZCm) const;
/** Read the effective water datum used by this strate's content plane.
* / Lit le niveau d'eau effectif utilise par le plan de contenu de cette strate. */
bool QueryStrateWaterAnchor(int32 StrateIndex, bool& bOutHasWater,
float& OutWaterLocalZCm) const;
//--- DECORATIONS (distance-based world grid, async march) ----------------
/** Stream decoration cells around the player: recompute the desired set on cell/strate change,
* launch async march tasks (capped), and apply finished results budgeted. Call every Tick. */
@@ -254,6 +266,8 @@ private:
bool bSurfaceWorld = false; // heightfield archetype → use the GetSurfaceHeightAt oracle
bool bNativeSurface = false; // Core manifest is the height oracle and water datum / Le manifeste Core definit le relief et le niveau d'eau.
TSharedPtr<const FCoreSurfaceSnapshot, ESPMode::ThreadSafe> NativeSurface;
bool bNativeFloatingIslands = false; // islands use the Core volume for column snaps / les iles utilisent le volume Core pour les ancres.
TSharedPtr<const FCoreFloatingIslandSnapshot, ESPMode::ThreadSafe> NativeIslands;
// Strate biome field (PODs only → worker-safe). Empty ⇒ biomes disabled for this strate. The
// worker resolves the dominant biome PER COLUMN (ResolveBiomeSampleAt) so decoration borders
@@ -349,6 +363,7 @@ private:
// Immutable Core manifest snapshot captured by decoration workers; workers never touch UObjects.
// Instantane immuable du manifeste Core pour les workers de decoration; aucun worker ne touche aux UObjects.
TSharedPtr<const FCoreSurfaceSnapshot, ESPMode::ThreadSafe> NativeSurfaceSnapshot;
TSharedPtr<const FCoreFloatingIslandSnapshot, ESPMode::ThreadSafe> NativeFloatingIslandSnapshot;
int32 Seed = 0;