载入中...
搜索中...
未找到
AvatarTarget.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
8
9#include <array>
10#include <map>
11#include <memory>
12#include <string>
13#include <vector>
14
15namespace eve::avatar {
16class AvatarInstance;
17}
18namespace eve::graphics {
19class Texture;
20}
21
22namespace eve::avatar_editing {
23
29using editing::Result;
51
55 std::string name, textureAsset;
56 int zIndex = 0;
57 bool visible = true;
58 std::array<float, 2> offset{0, 0}, size{64, 64};
59 std::array<float, 4> color{1, 1, 1, 1};
60};
64 std::string name;
65 float defaultValue = 0, minimum = 0, maximum = 1, value = 0;
66};
70 std::string name;
71 std::map<std::string, float> channels;
72};
73
76 public virtual IEditableTarget,
79 public IPropertyProvider {
80public:
82 explicit AvatarDocumentTarget(std::string id);
84 TargetId targetId() const override { return TargetId(id_); }
86 TargetDescriptor describe() const override;
92 void* queryCapability(const CapabilityId&) override;
94 Result<void> applyDomainOperation(const DomainOperation&) override;
96 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
98 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget>) override;
100 eve::Result<eve::Revision> currentRevision(const SelectionSnapshot&) const override;
102 PropertySchema schema(const SelectionSnapshot&) const override;
104 PropertyReadResult read(const SelectionSnapshot&, const PropertyPath&) const override;
107 PropertySetMode) const override;
109 Result<DomainOperation> makeReset(const SelectionSnapshot&, const PropertyPath&) const override;
111 Result<DomainOperation> makeSetSource(std::string kind, std::string asset) const;
113 Result<DomainOperation> makeCreateLayer(const AvatarLayerValue&) const;
115 Result<DomainOperation> makeDeleteLayer(const ObjectId&) const;
117 Result<DomainOperation> makeCreateParameter(const AvatarParameterValue&) const;
119 Result<DomainOperation> makeDeleteParameter(const ObjectId&) const;
121 Result<DomainOperation> makeCreateExpression(const AvatarExpressionValue&) const;
123 Result<DomainOperation> makeDeleteExpression(const ObjectId&) const;
125 const std::string& kind() const { return kind_; }
127 const std::string& sourceAsset() const { return sourceAsset_; }
129 const std::vector<AvatarLayerValue>& layers() const { return layers_; }
131 const std::vector<AvatarParameterValue>& parameters() const { return parameters_; }
133 const std::vector<AvatarExpressionValue>& expressions() const { return expressions_; }
135 std::vector<EditorDiagnostic> validate() const;
137 EditorValue snapshotValue() const;
139 Result<void> loadSnapshot(const EditorValue&);
140
141private:
143 bool matches(const SelectionSnapshot&) const;
145 EditorValue contentValue() const;
147 Result<DomainOperation> replacement(EditorValue, std::string = {}) const;
148 std::string id_, kind_ = "image", sourceAsset_;
149 std::vector<AvatarLayerValue> layers_;
150 std::vector<AvatarParameterValue> parameters_;
151 std::vector<AvatarExpressionValue> expressions_;
152};
153
156public:
158 virtual ~IAvatarTextureResolver() = default;
160 virtual Result<graphics::Texture*> texture(const std::string&) const = 0;
161};
162
165public:
174 Result<void> publish(const AvatarDocumentTarget&, const IAvatarTextureResolver* textures = nullptr);
176 avatar::AvatarInstance* instance() const { return instance_.get(); }
178 Revision revision() const { return revision_; }
179
180private:
181 std::unique_ptr<avatar::AvatarInstance> instance_;
182 Revision revision_ = 0;
183};
184
185} // namespace eve::avatar_editing
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
TokenKind kind
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
Unified avatar instance. Kind is a string: "image" | "live2d" | "vroid". Script-facing API avoids ove...
Candidate-first live AvatarInstance generation.
~AvatarDocumentRuntime()
Avatar document runtime.
avatar::AvatarInstance * instance() const
Instance.
AvatarDocumentRuntime()
Avatar document runtime.
Revisioned image/Live2D/VRoid Avatar authoring asset.
const std::vector< AvatarExpressionValue > & expressions() const
Expressions.
const std::string & sourceAsset() const
Source asset.
const std::string & kind() const
Kind.
const std::vector< AvatarLayerValue > & layers() const
Layers.
TargetId targetId() const override
Target id.
const std::vector< AvatarParameterValue > & parameters() const
Parameters.
Resolves image-layer textures for candidate publication.
virtual ~IAvatarTextureResolver()=default
Releases IAvatarTextureResolver resources.
virtual Result< graphics::Texture * > texture(const std::string &) const =0
Texture.
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.
editing::Revision Revision
eve::Severity DiagnosticSeverity
std::uint64_t Revision
StrongId< TargetIdTag > TargetId
Definition EditingIds.h:57
eve::Diagnostic Diagnostic
StrongId< ObjectIdTag > ObjectId
Definition EditingIds.h:65
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
Result< void > validatePropertyValue(const PropertyDescriptor &descriptor, const Value &value)
Validate property value.
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
Named expression containing layer/parameter channel targets.
std::map< std::string, float > channels
Stable image layer in an Avatar asset.
Reflected Avatar parameter and its initial value.
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.