载入中...
搜索中...
未找到
DecalTarget.h
浏览该文件的文档.
1#pragma once
2
7
8#include <map>
9#include <string>
10#include <utility>
11
12namespace eve::graphics { class Texture; }
13namespace eve::decal { class DecalManager; }
14
15namespace eve::decal_editing {
16
17using editing::CapabilityId; using editing::DiagnosticSeverity; using editing::DomainOperation;
18using editing::EditRegion; using editing::GizmoSnapshot; using editing::IDomainOperationTarget;
19using editing::IDomainOperationTargetStaging; using editing::IEditableTarget; using editing::IPropertyProvider;
20using editing::PropertyDescriptor; using editing::PropertyFlag; using editing::PropertyPath;
21using editing::PropertyReadResult; using editing::PropertyReadState; using editing::PropertySchema;
23using editing::SelectionSnapshot; using editing::TargetDescriptor; using editing::TargetId;
24using editing::Result;
27
30 public virtual IEditableTarget,
33 public IPropertyProvider {
34public:
36 explicit DecalDocumentTarget(std::string id);
38 TargetId targetId() const override { return TargetId(id_); }
40 TargetDescriptor describe() const override;
42 void* queryCapability(const CapabilityId& capability) override;
44 Result<void> applyDomainOperation(const DomainOperation& operation) override;
46 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
48 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget> candidate) override;
50 eve::Result<eve::Revision> currentRevision(const SelectionSnapshot& selection) const override;
52 PropertySchema schema(const SelectionSnapshot& selection) const override;
54 PropertyReadResult read(const SelectionSnapshot& selection, const PropertyPath& path) const override;
56 Result<DomainOperation> makeSet(const SelectionSnapshot& selection, const PropertyPath& path,
57 const EditorValue& value, PropertySetMode mode) const override;
59 Result<DomainOperation> makeReset(const SelectionSnapshot& selection,
60 const PropertyPath& path) const override;
62 const EditorValue* value(const std::string& path) const;
64 std::vector<EditorDiagnostic> validate() const;
66 EditorValue snapshotValue() const;
68 Result<void> loadSnapshot(const EditorValue& snapshot);
69private:
71 bool matches(const SelectionSnapshot& selection) const;
73 static PropertySchema decalSchema();
74 static std::map<std::string,EditorValue> defaults();
75 std::string id_;
76 std::map<std::string,EditorValue> values_;
77};
78
81public:
83 virtual ~IDecalRuntimeAssetResolver() = default;
85 virtual Result<graphics::Texture*> texture(const std::string& asset) const = 0;
86};
87
90public:
92 virtual ~IDecalRuntimeSink() = default;
94 virtual Result<void> publish(const DecalDocumentTarget& document) = 0;
95};
96
99public:
103 : manager_(manager), assets_(assets) {}
105 Result<void> publish(const DecalDocumentTarget& document) override;
107 Result<void> clear();
109 int runtimeId() const { return runtimeId_; }
110private:
111 decal::DecalManager* manager_=nullptr; const IDecalRuntimeAssetResolver* assets_=nullptr;
112 int runtimeId_=0;
113};
114
118public:
122 : document_(std::move(id)), sink_(sink) {}
124 TargetId targetId() const override { return TargetId(document_.targetId()); }
126 std::uint64_t revision() const override { return document_.revision(); }
128 EditRegion dirtyRegion() const override { return document_.dirtyRegion(); }
130 void clearDirtyRegion() override { document_.clearDirtyRegion(); }
132 Result<void> applyDomainOperation(const DomainOperation& operation) override;
134 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
136 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget> candidate) override;
138 DecalDocumentTarget& authoringTarget() { return document_; }
140 const DecalDocumentTarget& authoringTarget() const { return document_; }
141private:
142 DecalDocumentTarget document_; IDecalRuntimeSink* sink_=nullptr; bool staging_=false;
143};
144
147public:
149 EditorGizmoSnapshot build(const DecalDocumentTarget& document) const;
150};
151
152} // namespace eve::decal_editing
ActionParameterOperation operation
double value
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::string path
Definition PlayHost.cpp:110
std::string id
Definition PlayHost.cpp:108
A structured explanation of a failed, degraded, or noteworthy result.
Definition Diagnostic.h:94
Move-only operation result carrying either a value or Status.
Definition Result.h:155
CPU-side decal registry: spawn / remove / fade / quotas, and the per-frame drawer that feeds the grap...
Stable, serializable authoring document for one projected decal.
Definition DecalTarget.h:33
TargetId targetId() const override
Target id.
Definition DecalTarget.h:38
Builds projection-box and normal overlays for decal placement tools.
Candidate-first operation target synchronizing author state and a live decal.
void clearDirtyRegion() override
Clears dirty region.
const DecalDocumentTarget & authoringTarget() const
Immutable document used by previews and persistence.
EditRegion dirtyRegion() const override
Dirty region.
DecalPublishingTarget(std::string id, IDecalRuntimeSink *sink)
Decal publishing target.
TargetId targetId() const override
Target id.
DecalDocumentTarget & authoringTarget()
Mutable document used by the Inspector to plan operations.
std::uint64_t revision() const override
Revision.
Candidate-first binding from one stable decal document to DecalManager.
Definition DecalTarget.h:98
int runtimeId() const
Runtime integer ID for diagnostics only.
DecalRuntimeBinding(decal::DecalManager *manager, const IDecalRuntimeAssetResolver *assets)
Decal runtime binding.
Resolves every decal texture before a live generation is replaced.
Definition DecalTarget.h:80
virtual Result< graphics::Texture * > texture(const std::string &asset) const =0
Resolve a borrowed texture, returning NotFound for missing assets.
virtual ~IDecalRuntimeAssetResolver()=default
Releases IDecalRuntimeAssetResolver resources.
Atomic publication boundary for a complete decal candidate.
Definition DecalTarget.h:89
virtual Result< void > publish(const DecalDocumentTarget &document)=0
Publish a candidate while preserving runtime state on rejection.
virtual ~IDecalRuntimeSink()=default
Releases IDecalRuntimeSink resources.
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.
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.
eve::Severity DiagnosticSeverity
std::uint64_t Revision
StrongId< TargetIdTag > TargetId
Definition EditingIds.h:57
eve::Diagnostic Diagnostic
PropertyType
PropertyType public API.
StrongId< RuleIdTag > RuleId
Definition EditingIds.h:60
PropertySetMode
PropertySetMode public API.
PropertyFlag
PropertyFlag public API.
eve::StatusCode Status
StrongId< CapabilityIdTag > CapabilityId
Definition EditingIds.h:61
eve::Result< T > Result
PropertyReadState
PropertyReadState public API.
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition Animation.h:25
StatusCode
Stable outcome category for an operation.
Definition Status.h:27
DomainOperation public API.
EditRegion public API.
Renderer-neutral wire primitive for authoring viewport overlays.
Immutable revision-tagged overlay snapshot consumed by any viewport renderer.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.