From f2007326b4132f28d8ea3819889ea004ec1d475e Mon Sep 17 00:00:00 2001 From: EvilSpirit Date: Tue, 9 Aug 2016 22:07:16 +0700 Subject: [PATCH] Don't draw edges and outlines while dragging an entity. This is far too slow for realtime dragging, and results in assemblies falling apart (e.g. jansen-asm from the examples). --- src/mouse.cpp | 15 +++++++++++++++ src/ui.h | 3 +++ 2 files changed, 18 insertions(+) diff --git a/src/mouse.cpp b/src/mouse.cpp index 352c17e..700b765 100644 --- a/src/mouse.cpp +++ b/src/mouse.cpp @@ -463,6 +463,15 @@ void GraphicsWindow::MouseMoved(double x, double y, bool leftDown, pending.operation != DRAGGING_MARQUEE) { SS.GenerateAll(); + + // Activate degraded mode, and regenerate display items without edges. + if(activeGroup.v != 0) { + bool showEdges = SS.GW.showEdges; + SS.GW.showEdges = false; + SK.GetGroup(activeGroup)->GenerateDisplayItems(); + SS.GW.showEdges = showEdges; + isDegraded = true; + } } } @@ -470,6 +479,12 @@ void GraphicsWindow::ClearPending(void) { pending.points.Clear(); pending = {}; SS.ScheduleShowTW(); + + // If degraded mode was enabled, we need to regenerate again to get edges back. + if(isDegraded) { + isDegraded = false; + SK.GetGroup(activeGroup)->displayDirty = true; + } } void GraphicsWindow::MouseMiddleOrRightDown(double x, double y) { diff --git a/src/ui.h b/src/ui.h index ebb60b2..a041ed3 100644 --- a/src/ui.h +++ b/src/ui.h @@ -504,6 +504,9 @@ public: // allowing a paint in between. The extra solves are wasted if they're // not displayed. bool havePainted; + // Similarly, don't draw edges and outlines, since that's too slow + // for real-time dragging. + bool isDegraded; // Some state for the context menu. struct {