载入中...
搜索中...
未找到
MeshGraph.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Result.h"
4#include "procgen/Grid2D.h"
5#include "procgen/MeshBuild.h"
6#include "procgen/PointSet.h"
7
8#include <cstdint>
9#include <string>
10#include <string_view>
11#include <unordered_map>
12#include <variant>
13#include <vector>
14
15namespace eve::procgen {
16
18using MeshGraphValue = std::variant<Grid2D, PointSet, MeshBuild>;
19
22public:
24 [[nodiscard]] Result<void> addNode(std::string id, std::string operation);
26 [[nodiscard]] Result<void> connect(std::string_view fromId, std::string_view toId, int inputIndex = 0);
28 [[nodiscard]] Result<void> setNodeGrid(std::string_view id, const Grid2D& value);
30 [[nodiscard]] Result<void> setNodePoints(std::string_view id, const PointSet& value);
32 [[nodiscard]] Result<void> setNodeMesh(std::string_view id, const MeshBuild& value);
34 [[nodiscard]] Result<void> setNodeFloat(std::string_view id, std::string key, float value);
36 [[nodiscard]] Result<void> setNodeString(std::string_view id, std::string key, std::string value);
39 [[nodiscard]] Result<MeshBuild> execute(std::string_view outputId);
41 [[nodiscard]] Result<void> validate(std::string_view outputId) const;
43 void clearCache();
45 [[nodiscard]] std::uint64_t revision() const noexcept { return revision_; }
47 [[nodiscard]] std::string serializeDefinition() const;
49 [[nodiscard]] Result<void> deserializeDefinition(std::string_view definition);
50
51private:
52 struct Node {
53 std::string id;
54 std::string operation;
55 std::string inputs[2];
56 std::unordered_map<std::string, float> floats;
57 std::unordered_map<std::string, std::string> strings;
59 bool hasValue = false;
60 MeshGraphValue cache;
61 bool cacheValid = false;
62 };
63
64 [[nodiscard]] Result<MeshGraphValue> evaluate(std::string_view id, std::unordered_map<std::string, int>& states);
65 void invalidateFrom(std::string_view id);
66
67 std::unordered_map<std::string, Node> nodes_;
68 std::vector<std::string> order_;
69 std::uint64_t revision_ = 0;
70};
71
72} // namespace eve::procgen
ActionParameterOperation operation
double value
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::uint32_t key
int inputs
Definition GridGraph.cpp:23
std::string id
Definition PlayHost.cpp:108
Move-only, checked operation results for the common layer.
LogicalId definition
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Intermediate 2D generation result. cells store semantic ids (see Semantic.h), not tile GIDs — convert...
Definition Grid2D.h:36
CPU triangle mesh from procedural mesh recipes (e.g. marching cubes). Positions/normals are xyz-packe...
Definition MeshBuild.h:19
Typed procedural mesh graph composing grid, point and topology domains.
Definition MeshGraph.h:21
std::uint64_t revision() const noexcept
Revision.
Definition MeshGraph.h:45
Script-friendly collection of attributed 3D samples.
Definition PointSet.h:59
std::variant< Grid2D, PointSet, MeshBuild > MeshGraphValue
Strong values accepted by MeshGraph ports.
Definition MeshGraph.h:18