Hashed TMap/TSet and real TInlineAllocator storage did not move level 0 (72.1 -> 74.1 s, within noise): the slowness is elsewhere. StreamingWorld.h started (first build hit an int64/uint64 mismatch), library plan drafted (SHARED_CPP_LIBRARY_PLAN.md), before-normal captures saved. Uncompiled/unmeasured parts: streaming. Resume by forking session 01a0fd2e-3c3b-7050-b4e9-628fdcc4d553. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
31 lines
1.7 KiB
Markdown
31 lines
1.7 KiB
Markdown
# Shared C++ library plan
|
|
|
|
## Library contents
|
|
|
|
Move the deterministic CPU world pipeline into a portable `VoxelForgeCore` library: plain voxel
|
|
and world types, math/noise, density operations and caches, cave and passage fields, strate
|
|
composition, marching cubes, and desired clipmap tile selection. Keep renderer, file loading,
|
|
asset/reflection access, gameplay actors, and task scheduling in the host applications.
|
|
|
|
## Compatibility boundary
|
|
|
|
The library should expose standard C++ value types and explicit immutable world inputs. Unreal
|
|
adapters convert `UObject` settings/assets into those inputs and convert mesh results back to
|
|
Unreal types. The standalone loader maps its JSON snapshot into the same inputs. No Unreal headers,
|
|
reflection macros, `UObject`, or host allocator should cross the library boundary.
|
|
|
|
## Plugin integration
|
|
|
|
Build the core as one C++20 static library and link it from both the standalone viewer and the
|
|
VoxelForge Unreal module. The plugin keeps ownership of asset loading, worker admission,
|
|
cancellation, collision, game-thread mesh application, and per-frame upload budgets; workers call
|
|
the shared density and meshing API with immutable contexts. The standalone keeps its D3D11 renderer
|
|
and JSON loader and calls the same API.
|
|
|
|
## Preventing drift before extraction
|
|
|
|
Until the move lands, keep the standalone copies synchronized from the plugin source with a small
|
|
manifest of shared files and a checked sync script. The script should compare hashes and refuse an
|
|
ambiguous two-sided edit. Run the exported 3,436-sample bitwise parity corpus after every density
|
|
change, then remove the duplicate source only when both hosts build against the shared library.
|