From 60775a46fdf4e2197d6b7067b41fbc7db61b9018 Mon Sep 17 00:00:00 2001 From: David Vierra Date: Sat, 24 Oct 2015 15:45:46 -1000 Subject: [PATCH] Inspector now outlines the selected block/entity/chunk --- src/mcedit2/editorsession.py | 2 ++ src/mcedit2/widgets/inspector/__init__.py | 40 ++++++++++++++--------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/mcedit2/editorsession.py b/src/mcedit2/editorsession.py index 072427e..152b333 100644 --- a/src/mcedit2/editorsession.py +++ b/src/mcedit2/editorsession.py @@ -454,6 +454,8 @@ class EditorSession(QtCore.QObject): self.inspectorDockWidget.hide() self.dockWidgets.append((Qt.RightDockWidgetArea, self.inspectorDockWidget)) + self.editorOverlay.addChild(self.inspectorWidget.overlayNode) + if len(self.toolActions): # Must be called after toolChanged is connected to editorTab self.toolActions[0].trigger() diff --git a/src/mcedit2/widgets/inspector/__init__.py b/src/mcedit2/widgets/inspector/__init__.py index 5a4eb61..dff7a52 100644 --- a/src/mcedit2/widgets/inspector/__init__.py +++ b/src/mcedit2/widgets/inspector/__init__.py @@ -7,12 +7,14 @@ import traceback from PySide import QtGui from mcedit2.command import SimpleRevisionCommand +from mcedit2.rendering import depths from mcedit2.rendering.scenegraph import scenenode from mcedit2.rendering.selection import SelectionBoxNode from mcedit2.widgets.inspector.tileentities.chest import ChestEditorWidget, DispenserEditorWidget, HopperEditorWidget from mcedit2.util.load_ui import load_ui from mcedit2.widgets.inspector.tileentities.command import CommandBlockEditorWidget +from mceditlib.selection import BoundingBox log = logging.getLogger(__name__) @@ -57,9 +59,13 @@ class InspectorWidget(QtGui.QWidget): self.currentChunk = None - # xxxx unused! how! - self.selectionNode = None self.overlayNode = scenenode.Node() + self.selectionNode = SelectionBoxNode() + self.selectionNode.depth = depths.DepthOffset.SelectionCursor + self.selectionNode.filled = False + self.selectionNode.wireColor = (0.2, 0.9, .2, .8) + + self.overlayNode.addChild(self.selectionNode) self.chunkTabWidget.currentChanged.connect(self.chunkTabDidChange) @@ -67,7 +73,15 @@ class InspectorWidget(QtGui.QWidget): self.lightPopulatedInput.toggled.connect(self.lightPopulatedDidChange) self.inhabitedTimeInput.valueChanged.connect(self.inhabitedTimeDidChange) self.updateTimeInput.valueChanged.connect(self.updateTimeDidChange) - + + def hide(self, *args, **kwargs): + super(InspectorWidget, self).hide(*args, **kwargs) + self.overlayNode.visible = False + + def show(self, *args, **kwargs): + super(InspectorWidget, self).show(*args, **kwargs) + self.overlayNode.visible = True + def inspectBlock(self, pos): self.entity = None @@ -122,6 +136,10 @@ class InspectorWidget(QtGui.QWidget): self.removeTileEntityButton.setEnabled(self.tileEntity is not None) + blockBox = BoundingBox((x, y, z), (1, 1, 1)) + + self.selectionNode.selectionBox = blockBox + def inspectEntity(self, entity): self.tileEntity = None @@ -140,13 +158,11 @@ class InspectorWidget(QtGui.QWidget): self.entityNBTEditor.setRootTagRef(entity) + # xxx entity bounds per type - # def toolInactive(self): - # if self.selectionNode: - # self.overlayNode.removeChild(self.selectionNode) - # self.selectionNode = None - # self.currentChunk = None - # self.updateChunkWidget() + entityBox = BoundingBox((x-.5, y, z-.5), (1, 2, 1)) + + self.selectionNode.selectionBox = entityBox def inspectChunk(self, cx, cz): dim = self.editorSession.currentDimension @@ -155,12 +171,6 @@ class InspectorWidget(QtGui.QWidget): self.setSelectedChunk(chunk) def setSelectedChunk(self, chunk): - if self.selectionNode is None: - self.selectionNode = SelectionBoxNode() - self.selectionNode.filled = False - self.selectionNode.color = (0.3, 0.3, 1, .3) - self.overlayNode.addChild(self.selectionNode) - self.selectionNode.selectionBox = chunk.bounds self.currentChunk = chunk self.updateChunkWidget()