wip(unreal): VoxelForgeCore UBT module + asset adapter reproduce the standalone world

Luna, integration round 1 (BuildHost only; owner's project and assets untouched):
- New runtime module VoxelForgeCore: one shim per Standalone/Core/core_sources.txt row
  (sources stay canonical under Standalone/), NoPCH/no unity, manifest check; VoxelForge
  links it (no runtime routing yet). UE link-safety audit: 18 shims, 83,843 symbol lines
  vs 399 Unreal-style names, 0 clashes.
- Adapter (editor commandlet path) turns staged copies of the owner's DA_* assets into
  schema-v1 JSON; with clip_radius=3/max_clip_level=8 it reproduces all four Core hashes
  (0xdb2991c73215af4c, 0x8236c5edd7fc8e4f, 0x4c48fa75a543d58e, 0xbea22e76b34a4dfc) and
  walkability 5,642/5,642 at worker limits 1, 8 and 16.
- Noted: the owner's settings asset says max clip level 6 (standalone used 8); Core uses
  25 cm voxels vs the plugin runtime's 12.5 cm.
Not done yet: AVoxelWorld switch and Core runtime route (round 2).
Docs: CODEMAP, ARCHITECTURE, SHARED_CPP_LIBRARY_PLAN, UNREAL_INTEGRATION_REPORT.

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-08 19:38:18 +02:00
1 parent a1dfc0422e
commit 29ca99af7f
32 files changed
+919 -69

No files matched your search

+15
View File
@@ -587,6 +587,20 @@ function Copy-DirectoryContents([string]$Source, [string]$Destination) {
}
}
function Sync-StagedCoreSources {
# UBT reads these canonical files through the plugin module's include roots. Keep the host
# copy source-only; Core verification logs and standalone binaries are not part of the module.
$stageStandalone = Join-Path $StagePlugin 'Standalone'
$sourceStandalone = Join-Path $PluginRoot 'Standalone'
Ensure-Directory $stageStandalone
foreach ($relative in @('Core\include', 'Core\src', 'Compat', 'Source')) {
Copy-DirectoryContents (Join-Path $sourceStandalone $relative) `
(Join-Path $stageStandalone $relative)
}
$null = Copy-Item -LiteralPath (Join-Path $sourceStandalone 'Core\core_sources.txt') `
-Destination (Join-Path $stageStandalone 'Core\core_sources.txt') -Force -PassThru
}
function Sync-StagedHost {
if (-not (Test-Path -LiteralPath $HostProject -PathType Leaf)) {
throw "Staged host project is missing: $HostProject"
@@ -602,6 +616,7 @@ function Sync-StagedHost {
Remove-Item -LiteralPath $stageSource -Recurse -Force
}
Copy-DirectoryContents (Join-Path $PluginRoot 'Source') $stageSource
Sync-StagedCoreSources
$null = Copy-Item -LiteralPath (Join-Path $PluginRoot 'VoxelForge.uplugin') `
-Destination (Join-Path $StagePlugin 'VoxelForge.uplugin') -Force -PassThru