wip(assembler): round S1 -- one Core voxel-size source; per-tile feature lists (islands)

AVoxelWorld::CoreVoxelSizeCm (default 25, 32 voxels/tile) flows through plan, field,
mesher, content, water, atmosphere, edits and collision. Staged-owner BuildHost passes at
20 cm (SurfaceWorld + islands, W1/W8/W16, anchors, BP edits, collision) with a fixed-25cm
negative control; default-size hashes match round 4; Core off stays legacy 12.5 cm.
Reusable BuildWorldAssemblyFeatureTileListV1; wired into FloatingIslands only so far.
256-island stress: tile p95 112.5 -> 2.0 ms, 0 mismatches, dropped-feature control fails.
Content placement measured (no populated cells): island ground search 7.25 ms/cell vs
legacy 0.29 ms -- open. Outside-review evaluation in Round5/REPORT.md.

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-18 18:48:38 +02:00
1 parent 111cf3d262
commit d6e69420e8
25 files changed
+2136 -250

No files matched your search

+21 -15
View File
@@ -284,6 +284,12 @@ public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel World|Core", meta = (DisplayName = "Core Mesher Recipe"))
EVoxelForgeCoreMesherRecipe CoreMesherRecipe = EVoxelForgeCoreMesherRecipe::MarchingCubesV1;
/** Physical Core voxel size in centimeters. Tile coordinates remain 32 voxels per tile.
* Taille physique d'un voxel Core en centimetres; chaque tuile contient 32 voxels. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel World|Core",
meta = (DisplayName = "Core Voxel Size (cm)", ClampMin = "12.5", ClampMax = "25.0"))
float CoreVoxelSizeCm = 25.0f;
/** Core-only clipmap radius, in level-0 Core tiles. Does not read Settings->ClipRadius. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Voxel World|Core", meta = (ClampMin = "1", ClampMax = "64"))
int32 CoreClipRadius = 3;
@@ -440,10 +446,10 @@ public:
* Applies a spherical brush that subtracts density.
*
* @param Position - World-space center of the carve brush
* @param Radius - Brush radius in legacy Runtime voxels (12.5 cm); Core converts it to
* 25 cm voxels to preserve the physical brush size.
* @param Strength - Legacy Runtime density offset; Core scales it to 25 cm units.
* Offset de densite Runtime historique; Core le convertit en unite de 25 cm.
* @param Radius - Brush radius in legacy Runtime voxels; Core converts it using its configured
* voxel size to preserve the physical brush size.
* @param Strength - Legacy Runtime density offset; Core scales it to its configured size.
* Offset de densite Runtime historique; Core le convertit selon sa resolution.
*/
UFUNCTION(BlueprintCallable, Category = "Voxel World|Modification")
void CarveAtPosition(FVector Position, float Radius = 6.0f, float Strength = 10.0f);
@@ -453,19 +459,19 @@ public:
* Applies a spherical brush that adds density.
*
* @param Position - World-space center of the fill brush
* @param Radius - Brush radius in legacy Runtime voxels (12.5 cm); Core converts it to
* 25 cm voxels to preserve the physical brush size.
* @param Strength - Legacy Runtime density offset; Core scales it to 25 cm units.
* Offset de densite Runtime historique; Core le convertit en unite de 25 cm.
* @param Radius - Brush radius in legacy Runtime voxels; Core converts it using its configured
* voxel size to preserve the physical brush size.
* @param Strength - Legacy Runtime density offset; Core scales it to its configured size.
* Offset de densite Runtime historique; Core le convertit selon sa resolution.
*/
UFUNCTION(BlueprintCallable, Category = "Voxel World|Modification")
void FillAtPosition(FVector Position, float Radius = 6.0f, float Strength = 10.0f);
/**
* Box brush carve/fill. Position is world-space (Unreal units); ExtentVoxels is the
* box half-size in legacy Runtime voxels (12.5 cm). Core converts it to 25 cm voxels.
* Strength is a legacy-voxel density offset; Core scales it to 25 cm units and forces its sign.
* La force est un decalage de densite historique; Core la convertit en unite de 25 cm et impose le signe.
* box half-size in legacy Runtime voxels. Core converts it using its configured voxel size.
* Strength is a legacy-voxel density offset; Core scales it and forces its sign.
* La force est un decalage de densite historique; Core la convertit selon sa resolution et impose le signe.
*/
UFUNCTION(BlueprintCallable, Category = "Voxel World|Modification")
void CarveBox(FVector Position, FVector ExtentVoxels, float Strength = 12.0f);
@@ -475,8 +481,8 @@ public:
/**
* Capsule brush carve/fill between two world-space points (Unreal units). Tube radius and density offset
* use legacy Runtime voxels (12.5 cm); Core converts both to 25 cm units.
* Creuse/remplit une capsule entre deux points monde. Rayon et decalage Runtime historique sont convertis en unite Core de 25 cm.
* use legacy Runtime voxels; Core converts both using its configured voxel size.
* Creuse/remplit une capsule entre deux points monde; rayon et decalage historiques suivent la resolution Core.
* Great for boring tunnels or laying solid pillars/walls.
*/
UFUNCTION(BlueprintCallable, Category = "Voxel World|Modification")
@@ -487,7 +493,7 @@ public:
/**
* Apply a fully-specified modification (any shape). Centers/endpoints and brush dimensions
* are expected in active voxel coordinates here (12.5 cm legacy, 25 cm Core); high-level
* are expected in active voxel coordinates here (legacy or configured Core size); high-level
* helpers convert legacy brush sizes to preserve physical dimensions.
* Returns nothing; re-meshes affected chunks.
*/
@@ -593,7 +599,7 @@ public:
UFUNCTION(BlueprintPure, Category = "Voxel World|Strate")
int32 GetStrateAtPosition(FVector WorldPosition) const;
// Convert actor-local physical Z to/from UVoxelStrateManager's legacy 12.5 cm space.
// Convert actor-local physical Z to/from UVoxelStrateManager's legacy coordinate space.
// Convertit Z local physique vers/depuis l'espace historique de UVoxelStrateManager.
float ToStrateManagerLocalZ(float LocalZCm) const;
float FromStrateManagerLocalZ(float ManagerLocalZCm) const;