载入中...
搜索中...
未找到
SpriteStackTarget.h
浏览该文件的文档.
1#pragma once
2
7
8#include <cstdint>
9#include <memory>
10#include <string>
11#include <vector>
12
13namespace eve::graphics {
14class Graphics;
15}
16namespace eve::image {
17class ImageData;
18}
19namespace eve::model3d {
20class ModelData;
21}
23class SpriteStack2D;
24}
25
27
45using editing::RuleId;
49using editing::Result;
53
56 std::string sourceKind = "primitive";
57 std::string source = "box";
59 float displayWidth = 64.f;
60 float displayHeight = 64.f;
61 float layerOffset = 1.f;
62 bool shadow = true;
63 float shadowOpacity = .3f;
64 float outlineWidth = 0.f;
65};
66
69 public virtual IEditableTarget,
72 public IPropertyProvider {
73public:
75 explicit SpriteStackDocumentTarget(std::string id);
77 TargetId targetId() const override { return TargetId(id_); }
79 TargetDescriptor describe() const override;
82 void* queryCapability(const CapabilityId& capability) override;
84 Result<void> applyDomainOperation(const DomainOperation& operation) override;
86 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
88 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget> candidate) override;
90 eve::Result<eve::Revision> currentRevision(const SelectionSnapshot& selection) const override;
92 PropertySchema schema(const SelectionSnapshot& selection) const override;
94 PropertyReadResult read(const SelectionSnapshot& selection, const PropertyPath& path) const override;
96 Result<DomainOperation> makeSet(const SelectionSnapshot& selection, const PropertyPath& path,
97 const EditorValue& value, PropertySetMode mode) const override;
99 Result<DomainOperation> makeReset(const SelectionSnapshot& selection,
100 const PropertyPath& path) const override;
102 const SpriteStackAssetValue& value() const { return value_; }
104 std::vector<EditorDiagnostic> validate() const;
106 EditorValue snapshotValue() const;
108 Result<void> loadSnapshot(const EditorValue& snapshot);
109
110private:
112 bool matches(const SelectionSnapshot& selection) const;
114 EditorValue contentValue() const;
116 Result<DomainOperation> replacement(EditorValue content, std::string property) const;
117 std::string id_;
119};
120
123 int index = 0, width = 0, height = 0;
124 std::uint64_t checksum = 0;
125 double alphaCoverage = 0;
126};
127
130public:
132 virtual ~ISpriteStackModelResolver() = default;
134 virtual Result<model3d::ModelData*> resolveModel(const std::string& assetId) const = 0;
135};
136
139public:
144 // Class-level dllexport instantiates every member, including the implicitly
145 // declared copy assignment, whose body instantiates
146 // `std::vector<std::unique_ptr<image::ImageData>>::operator=` and fails on the
147 // non-copyable element (C2280). The member was already non-copyable in
148 // practice; make that explicit instead of relying on the implicit definition.
153 const ISpriteStackModelResolver* resolver = nullptr);
155 Result<spritestack::SpriteStack2D*> publish(graphics::Graphics* graphics, Revision expectedRevision);
157 const std::vector<std::unique_ptr<image::ImageData>>& layers() const { return layers_; }
159 Revision revision() const { return revision_; }
160
161private:
162 std::vector<std::unique_ptr<image::ImageData>> layers_;
163 std::unique_ptr<spritestack::SpriteStack2D> stack_;
165 Revision revision_ = 0;
166};
167
168} // namespace eve::spritestack_editing
ActionParameterOperation operation
double value
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::string path
Definition PlayHost.cpp:110
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
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
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.
Pure-2D sprite stack made from horizontal RGBA cross-sections.
Definition SpriteStack.h:61
Resolves model assets without coupling the document to AssetDB ownership.
virtual Result< model3d::ModelData * > resolveModel(const std::string &assetId) const =0
Resolve a ready, borrowed ModelData for the duration of bake().
virtual ~ISpriteStackModelResolver()=default
Releases ISpriteStackModelResolver resources.
Candidate-first CPU baker and optional live SpriteStack2D publisher.
SpriteStackBakeRuntime & operator=(const SpriteStackBakeRuntime &)=delete
~SpriteStackBakeRuntime()
Sprite stack bake runtime.
const std::vector< std::unique_ptr< image::ImageData > > & layers() const
Layers.
SpriteStackBakeRuntime()
Sprite stack bake runtime.
SpriteStackBakeRuntime(const SpriteStackBakeRuntime &)=delete
Revisioned SpriteStack bake preset with reusable Inspector metadata.
const SpriteStackAssetValue & value() const
Value.
std::uint64_t Revision
eve::Diagnostic Diagnostic
PropertyType
PropertyType public API.
PropertySetMode
PropertySetMode public API.
PropertyFlag
PropertyFlag public API.
eve::StatusCode Status
PropertyReadState
PropertyReadState public API.
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition Animation.h:25
StatusCode
Stable outcome category for an operation.
Definition Status.h:27
Severity
Stable severity of a diagnostic, independent of its display text.
Definition Diagnostic.h:20
detail::StrongUint64< detail::RevisionTag > Revision
Monotonic content/state revision used for optimistic-concurrency checks.
Definition Revision.h:13
DomainOperation public API.
EditRegion public API.
PropertyDescriptor public API.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.
Options for baking a mesh into equal-sized RGBA sprite layers.
Definition SpriteStack.h:36
Complete authored sprite-stack bake and presentation preset.
Metadata for one immutable baked layer.