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
This commit is contained in:
parent
4e284e64c6
commit
814a40b993
@ -17,6 +17,7 @@ from mcedit2.util.load_ui import load_ui, registerCustomWidget
|
|||||||
from mcedit2.util.settings import Settings
|
from mcedit2.util.settings import Settings
|
||||||
from mcedit2.util.showprogress import showProgress
|
from mcedit2.util.showprogress import showProgress
|
||||||
from mcedit2.util.worldloader import WorldLoader
|
from mcedit2.util.worldloader import WorldLoader
|
||||||
|
from mceditlib.geometry import Vector
|
||||||
from mceditlib.util import exhaust
|
from mceditlib.util import exhaust
|
||||||
|
|
||||||
|
|
||||||
@ -121,6 +122,10 @@ class BrushTool(EditorTool):
|
|||||||
self.toolWidget.ySpinSlider.setValue(self.brushSize[1])
|
self.toolWidget.ySpinSlider.setValue(self.brushSize[1])
|
||||||
self.toolWidget.zSpinSlider.setValue(self.brushSize[2])
|
self.toolWidget.zSpinSlider.setValue(self.brushSize[2])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def hoverDistance(self):
|
||||||
|
return self.toolWidget.hoverSpinSlider.value()
|
||||||
|
|
||||||
_brushSize = (0, 0, 0)
|
_brushSize = (0, 0, 0)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -157,13 +162,15 @@ class BrushTool(EditorTool):
|
|||||||
|
|
||||||
def mousePress(self, event):
|
def mousePress(self, event):
|
||||||
pos = event.blockPosition
|
pos = event.blockPosition
|
||||||
pos += event.blockFace.vector
|
vector = (event.blockFace.vector * self.hoverDistance)
|
||||||
command = BrushCommand(self.editorSession, [pos], self.options)
|
command = BrushCommand(self.editorSession, [pos + vector], self.options)
|
||||||
self.editorSession.pushCommand(command)
|
self.editorSession.pushCommand(command)
|
||||||
|
|
||||||
def mouseMove(self, event):
|
def mouseMove(self, event):
|
||||||
if event.blockPosition:
|
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
|
@property
|
||||||
def options(self):
|
def options(self):
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
from mceditlib.geometry import Vector
|
||||||
|
|
||||||
|
|
||||||
class Face(int):
|
class Face(int):
|
||||||
@ -42,12 +43,12 @@ FaceZDecreasing = FaceNorth = Face(5)
|
|||||||
MaxDirections = 6
|
MaxDirections = 6
|
||||||
|
|
||||||
faceDirections = (
|
faceDirections = (
|
||||||
(FaceXIncreasing, (1, 0, 0)),
|
(FaceXIncreasing, Vector(1, 0, 0)),
|
||||||
(FaceXDecreasing, (-1, 0, 0)),
|
(FaceXDecreasing, Vector(-1, 0, 0)),
|
||||||
(FaceYIncreasing, (0, 1, 0)),
|
(FaceYIncreasing, Vector(0, 1, 0)),
|
||||||
(FaceYDecreasing, (0, -1, 0)),
|
(FaceYDecreasing, Vector(0, -1, 0)),
|
||||||
(FaceZIncreasing, (0, 0, 1)),
|
(FaceZIncreasing, Vector(0, 0, 1)),
|
||||||
(FaceZDecreasing, (0, 0, -1))
|
(FaceZDecreasing, Vector(0, 0, -1))
|
||||||
)
|
)
|
||||||
_directions = {k: v for (k, v) in faceDirections}
|
_directions = {k: v for (k, v) in faceDirections}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user