载入中...
搜索中...
未找到
ArchSpaceTools.cpp
浏览该文件的文档.
28bool projectOntoWall(const archspace::Node& wall, const archspace::Vec2& point, double& t, double& dist) {
33 t = std::clamp(((point.x - wall.start.x) * dx + (point.z - wall.start.z) * dz) / len2, 0.0, 1.0);
40bool commitDomain(editing::IEditAuthority* authority, eve::archspace_editing::ArchSpaceDocumentTarget& target,
52 auto plan = authority->preflight(transaction, std::span<const editing::DomainOperation>(operations));
62ArchSpaceWallDrawTool::ArchSpaceWallDrawTool(IArchSpaceViewportAdapter* viewport, editing::IEditAuthority* authority)
77bool ArchSpaceWallDrawTool::hitFloor(const EditorPointerEvent& event, archspace::Vec2& out) const {
105bool ArchSpaceWallDrawTool::commitWall(eve::archspace_editing::ArchSpaceDocumentTarget& target, archspace::Vec2 start,
111 auto operation = target.makeCreateWall(levelId_, wallId, wallId, start, end, wallHeight_, wallThickness_);
113 if (!commitDomain(authority_, target, std::move(operation.value()), descriptor_, sequence_, "archspace.wall.draw",
124ToolResponse ArchSpaceWallDrawTool::finish(EditorContext& context, const EditorPointerEvent& event) {
128 auto* target = dynamic_cast<eve::archspace_editing::ArchSpaceDocumentTarget*>(context.target());
134ToolResponse ArchSpaceWallDrawTool::pointerEvent(EditorContext& context, const EditorPointerEvent& event) {
186bool ArchSpaceOpeningPlaceTool::hitFloor(const EditorPointerEvent& event, archspace::Vec2& out) const {
194 const eve::archspace_editing::ArchSpaceDocumentTarget& target, const archspace::Vec2& point) const {
206 id, t, {node.start.x + (node.end.x - node.start.x) * t, node.start.z + (node.end.z - node.start.z) * t}};
211ToolResponse ArchSpaceOpeningPlaceTool::pointerEvent(EditorContext& context, const EditorPointerEvent& event) {
212 auto* target = dynamic_cast<eve::archspace_editing::ArchSpaceDocumentTarget*>(context.target());
217 return event.phase == EditorPointerEvent::Phase::Move ? ToolResponse::consumed() : ToolResponse::ignored();
221 if (event.phase == EditorPointerEvent::Phase::Down && event.button == 0 && preview_) return ToolResponse::capture();
226 if (event.phase != EditorPointerEvent::Phase::Up || event.button != 0) return ToolResponse::ignored();
266ArchSpaceItemPlaceTool::ArchSpaceItemPlaceTool(IArchSpaceViewportAdapter* viewport, editing::IEditAuthority* authority)
278void ArchSpaceItemPlaceTool::setCatalogId(std::string catalogId) { catalogId_ = std::move(catalogId); }
280bool ArchSpaceItemPlaceTool::hitFloor(const EditorPointerEvent& event, archspace::Vec2& out) const {
287ToolResponse ArchSpaceItemPlaceTool::pointerEvent(EditorContext& context, const EditorPointerEvent& event) {
288 auto* target = dynamic_cast<eve::archspace_editing::ArchSpaceDocumentTarget*>(context.target());
293 return event.phase == EditorPointerEvent::Phase::Move ? ToolResponse::consumed() : ToolResponse::ignored();
297 if (event.phase == EditorPointerEvent::Phase::Down && event.button == 0) return ToolResponse::capture();
302 if (event.phase != EditorPointerEvent::Phase::Up || event.button != 0) return ToolResponse::ignored();
306 target->makePlaceItem(levelId_, itemId, catalogId_, archspace::Vec3{point.x, 0.0, point.z}, yawDegrees_);
Revisioned ArchSpace document target for Inspector, tools and automation.
Definition ArchSpaceTarget.h:60
Final validation and commit boundary for editor mutations.
Definition EditingAuthority.h:16
void setViewportAdapter(IArchSpaceViewportAdapter *viewport)
Sets the viewport adapter.
Definition ArchSpaceTools.cpp:269
void drawOverlay(EditorContext &context, IEditorOverlay &overlay) override
Draws overlay.
Definition ArchSpaceTools.cpp:318
void setAuthority(editing::IEditAuthority *authority)
Sets the authority.
Definition ArchSpaceTools.cpp:273
void inspect(EditorContext &context, IEditorInspector &inspector) override
Inspect.
Definition ArchSpaceTools.cpp:329
ToolResponse pointerEvent(EditorContext &context, const EditorPointerEvent &event) override
Pointer event.
Definition ArchSpaceTools.cpp:287
ArchSpaceItemPlaceTool(IArchSpaceViewportAdapter *viewport, editing::IEditAuthority *authority)
Arch space item place tool.
Definition ArchSpaceTools.cpp:266
ToolResponse pointerEvent(EditorContext &context, const EditorPointerEvent &event) override
Pointer event.
Definition ArchSpaceTools.cpp:211
ArchSpaceOpeningPlaceTool(IArchSpaceViewportAdapter *viewport, editing::IEditAuthority *authority)
Arch space opening place tool.
Definition ArchSpaceTools.cpp:173
void inspect(EditorContext &context, IEditorInspector &inspector) override
Inspect.
Definition ArchSpaceTools.cpp:252
void setAuthority(editing::IEditAuthority *authority)
Sets the authority.
Definition ArchSpaceTools.cpp:181
void drawOverlay(EditorContext &context, IEditorOverlay &overlay) override
Draws overlay.
Definition ArchSpaceTools.cpp:241
void setViewportAdapter(IArchSpaceViewportAdapter *viewport)
Sets the viewport adapter.
Definition ArchSpaceTools.cpp:177
void setViewportAdapter(IArchSpaceViewportAdapter *viewport)
Sets the viewport adapter.
Definition ArchSpaceTools.cpp:65
void inspect(EditorContext &context, IEditorInspector &inspector) override
Inspect.
Definition ArchSpaceTools.cpp:162
ToolResponse pointerEvent(EditorContext &context, const EditorPointerEvent &event) override
Pointer event.
Definition ArchSpaceTools.cpp:134
ArchSpaceWallDrawTool(IArchSpaceViewportAdapter *viewport, editing::IEditAuthority *authority)
Arch space wall draw tool.
Definition ArchSpaceTools.cpp:62
void setAuthority(editing::IEditAuthority *authority)
Sets the authority.
Definition ArchSpaceTools.cpp:70
void drawOverlay(EditorContext &context, IEditorOverlay &overlay) override
Draws overlay.
Definition ArchSpaceTools.cpp:149
Host-owned conversion boundary between pointer coordinates and the ArchSpace viewport.
Definition EditorArchSpaceTools.h:30
virtual editing::Result< OverlayPoint > projectWorld(const std::array< double, 3 > &world) const =0
Project a world position into the coordinate space accepted by IEditorOverlay.
virtual editing::Result< ArchSpaceViewportRay > pointerRay(const EditorPointerEvent &event) const =0
Build a world ray for one normalized pointer event.
UI-independent property editor used by tools to expose settings.
Definition EditorPresentation.h:47
virtual void beginGroup(const std::string &id, const std::string &label)=0
Begin a logical group of properties.
virtual bool boolean(const std::string &id, const std::string &label, bool &value)=0
Present an editable boolean property.
virtual bool scalar(const std::string &id, const std::string &label, float &value, float minimum, float maximum)=0
Present an editable scalar property.
virtual bool string(const std::string &id, const std::string &label, std::string &value)=0
Present an editable text property.
Sink implemented by a 2D or 3D viewport to render tool feedback.
Definition EditorPresentation.h:27
virtual void text(const OverlayPoint &position, const std::string &value, const OverlayStyle &style)=0
Draw a short text annotation.
virtual void circle(const OverlayPoint ¢er, float radius, const OverlayStyle &style)=0
Draw a circle whose orientation is supplied by the viewport.
virtual void line(const OverlayPoint &from, const OverlayPoint &to, const OverlayStyle &style)=0
Draw a line between two viewport-space points.
Definition ActionPreviewController.cpp:6
Pointer input normalized by an editor viewport adapter.
Definition EditorTool.h:20
Renderer-independent appearance for an editor overlay primitive.
Definition EditorPresentation.h:15
Result returned by a tool after processing input.
Definition EditorTool.h:50