From 814a40b99321d25389e715d140f9d9b8813e2ec8 Mon Sep 17 00:00:00 2001 From: David Vierra Date: Tue, 2 Jun 2015 20:27:16 -1000 Subject: [PATCH] Brush's "Hover" option is now implemented. TODO: Button to switch hover to half of object height, or half of object size along axis given by face under cursor --- src/mcedit2/editortools/brush/__init__.py | 13 ++++++++++--- src/mceditlib/faces.py | 13 +++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/mcedit2/editortools/brush/__init__.py b/src/mcedit2/editortools/brush/__init__.py index 4760c10..5cf39cd 100644 --- a/src/mcedit2/editortools/brush/__init__.py +++ b/src/mcedit2/editortools/brush/__init__.py @@ -17,6 +17,7 @@ from mcedit2.util.load_ui import load_ui, registerCustomWidget from mcedit2.util.settings import Settings from mcedit2.util.showprogress import showProgress from mcedit2.util.worldloader import WorldLoader +from mceditlib.geometry import Vector from mceditlib.util import exhaust @@ -121,6 +122,10 @@ class BrushTool(EditorTool): self.toolWidget.ySpinSlider.setValue(self.brushSize[1]) self.toolWidget.zSpinSlider.setValue(self.brushSize[2]) + @property + def hoverDistance(self): + return self.toolWidget.hoverSpinSlider.value() + _brushSize = (0, 0, 0) @property @@ -157,13 +162,15 @@ class BrushTool(EditorTool): def mousePress(self, event): pos = event.blockPosition - pos += event.blockFace.vector - command = BrushCommand(self.editorSession, [pos], self.options) + vector = (event.blockFace.vector * self.hoverDistance) + command = BrushCommand(self.editorSession, [pos + vector], self.options) self.editorSession.pushCommand(command) def mouseMove(self, event): if event.blockPosition: - self.cursorNode.translateOffset = event.blockPosition + event.blockFace.vector + vector = (event.blockFace.vector * self.hoverDistance) + assert isinstance(vector, Vector), "vector isa %s" % type(vector) + self.cursorNode.translateOffset = event.blockPosition + vector @property def options(self): diff --git a/src/mceditlib/faces.py b/src/mceditlib/faces.py index c4fe23f..fbe9d3b 100644 --- a/src/mceditlib/faces.py +++ b/src/mceditlib/faces.py @@ -1,4 +1,5 @@ from __future__ import absolute_import +from mceditlib.geometry import Vector class Face(int): @@ -42,12 +43,12 @@ FaceZDecreasing = FaceNorth = Face(5) MaxDirections = 6 faceDirections = ( - (FaceXIncreasing, (1, 0, 0)), - (FaceXDecreasing, (-1, 0, 0)), - (FaceYIncreasing, (0, 1, 0)), - (FaceYDecreasing, (0, -1, 0)), - (FaceZIncreasing, (0, 0, 1)), - (FaceZDecreasing, (0, 0, -1)) + (FaceXIncreasing, Vector(1, 0, 0)), + (FaceXDecreasing, Vector(-1, 0, 0)), + (FaceYIncreasing, Vector(0, 1, 0)), + (FaceYDecreasing, Vector(0, -1, 0)), + (FaceZIncreasing, Vector(0, 0, 1)), + (FaceZDecreasing, Vector(0, 0, -1)) ) _directions = {k: v for (k, v) in faceDirections}