载入中...
搜索中...
未找到
ArchSpaceTarget.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
10
11#include <memory>
12#include <string>
13#include <vector>
14
15namespace eve::archspace_editing {
16
22using editing::Result;
47
56 public virtual IEditableTarget,
59 public IPropertyProvider,
61public:
63 explicit ArchSpaceDocumentTarget(std::string id);
64
66 static CapabilityId propertyCapabilityId() { return CapabilityId("eve.editor.target.archspace-properties"); }
67
69 TargetId targetId() const override { return TargetId(id_); }
71 TargetDescriptor describe() const override;
77 void* queryCapability(const CapabilityId& capability) override;
79 Result<void> applyDomainOperation(const DomainOperation& operation) override;
81 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
83 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget> candidate) override;
85 eve::Result<eve::Revision> currentRevision(const SelectionSnapshot& selection) const override;
87 PropertySchema schema(const SelectionSnapshot& selection) const override;
89 PropertyReadResult read(const SelectionSnapshot& selection, const PropertyPath& path) const override;
91 Result<DomainOperation> makeSet(const SelectionSnapshot& selection, const PropertyPath& path,
92 const EditorValue& value, PropertySetMode mode) const override;
94 Result<DomainOperation> makeReset(const SelectionSnapshot& selection,
95 const PropertyPath& path) const override;
96
98 Result<DomainOperation> makeBootstrap(const std::string& siteId, const std::string& buildingId,
99 const std::string& levelId, double levelHeight = 3.0) const;
101 Result<DomainOperation> makeCreateRectRoom(const std::string& levelId, const std::string& roomId,
102 std::string roomName, double originX, double originZ, double sizeX,
103 double sizeZ, double wallHeight = 3.0, double wallThickness = 0.2,
104 double slabThickness = 0.2) const;
106 Result<DomainOperation> makeCreateWall(const std::string& levelId, const std::string& wallId,
107 std::string wallName, archspace::Vec2 start, archspace::Vec2 end,
108 double height = 3.0, double thickness = 0.2) const;
110 Result<DomainOperation> makeCreateOpening(const std::string& wallId, const std::string& openingId,
111 archspace::OpeningKind kind, double t, double width, double height,
112 double sill = 0.0) const;
114 Result<DomainOperation> makePlaceItem(const std::string& levelId, const std::string& itemId,
115 std::string catalogId, archspace::Vec3 position,
116 double yawDegrees = 0.0) const;
118 Result<DomainOperation> makeDeleteNode(const ObjectId& id) const;
119
121 [[nodiscard]] const archspace::Document& document() const { return document_; }
123 [[nodiscard]] std::vector<EditorDiagnostic> validate() const;
125 [[nodiscard]] EditorValue snapshotValue() const override;
127 Result<void> loadSnapshot(const EditorValue& snapshot);
129 [[nodiscard]] Result<EditorGizmoSnapshot> gizmo() const;
131 [[nodiscard]] archspace::MeshBake bakeMesh() const { return document_.bakeMesh(); }
132
133private:
135 bool matches(const SelectionSnapshot& selection) const;
137 EditorValue contentValue() const;
139 Result<DomainOperation> replacement(EditorValue content, std::string property = {}) const;
141 Result<void> installContent(const EditorValue& content);
147 const archspace::Node* selectedNode(const SelectionSnapshot& selection) const;
148
149 std::string id_;
150 archspace::Document document_;
151};
152
153} // namespace eve::archspace_editing
ActionParameterOperation operation
double value
Duration start
LogicalId itemId
float thickness
Definition CaveMesh.cpp:83
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::uint32_t height
std::uint32_t width
TokenKind kind
std::array< float, 3 > position
std::string path
Definition PlayHost.cpp:110
float t
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
Authoritative architectural space document (Pascal-like node graph).
Revisioned ArchSpace document target for Inspector, tools and automation.
static CapabilityId propertyCapabilityId()
Capability identity published by describe() for Inspector property editing.
TargetId targetId() const override
Target id.
const archspace::Document & document() const
Document.
archspace::MeshBake bakeMesh() const
Bake renderer-neutral triangle mesh for the current revision.
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.
Optional capability exposing a deterministic, persistence-safe editing snapshot.
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
OpeningKind
Opening semantic used by doors and windows hosted on walls.
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.
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
Renderer-neutral triangle mesh rebuilt from the document.
One authored architectural node. Only fields for the active kind are meaningful.
Metres on the level XZ plane.
Metres in world/level space.
DomainOperation public API.
EditRegion public API.
Renderer-neutral wire primitive for authoring viewport overlays.
Immutable revision-tagged overlay snapshot consumed by any viewport renderer.
PropertyDescriptor public API.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.