载入中...
搜索中...
未找到
MaterialBatchTarget.h
浏览该文件的文档.
1#pragma once
2
4
5#include <span>
6
7namespace eve::material_editing {
8
11public:
13 virtual ~IMaterialBatchRuntimeSink() = default;
19 [[nodiscard]] virtual Result<void> publish(std::span<const MaterialDocumentTarget> candidates) = 0;
20};
21
26 public virtual IEditableTarget,
29 public IPropertyProvider,
31public:
35 MaterialBatchTarget(std::string id, std::vector<MaterialDocumentTarget> materials,
36 IMaterialBatchRuntimeSink* sink = nullptr);
37
39 TargetId targetId() const override { return TargetId(id_); }
41 TargetDescriptor describe() const override;
46 void* queryCapability(const CapabilityId& capability) override;
48 [[nodiscard]] Result<void> applyDomainOperation(const DomainOperation& operation) override;
50 [[nodiscard]] std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
52 [[nodiscard]] Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget> candidate) override;
54 [[nodiscard]] eve::Result<eve::Revision> currentRevision(const SelectionSnapshot& selection) const override;
56 PropertySchema schema(const SelectionSnapshot& selection) const override;
58 PropertyReadResult read(const SelectionSnapshot& selection, const PropertyPath& path) const override;
60 [[nodiscard]] Result<DomainOperation> makeSet(const SelectionSnapshot& selection, const PropertyPath& path,
61 const EditorValue& value, PropertySetMode mode) const override;
63 [[nodiscard]] Result<DomainOperation> makeReset(const SelectionSnapshot& selection,
64 const PropertyPath& path) const override;
66 EditorValue snapshotValue() const override;
67
69 std::vector<editing::StableId> materialIds() const;
70
71private:
73 [[nodiscard]] Result<std::vector<std::size_t>> selectedIndices(const SelectionSnapshot& selection) const;
75 [[nodiscard]] Result<DomainOperation> replacement(std::vector<MaterialDocumentTarget> candidates,
76 const PropertyPath& path) const;
78 [[nodiscard]] Result<void> publishAndAdopt(std::vector<MaterialDocumentTarget> candidates,
79 editing::Revision candidateRevision,
80 const EditRegion& candidateDirty);
81
82 std::string id_;
83 std::vector<MaterialDocumentTarget> materials_;
84 IMaterialBatchRuntimeSink* sink_ = nullptr;
85};
86
87} // namespace eve::material_editing
ActionParameterOperation operation
double value
#define EVENGINE_API_BACKENDS
Definition Export.h:108
std::string path
Definition PlayHost.cpp:110
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Dirty region and revision shared by every editable document target.
Optional candidate/publish capability for atomic domain operations.
Editable-target capability that applies owning domain operations.
IEditableTarget public API.
Optional capability exposing a deterministic, persistence-safe editing snapshot.
UI-independent property access for an immutable selection snapshot.
Dotted property path (layout.size) compared and persisted as text.
Definition EditingIds.h:78
Deterministic owning value tree shared by authoring hosts.
Atomic publication boundary for a complete multi-material candidate.
virtual Result< void > publish(std::span< const MaterialDocumentTarget > candidates)=0
Publish every candidate as one transaction.
virtual ~IMaterialBatchRuntimeSink()=default
Releases IMaterialBatchRuntimeSink resources.
One editor transaction target for mixed-value, multi-material property editing. Owns all authoring do...
TargetId targetId() const override
Target id.
std::uint64_t Revision
DomainOperation public API.
EditRegion public API.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.