Inspector now outlines the selected block/entity/chunk

This commit is contained in:
David Vierra 2015-10-24 15:45:46 -10:00
parent fec40e9a77
commit 60775a46fd
2 changed files with 27 additions and 15 deletions

View File

@ -454,6 +454,8 @@ class EditorSession(QtCore.QObject):
self.inspectorDockWidget.hide() self.inspectorDockWidget.hide()
self.dockWidgets.append((Qt.RightDockWidgetArea, self.inspectorDockWidget)) self.dockWidgets.append((Qt.RightDockWidgetArea, self.inspectorDockWidget))
self.editorOverlay.addChild(self.inspectorWidget.overlayNode)
if len(self.toolActions): if len(self.toolActions):
# Must be called after toolChanged is connected to editorTab # Must be called after toolChanged is connected to editorTab
self.toolActions[0].trigger() self.toolActions[0].trigger()

View File

@ -7,12 +7,14 @@ import traceback
from PySide import QtGui from PySide import QtGui
from mcedit2.command import SimpleRevisionCommand from mcedit2.command import SimpleRevisionCommand
from mcedit2.rendering import depths
from mcedit2.rendering.scenegraph import scenenode from mcedit2.rendering.scenegraph import scenenode
from mcedit2.rendering.selection import SelectionBoxNode from mcedit2.rendering.selection import SelectionBoxNode
from mcedit2.widgets.inspector.tileentities.chest import ChestEditorWidget, DispenserEditorWidget, HopperEditorWidget from mcedit2.widgets.inspector.tileentities.chest import ChestEditorWidget, DispenserEditorWidget, HopperEditorWidget
from mcedit2.util.load_ui import load_ui from mcedit2.util.load_ui import load_ui
from mcedit2.widgets.inspector.tileentities.command import CommandBlockEditorWidget from mcedit2.widgets.inspector.tileentities.command import CommandBlockEditorWidget
from mceditlib.selection import BoundingBox
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -57,9 +59,13 @@ class InspectorWidget(QtGui.QWidget):
self.currentChunk = None self.currentChunk = None
# xxxx unused! how!
self.selectionNode = None
self.overlayNode = scenenode.Node() 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) self.chunkTabWidget.currentChanged.connect(self.chunkTabDidChange)
@ -68,6 +74,14 @@ class InspectorWidget(QtGui.QWidget):
self.inhabitedTimeInput.valueChanged.connect(self.inhabitedTimeDidChange) self.inhabitedTimeInput.valueChanged.connect(self.inhabitedTimeDidChange)
self.updateTimeInput.valueChanged.connect(self.updateTimeDidChange) 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): def inspectBlock(self, pos):
self.entity = None self.entity = None
@ -122,6 +136,10 @@ class InspectorWidget(QtGui.QWidget):
self.removeTileEntityButton.setEnabled(self.tileEntity is not None) self.removeTileEntityButton.setEnabled(self.tileEntity is not None)
blockBox = BoundingBox((x, y, z), (1, 1, 1))
self.selectionNode.selectionBox = blockBox
def inspectEntity(self, entity): def inspectEntity(self, entity):
self.tileEntity = None self.tileEntity = None
@ -140,13 +158,11 @@ class InspectorWidget(QtGui.QWidget):
self.entityNBTEditor.setRootTagRef(entity) self.entityNBTEditor.setRootTagRef(entity)
# xxx entity bounds per type
# def toolInactive(self): entityBox = BoundingBox((x-.5, y, z-.5), (1, 2, 1))
# if self.selectionNode:
# self.overlayNode.removeChild(self.selectionNode) self.selectionNode.selectionBox = entityBox
# self.selectionNode = None
# self.currentChunk = None
# self.updateChunkWidget()
def inspectChunk(self, cx, cz): def inspectChunk(self, cx, cz):
dim = self.editorSession.currentDimension dim = self.editorSession.currentDimension
@ -155,12 +171,6 @@ class InspectorWidget(QtGui.QWidget):
self.setSelectedChunk(chunk) self.setSelectedChunk(chunk)
def setSelectedChunk(self, 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.selectionNode.selectionBox = chunk.bounds
self.currentChunk = chunk self.currentChunk = chunk
self.updateChunkWidget() self.updateChunkWidget()