载入中...
搜索中...
未找到
ArtifactPublication.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
15#include "common/Identity.h"
16#include "common/Result.h"
17#include "common/Value.h"
18
19#include <cstdint>
20#include <memory>
21#include <span>
22#include <string>
23#include <string_view>
24
25namespace eve::artifact {
26
28enum class PartKind : std::uint8_t {
29 Grid,
34};
35
37struct Bounds {
38 float minX = 0.f;
39 float minY = 0.f;
40 float minZ = 0.f;
41 float maxX = 0.f;
42 float maxY = 0.f;
43 float maxZ = 0.f;
44 bool valid = false;
45};
46
48struct Point {
49 float x = 0.f;
50 float y = 0.f;
51 float z = 0.f;
52};
53
61struct PartView {
63 std::string_view role;
65 std::uint64_t schemaVersion = 1;
66 std::string_view buildKey;
68 std::span<const float> positions;
69 std::span<const float> normals;
70 std::span<const float> uvs;
71 std::span<const std::uint32_t> indices;
72 std::int32_t width = 0;
73 std::int32_t height = 0;
74 std::span<const std::uint32_t> cells;
75 std::span<const Point> points;
76 std::string_view metadataJson;
77};
78
87 std::uint64_t schemaVersion = 1;
88 std::string_view buildKey;
90 std::span<const PartView> parts;
91 std::string_view metadataJson;
92};
93
103public:
105 virtual ~PreparedPublication() = default;
107 virtual void commit() noexcept = 0;
109 virtual void rollback() noexcept = 0;
110};
111
114public:
116 virtual ~ProviderContract() = default;
117
124 const PublicationView& publication) = 0;
125
130 [[nodiscard]] virtual eve::Result<eve::Value> snapshotState() const;
131
137 [[nodiscard]] virtual eve::Result<void> restoreState(const eve::Value& state);
138
140 [[nodiscard]] virtual bool emptyState() const noexcept { return true; }
141
143 virtual void clearState() noexcept {}
144};
145
148public:
149 static constexpr const char* capabilityName = "eve.procgen.ISceneArtifactAdapter";
151 ~ISceneArtifactAdapter() override = default;
152};
153
156public:
157 static constexpr const char* capabilityName = "eve.procgen.IMapArtifactAdapter";
159 ~IMapArtifactAdapter() override = default;
160};
161
164public:
165 static constexpr const char* capabilityName = "eve.procgen.IGraphicsArtifactAdapter";
167 ~IGraphicsArtifactAdapter() override = default;
168};
169
172public:
173 static constexpr const char* capabilityName = "eve.procgen.IPhysicsArtifactAdapter";
175 ~IPhysicsArtifactAdapter() override = default;
176};
177
180 bool scene = false;
181 bool graphics = false;
182 bool physics = false;
184 bool map = false;
185};
186
190 bool scenePublished = false;
191 bool graphicsPublished = false;
192 bool physicsPublished = false;
193 bool mapPublished = false;
194};
195
196} // namespace eve::artifact
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
Strong identity values shared by persistence, content and logical-name APIs.
std::weak_ptr< PrimitiveScene > scene
Move-only, checked operation results for the common layer.
Owning, renderer-independent dynamic values.
Move-only operation result carrying either a value or Status.
Definition Result.h:155
The canonical owning dynamic value used by data-facing protocols.
Definition Value.h:31
Graphics resource publication capability, implemented by graphics.
~IGraphicsArtifactAdapter() override=default
Releases IGraphicsArtifactAdapter resources.
Tile/map publication capability, implemented by the map module.
~IMapArtifactAdapter() override=default
Releases IMapArtifactAdapter resources.
Collider publication capability, implemented by physics.
~IPhysicsArtifactAdapter() override=default
Releases IPhysicsArtifactAdapter resources.
Scene graph publication capability, implemented by the scene module.
~ISceneArtifactAdapter() override=default
Releases ISceneArtifactAdapter resources.
A prepared consumer mutation with a non-throwing visibility boundary.
virtual void commit() noexcept=0
Make the prepared mutation observable; the operation cannot fail.
virtual ~PreparedPublication()=default
Releases PreparedPublication resources.
virtual void rollback() noexcept=0
Discard the prepared mutation; idempotent and non-throwing.
Base contract for a consumer-owned artifact provider.
virtual void clearState() noexcept
Clear provider state during aggregate-restore failure cleanup.
virtual eve::Result< std::unique_ptr< PreparedPublication > > prepare(const PublicationView &publication)=0
Prepare a provider-local mutation from a borrowed publication view.
virtual bool emptyState() const noexcept
Return whether this provider has no committed observable state.
virtual ~ProviderContract()=default
Provider contract.
Id128 public API.
Definition Identity.h:112
PartKind
The leaf kinds understood by consumer-owned artifact providers.
Backend-neutral axis-aligned bounds copied from a generated part.
Borrowed immutable view of one generated leaf.
std::span< const std::uint32_t > indices
std::span< const float > normals
std::span< const float > positions
std::span< const Point > points
std::span< const std::uint32_t > cells
std::span< const float > uvs
Minimal point representation used at the publication boundary.
Borrowed immutable view of one complete generated publication.
std::span< const PartView > parts
Required provider set for one artifact publication transaction.
Observable receipt from a successful provider transaction.