载入中...
搜索中...
未找到
AvatarDocumentEditor.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
14
15#include <cstdint>
16#include <string>
17#include <vector>
18
19namespace eve::avatar_editor {
20
33public:
35 explicit AvatarDocumentEditor(std::string targetId);
36
39
41 const avatar_editing::AvatarDocumentTarget& target() const noexcept { return target_; }
42
47 [[nodiscard]] avatar_editing::Result<void> configureWorkspace(editor::EditorWorkspace& workspace) const;
48
49 [[nodiscard]] avatar_editing::Result<void> selectLayer(std::string id);
50 [[nodiscard]] avatar_editing::Result<void> selectParameter(std::string id);
51 [[nodiscard]] avatar_editing::Result<void> selectExpression(std::string id);
52 [[nodiscard]] avatar_editing::Result<void> pointerDown(float x, float y);
53
54 [[nodiscard]] avatar_editing::Result<void> setLayerVisible(bool visible);
55 [[nodiscard]] avatar_editing::Result<void> setLayerZ(int zIndex);
56 [[nodiscard]] avatar_editing::Result<void> setParameterValue(double value);
57 [[nodiscard]] avatar_editing::Result<void> createLayer(std::string id, std::string name);
58 [[nodiscard]] avatar_editing::Result<void> deleteSelectedLayer();
59 [[nodiscard]] avatar_editing::Result<void> createParameter(std::string id, std::string name);
60 [[nodiscard]] avatar_editing::Result<void> deleteSelectedParameter();
61 [[nodiscard]] avatar_editing::Result<void> createExpression(std::string id, std::string name);
62 [[nodiscard]] avatar_editing::Result<void> deleteSelectedExpression();
63
66
67 bool canUndo() const noexcept { return transactions_.canUndo(); }
69 bool canRedo() const noexcept { return transactions_.canRedo(); }
71 std::uint64_t revision() const noexcept { return target_.revision(); }
73 std::uint64_t previewRevision() const noexcept { return previewRevision_; }
75 std::string kind() const { return target_.kind(); }
77 std::string selectedId() const { return selectedId_; }
79 std::string selectedType() const { return selectedType_; }
80
82 int layerCount() const { return static_cast<int>(target_.layers().size()); }
84 std::string layerId(int index) const;
86 std::string layerName(int index) const;
88 bool layerVisible(int index) const;
90 int layerZ(int index) const;
92 bool isLayerSelected(int index) const;
93
95 int previewLayerCount() const { return static_cast<int>(preview_.size()); }
97 float previewX(int index) const;
99 float previewY(int index) const;
101 float previewW(int index) const;
103 float previewH(int index) const;
105 float previewR(int index) const;
107 float previewG(int index) const;
109 float previewB(int index) const;
111 float previewA(int index) const;
113 bool isPreviewSelected(int index) const;
115 std::string previewName(int index) const;
116
118 int parameterCount() const { return static_cast<int>(target_.parameters().size()); }
120 std::string parameterId(int index) const;
122 std::string parameterName(int index) const;
124 float parameterValue(int index) const;
126 float parameterMinimum(int index) const;
128 float parameterMaximum(int index) const;
130 bool isParameterSelected(int index) const;
131
133 int expressionCount() const { return static_cast<int>(target_.expressions().size()); }
135 std::string expressionId(int index) const;
137 std::string expressionName(int index) const;
139 bool isExpressionSelected(int index) const;
141 int expressionChannelCount(int index) const;
143 std::string expressionChannelName(int expression, int channel) const;
144
145private:
146 struct PreviewRect {
147 std::string id;
148 std::string name;
149 float x = 0, y = 0, w = 0, h = 0;
150 float r = 1, g = 1, b = 1, a = 1;
151 bool selected = false;
152 };
153
154 [[nodiscard]] avatar_editing::Result<void> commit(
156 [[nodiscard]] avatar_editing::Result<void> refreshPreview();
157 void seedPreviewDocument();
158 editor::SelectionSnapshot selection() const;
160 const PreviewRect* previewAt(int index) const;
162 const avatar_editing::AvatarLayerValue* layerAt(int index) const;
164 const avatar_editing::AvatarParameterValue* parameterAt(int index) const;
166 const avatar_editing::AvatarExpressionValue* expressionAt(int index) const;
167 float smileAmount() const;
168
172 std::vector<PreviewRect> preview_;
173 std::string selectedId_ = "eyes";
174 std::string selectedType_ = "avatar.layer";
175 std::uint64_t txSequence_ = 0;
176 std::uint64_t previewRevision_ = 0;
177};
178
179} // namespace eve::avatar_editor
ActionParameterOperation operation
double value
float w
Definition AnimClip.cpp:738
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
std::string label
#define EVENGINE_API_EDITORS
Definition Export.h:112
tensor::Graph g
Definition GpuGraph.cpp:7
double r
int h
std::string name
MeleePoint3 b
Definition MeleeHit.cpp:41
MeleePoint3 a
Definition MeleeHit.cpp:40
std::string id
Definition PlayHost.cpp:108
std::uint32_t targetId
bool visible
uint32_t index
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Revisioned image/Live2D/VRoid Avatar authoring asset.
Timeline-style controller for one authored avatar document.
std::string selectedType() const
Selected type.
const avatar_editing::AvatarDocumentTarget & target() const noexcept
Borrow the authoritative avatar document.
int previewLayerCount() const
Preview layer count.
std::uint64_t previewRevision() const noexcept
Preview revision.
std::uint64_t revision() const noexcept
Revision.
AvatarDocumentEditor(const AvatarDocumentEditor &)=delete
std::string selectedId() const
Selected id.
AvatarDocumentEditor & operator=(const AvatarDocumentEditor &)=delete
In-process authority for a single editable runtime or document target.
Composition model shared by project-specific developer and runtime editors.
Local transaction coordinator backed by an injected edit authority.
Named expression containing layer/parameter channel targets.
Stable image layer in an Avatar asset.
Reflected Avatar parameter and its initial value.
SelectionSnapshot public API.