载入中...
搜索中...
未找到
ProcgenSceneSink.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Export.h"
4#include "common/Result.h"
5
6#include <cstdint>
7#include <functional>
8#include <string>
9#include <vector>
10
11namespace eve {
12
16 uint64_t sourcePointId = 0;
17 std::string id;
18 std::string asset;
19 float x = 0.f;
20 float y = 0.f;
21 float z = 0.f;
22 float yaw = 0.f;
23 float scaleX = 1.f;
24 float scaleY = 1.f;
25 float scaleZ = 1.f;
26 uint32_t seed = 1;
27};
28
31 uint64_t baseRevision = 0;
32 uint64_t targetRevision = 0;
33 std::vector<ProcgenInstanceDesc> added;
34 std::vector<ProcgenInstanceDesc> updated;
36 std::vector<uint64_t> removedPointIds;
38 std::vector<std::string> removed;
40 std::vector<uint64_t> targetPointOrder;
42 std::vector<std::string> targetOrder;
43};
44
48 std::string batchId;
50 uint64_t targetRevision = 0;
52 std::vector<ProcgenInstanceDesc> instances;
53};
54
63public:
64 static constexpr const char* capabilityName = "IProcgenSceneSink";
65
67 virtual ~IProcgenSceneSink() = default;
69 virtual bool applyBatch(const std::string& batchId,
70 const std::vector<ProcgenInstanceDesc>& instances) = 0;
80 [[nodiscard]] virtual Result<uint64_t> replaceBatch(
81 const std::string& batchId, uint64_t targetRevision,
82 const std::vector<ProcgenInstanceDesc>& instances) = 0;
90 [[nodiscard]] virtual Result<uint64_t> replaceBatches(const std::vector<ProcgenBatchSnapshot>& snapshots) = 0;
92 virtual bool removeBatch(const std::string& batchId) = 0;
100 [[nodiscard]] virtual Result<uint64_t> removeBatches(const std::vector<std::string>& batchIds) = 0;
110 const std::vector<std::string>& batchIds, const std::function<Result<void>()>& commitPreparedOwner) = 0;
117 [[nodiscard]] virtual Result<uint64_t> applyDelta(const std::string& batchId,
118 const ProcgenInstanceDelta& delta) = 0;
120 virtual uint64_t batchRevision(const std::string& batchId) const = 0;
122 virtual int instanceCount(const std::string& batchId) const = 0;
124 virtual int lastCreatedCount(const std::string& batchId) const = 0;
126 virtual int lastReusedCount(const std::string& batchId) const = 0;
128 virtual int lastRemovedCount(const std::string& batchId) const = 0;
129};
130
131} // namespace eve
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
float z
Definition AnimClip.cpp:738
std::vector< BuildingInstanceSnapshot > instances
#define EVENGINE_API_FOUNDATION_INLINE
仅供"只有内联成员"的类型使用的组宏:拥有者 dllexport,消费方不导入。
Definition Export.h:170
std::uint32_t seed
Definition PointSet.cpp:807
Move-only, checked operation results for the common layer.
Optional scene consumer for procedural instance batches.
virtual Result< uint64_t > applyDelta(const std::string &batchId, const ProcgenInstanceDelta &delta)=0
Apply one prevalidated identity delta atomically to an existing batch.
virtual int lastRemovedCount(const std::string &batchId) const =0
Instances removed by the batch's latest successful apply or removal.
virtual Result< uint64_t > removeBatches(const std::vector< std::string > &batchIds)=0
Atomically remove several published batches.
virtual int lastReusedCount(const std::string &batchId) const =0
Stable-id instances reused by the batch's latest successful apply.
virtual ~IProcgenSceneSink()=default
I procgen scene sink.
virtual uint64_t batchRevision(const std::string &batchId) const =0
Current committed revision of a batch, or zero when it is absent.
virtual bool applyBatch(const std::string &batchId, const std::vector< ProcgenInstanceDesc > &instances)=0
Create or reconcile all instances in a named batch.
virtual int instanceCount(const std::string &batchId) const =0
Number of currently published instances in a batch.
virtual int lastCreatedCount(const std::string &batchId) const =0
Instances newly created by the batch's latest successful apply.
virtual Result< uint64_t > replaceBatch(const std::string &batchId, uint64_t targetRevision, const std::vector< ProcgenInstanceDesc > &instances)=0
Atomically replace a batch with a complete stable-identity snapshot at an explicit revision.
virtual Result< uint64_t > removeBatchesCoordinated(const std::vector< std::string > &batchIds, const std::function< Result< void >()> &commitPreparedOwner)=0
Remove several batches while coordinating one external authoritative commit.
virtual bool removeBatch(const std::string &batchId)=0
Remove the visible contents of a batch.
virtual Result< uint64_t > replaceBatches(const std::vector< ProcgenBatchSnapshot > &snapshots)=0
Atomically replace several batches from complete snapshots.
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Build metadata (engine git commit, build time, third-party version).
Definition Build.cpp:16
One complete cell snapshot participating in an atomic multi-batch publication.
std::string batchId
Stable target batch identity.
std::vector< ProcgenInstanceDesc > instances
Complete ordered target contents.
Identity-based, revision-checked mutation of one procedural scene batch.
std::vector< uint64_t > removedPointIds
Stable source PointIds removed from the target batch.
std::vector< std::string > targetOrder
Compatibility target order addressed directly by Scene instance id.
std::vector< ProcgenInstanceDesc > updated
std::vector< std::string > removed
Compatibility removals addressed directly by Scene instance id.
std::vector< uint64_t > targetPointOrder
Exact target order addressed by stable source PointId.
std::vector< ProcgenInstanceDesc > added
Engine-neutral description of one procedural scene instance.