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:
1 parent
a1dfc0422e
commit
29ca99af7f
32 files changed
+919
-69
No files matched your search
@@ -11,6 +11,17 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
// UBT supplies this export/import macro for the runtime module. The standalone target has no
|
||||
// module boundary, so leave it empty there. UBT fournit la macro; le viewer autonome reste neutre.
|
||||
#ifndef VOXELFORGECORE_API
|
||||
#define VOXELFORGECORE_API
|
||||
#endif
|
||||
#if defined(VFCORE_PRIVATE_IMPLEMENTATION)
|
||||
#define VFCORE_API
|
||||
#else
|
||||
#define VFCORE_API VOXELFORGECORE_API
|
||||
#endif
|
||||
|
||||
namespace VoxelForgeCore
|
||||
{
|
||||
struct Vec2f { float x = 0.0f, y = 0.0f; };
|
||||
@@ -28,7 +39,7 @@ namespace VoxelForgeCore
|
||||
friend bool operator==(const TileKey&, const TileKey&) = default;
|
||||
};
|
||||
|
||||
struct TileKeyHash
|
||||
struct VFCORE_API TileKeyHash
|
||||
{
|
||||
std::size_t operator()(const TileKey& key) const noexcept;
|
||||
};
|
||||
@@ -87,7 +98,7 @@ namespace VoxelForgeCore
|
||||
Vec3d viewerStartVoxels{};
|
||||
};
|
||||
|
||||
class ResolvedWorldSnapshot
|
||||
class VFCORE_API ResolvedWorldSnapshot
|
||||
{
|
||||
public:
|
||||
ResolvedWorldSnapshot() = default;
|
||||
@@ -110,7 +121,7 @@ namespace VoxelForgeCore
|
||||
|
||||
// The library requests work; the host decides whether that means a pool, fibers, or serial
|
||||
// execution. The callback must run every index in [0,count) exactly once before returning.
|
||||
class JobScheduler
|
||||
class VFCORE_API JobScheduler
|
||||
{
|
||||
public:
|
||||
using Task = void(*)(void* context, std::size_t index, std::size_t workerIndex);
|
||||
@@ -333,7 +344,7 @@ namespace VoxelForgeCore
|
||||
bool skipMaterialGroups = false;
|
||||
};
|
||||
|
||||
class World
|
||||
class VFCORE_API World
|
||||
{
|
||||
public:
|
||||
explicit World(ResolvedWorldSnapshot snapshot);
|
||||
|
||||
Reference in new issue
Block a user