载入中...
搜索中...
未找到
IncrementalBuild.cpp
浏览该文件的文档.
110std::uint64_t clusterHash(const BuildLayerStack& stack, const Grid2D& grid, const PointSet& points,
129 if (floorDivision(point.x, worldSize) == clusterX && floorDivision(point.z, worldSize) == clusterZ)
133 for (std::size_t index = 0; index < orientation->points().size(); ++index) hashPoint(hash, *orientation, index);
153 DiagnosticCode::InvalidArgument, "delta index is out of range", {}, {}, "procgen.incrementalBuild"));
156 DiagnosticCode::NotFound, "removed cluster has no artifacts", {}, {}, "procgen.incrementalBuild"));
160Result<IncrementalBuildDelta> IncrementalBuildExecutor::update(const BuildLayerStack& stack, const Grid2D& grid,
164 return Result<IncrementalBuildDelta>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument,
172 if (grid.getCell(x, y) != int(Semantic::Empty)) candidates.emplace(x / clusterSizeCells, y / clusterSizeCells);
184 if (floorDivision(point.x, worldSize) == clusterX && floorDivision(point.z, worldSize) == clusterZ) {
219int IncrementalBuildExecutor::getCachedClusterCount() const noexcept { return int(cache_.size()); }
221Result<BuildLayerExecution> IncrementalBuildExecutor::getCachedArtifacts(int clusterX, int clusterZ) const {
225 Diagnostic::error(DiagnosticCode::NotFound, "cluster is not cached", {}, {}, "procgen.incrementalBuild"));
Stable, structured diagnostics shared by engine modules.
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Ordered, versioned executor for procedural tile and object build layers.
Definition BuildLayerStack.h:60
Result< BuildLayerExecution > executeRegion(const Grid2D &grid, const PointSet &points, const BuildLayerRegion ®ion, const PointSet *orientation=nullptr) const
Execute enabled layers for one half-open cluster region.
Definition BuildLayerStack.cpp:149
Intermediate 2D generation result. cells store semantic ids (see Semantic.h), not tile GIDs — convert...
Definition Grid2D.h:36
Ordered changes required to synchronize a scene-side cluster cache.
Definition IncrementalBuild.h:21
Result< BuildLayerExecution > getArtifacts(int index) const
Returns the artifacts.
Definition IncrementalBuild.cpp:150
Result< BuildLayerExecution > getCachedArtifacts(int clusterX, int clusterZ) const
Returns the cached artifacts.
Definition IncrementalBuild.cpp:221
int getCachedClusterCount() const noexcept
Returns the cached cluster count.
Definition IncrementalBuild.cpp:219
Result< IncrementalBuildDelta > update(const BuildLayerStack &stack, const Grid2D &grid, const PointSet &points, int clusterSizeCells, float cellSizeWorld, const PointSet *orientation=nullptr)
Rebuild only clusters whose layer definition, grid halo, point rows or orientation changed.
Definition IncrementalBuild.cpp:160
Definition EvpackPointGraphLoader.h:12
WidgetDesc grid(int columns, std::vector< WidgetDesc > children, std::string id)
Fixed-column grid; children are placed in source order.
Definition Widget.cpp:687
WidgetDesc row(std::vector< WidgetDesc > children, std::string id)
Horizontal elastic layout row.
Definition Widget.cpp:679
@ InvalidArgument
@ NotFound
Half-open grid and world-space bounds used for one incremental cluster build.
Definition BuildLayerStack.h:23