Show command visuals when inspecting blocks.

This commit is contained in:
David Vierra 2015-10-25 03:22:37 -10:00
parent f43e5e0bc6
commit 2f742a77a2

View File

@ -8,9 +8,10 @@ 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 import depths
from mcedit2.rendering.command_visuals import CommandVisuals
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.util.commandblock import ParseCommand
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
@ -67,6 +68,8 @@ class InspectorWidget(QtGui.QWidget):
self.overlayNode.addChild(self.selectionNode) self.overlayNode.addChild(self.selectionNode)
self.commandBlockVisualsNode = None
self.chunkTabWidget.currentChanged.connect(self.chunkTabDidChange) self.chunkTabWidget.currentChanged.connect(self.chunkTabDidChange)
self.terrainPopulatedInput.toggled.connect(self.terrainPopulatedDidChange) self.terrainPopulatedInput.toggled.connect(self.terrainPopulatedDidChange)
@ -81,8 +84,14 @@ class InspectorWidget(QtGui.QWidget):
def show(self, *args, **kwargs): def show(self, *args, **kwargs):
super(InspectorWidget, self).show(*args, **kwargs) super(InspectorWidget, self).show(*args, **kwargs)
self.overlayNode.visible = True self.overlayNode.visible = True
def clearVisuals(self):
if self.commandBlockVisualsNode:
self.overlayNode.removeChild(self.commandBlockVisualsNode)
self.commandBlockVisualsNode = None
def inspectBlock(self, pos): def inspectBlock(self, pos):
self.clearVisuals()
self.entity = None self.entity = None
self.stackedWidget.setCurrentWidget(self.pageInspectBlock) self.stackedWidget.setCurrentWidget(self.pageInspectBlock)
@ -139,9 +148,20 @@ class InspectorWidget(QtGui.QWidget):
blockBox = BoundingBox((x, y, z), (1, 1, 1)) blockBox = BoundingBox((x, y, z), (1, 1, 1))
self.selectionNode.selectionBox = blockBox self.selectionNode.selectionBox = blockBox
if self.tileEntity is not None:
if self.tileEntity.id == "Control":
try:
commandObj = ParseCommand(self.tileEntity.Command)
visuals = CommandVisuals((x, y, z), commandObj)
self.commandBlockVisualsNode = visuals
self.overlayNode.addChild(visuals)
except Exception as e:
log.warn("Failed to parse command.", exc_info=1)
def inspectEntity(self, entity): def inspectEntity(self, entity):
self.tileEntity = None self.tileEntity = None
self.clearVisuals()
self.entity = entity self.entity = entity
self.stackedWidget.setCurrentWidget(self.pageInspectEntity) self.stackedWidget.setCurrentWidget(self.pageInspectEntity)
@ -165,6 +185,8 @@ class InspectorWidget(QtGui.QWidget):
self.selectionNode.selectionBox = entityBox self.selectionNode.selectionBox = entityBox
def inspectChunk(self, cx, cz): def inspectChunk(self, cx, cz):
self.clearVisuals()
dim = self.editorSession.currentDimension dim = self.editorSession.currentDimension
if dim.containsChunk(cx, cz): if dim.containsChunk(cx, cz):
chunk = dim.getChunk(cx, cz) chunk = dim.getChunk(cx, cz)