载入中...
搜索中...
未找到
BuildLayerStack.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Result.h"
4#include "procgen/Grid2D.h"
5#include "procgen/MeshBuild.h"
7#include "procgen/PointSet.h"
8
9#include <string>
10#include <string_view>
11#include <variant>
12#include <vector>
13
14namespace eve::procgen {
15
18 std::string id;
19 std::variant<MeshBuild, PointSet> value;
20};
21
24 int minCellX = 0;
25 int minCellY = 0;
26 int maxCellX = 0;
27 int maxCellY = 0;
28 float minWorldX = 0.f;
29 float minWorldZ = 0.f;
30 float maxWorldX = 0.f;
31 float maxWorldZ = 0.f;
32};
33
36public:
38 [[nodiscard]] int getCount() const noexcept;
40 [[nodiscard]] std::string getId(int index) const;
42 [[nodiscard]] std::string getType(int index) const;
44 [[nodiscard]] Result<MeshBuild> getMesh(int index) const;
46 [[nodiscard]] Result<PointSet> getPoints(int index) const;
47
48private:
49 friend class BuildLayerStack;
50 std::vector<BuildLayerArtifact> artifacts_;
51};
52
61public:
63 [[nodiscard]] Result<void> addTileLayer(std::string id, bool enabled, float cellSize, float height,
64 std::string group);
66 [[nodiscard]] Result<void> addObjectLayer(std::string id, bool enabled, const ObjectBuildLayer& layer);
67 [[nodiscard]] Result<void> setEnabled(std::string_view id, bool enabled);
68 void clear();
70 [[nodiscard]] int getLayerCount() const noexcept;
72 [[nodiscard]] std::string getLayerId(int index) const;
74 [[nodiscard]] std::string getLayerType(int index) const;
76 [[nodiscard]] bool isLayerEnabled(int index) const noexcept;
77
86 [[nodiscard]] Result<BuildLayerExecution> execute(const Grid2D& grid, const PointSet& points,
87 const PointSet* orientation = nullptr) const;
89 [[nodiscard]] Result<BuildLayerExecution> executeRegion(const Grid2D& grid, const PointSet& points,
90 const BuildLayerRegion& region,
91 const PointSet* orientation = nullptr) const;
92
94 [[nodiscard]] std::string serializeDefinition() const;
96 [[nodiscard]] Result<void> deserializeDefinition(std::string_view definition);
97
98private:
99 struct TileLayer {
100 float cellSize = 1.f;
101 float height = 0.f;
102 std::string group;
103 };
104 struct Layer {
105 std::string id;
106 bool enabled = true;
107 std::variant<TileLayer, ObjectBuildLayer> definition;
108 };
109 [[nodiscard]] bool contains(std::string_view id) const;
110 std::vector<Layer> layers_;
111};
112
113} // namespace eve::procgen
building::EdgeCurveGroup group
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::uint32_t height
TileLayer * layer
std::string id
Definition PlayHost.cpp:108
std::shared_ptr< const std::vector< glm::vec2 > > points
Move-only, checked operation results for the common layer.
LogicalId definition
uint32_t index
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Immutable-by-convention result of one complete build-stack execution.
Ordered, versioned executor for procedural tile and object build layers.
Intermediate 2D generation result. cells store semantic ids (see Semantic.h), not tile GIDs — convert...
Definition Grid2D.h:36
Deterministic TileWorldCreator-style object build layer.
Script-friendly collection of attributed 3D samples.
Definition PointSet.h:59
bool enabled
One named build-layer artifact in configured execution order.
std::variant< MeshBuild, PointSet > value
Half-open grid and world-space bounds used for one incremental cluster build.