载入中...
搜索中...
未找到
VoxelPaletteTarget.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
8#include "voxel/CubeType.h"
9
10#include <memory>
11#include <string>
12#include <vector>
13
14namespace eve::voxel {
15class CubeTypeRegistry;
16}
17namespace eve::voxel_editing {
18
21using DomainOperation = editing::DomainOperation;
22using EditRegion = editing::EditRegion;
24using editing::Result;
26using EditorValue = editing::Value;
27using IDomainOperationTarget = editing::IDomainOperationTarget;
28using IDomainOperationTargetStaging = editing::IDomainOperationTargetStaging;
29using IEditableTarget = editing::IEditableTarget;
30using IPropertyProvider = editing::IPropertyProvider;
32using PropertyDescriptor = editing::PropertyDescriptor;
34using PropertyPath = editing::PropertyPath;
35using PropertyReadResult = editing::PropertyReadResult;
37using PropertySchema = editing::PropertySchema;
42using SelectionSnapshot = editing::SelectionSnapshot;
43using TargetDescriptor = editing::TargetDescriptor;
46
52
55 public virtual IEditableTarget,
58 public IPropertyProvider {
59public:
61 explicit VoxelPaletteTarget(std::string id);
63 TargetId targetId() const override { return TargetId(id_); }
65 TargetDescriptor describe() const override;
71 void* queryCapability(const CapabilityId&) override;
73 Result<void> applyDomainOperation(const DomainOperation&) override;
75 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
77 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget>) override;
79 eve::Result<eve::Revision> currentRevision(const SelectionSnapshot&) const override;
81 PropertySchema schema(const SelectionSnapshot&) const override;
83 PropertyReadResult read(const SelectionSnapshot&, const PropertyPath&) const override;
86 PropertySetMode) const override;
88 Result<DomainOperation> makeReset(const SelectionSnapshot&, const PropertyPath&) const override;
Result<DomainOperation> makeCreate(
90 const VoxelPaletteEntryValue&) const;
Result<DomainOperation> makeDelete(
92 const ObjectId&) const;
94 const std::vector<VoxelPaletteEntryValue>& entries() const { return entries_; }
96 std::vector<EditorDiagnostic> validate() const;
98 EditorValue snapshotValue() const;
100 Result<void> loadSnapshot(const EditorValue&);
101
102private:
104 bool matches(const SelectionSnapshot&) const;
106 EditorValue contentValue() const;
108 Result<DomainOperation> replacement(EditorValue, std::string = {}) const;
109 std::string id_;
110 std::vector<VoxelPaletteEntryValue> entries_;
111};
112
116 std::string name;
117 int baseId = 0;
118 int variants = 0;
119};
120
123public:
132 const voxel::CubeTypeRegistry* registry() const { return registry_.get(); }
134 Revision revision() const { return revision_; }
135
136private:
137 std::unique_ptr<voxel::CubeTypeRegistry> registry_;
138 Revision revision_ = 0;
139};
140} // namespace eve::voxel_editing
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
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.
EVENGINE_API_DOMAINS public API.
Candidate-first CubeTypeRegistry publication.
~VoxelPaletteRuntime()
Voxel palette runtime.
VoxelPaletteRuntime()
Voxel palette runtime.
const voxel::CubeTypeRegistry * registry() const
Access the published registry.
Revisioned Voxel CubeType palette with face-material Inspector.
TargetId targetId() const override
Target id.
const std::vector< VoxelPaletteEntryValue > & entries() const
Entries.
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
eve::Result< T > Result
Result< void > validatePropertyValue(const PropertyDescriptor &descriptor, const Value &value)
Validate property value.
PropertyReadState
PropertyReadState public API.
editing::Diagnostic EditorDiagnostic
editing::CapabilityId CapabilityId
editing::ObjectId ObjectId
editing::DomainOperation DomainOperation
editing::DiagnosticSeverity DiagnosticSeverity
editing::IPropertyProvider IPropertyProvider
editing::PropertySchema PropertySchema
editing::Status EditorStatus
editing::IDomainOperationTargetStaging IDomainOperationTargetStaging
editing::EditRegion EditRegion
editing::TargetId TargetId
editing::PropertyReadResult PropertyReadResult
editing::PropertyFlag PropertyFlag
editing::IDomainOperationTarget IDomainOperationTarget
editing::PropertyReadState PropertyReadState
editing::Value EditorValue
editing::PropertySetMode PropertySetMode
editing::Revision Revision
editing::TargetDescriptor TargetDescriptor
editing::PropertyDescriptor PropertyDescriptor
editing::RuleId RuleId
editing::SelectionSnapshot SelectionSnapshot
editing::PropertyPath PropertyPath
editing::IEditableTarget IEditableTarget
editing::PropertyType PropertyType
方块类型定义:名字、各面图集纹理、方向性、组合声明。 方向性方块在注册时按 orientation 绕 Y 轴展开成多个"具体类型"变体, 每个变体持有旋转后的各面纹理;渲染端只消费纹理 id,不接触 ...
Definition Chunk.h:12
DomainOperation public API.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.
CubeType public API.
Definition CubeType.h:15
Stable authored entry in a Voxel cube palette.
Stable base/variant ID mapping produced by palette publication.