PendingImport now has rotate/scale and transformedDim attributes

transformedDim is recreated whenever the rotate/scale are changed. Its chunks are lazily evaluated.
This commit is contained in:
David Vierra 2015-10-02 14:02:49 -10:00
parent fc0080015d
commit 2c531925fb

View File

@ -22,6 +22,7 @@ from mcedit2.util.directories import getUserSchematicsDirectory
from mcedit2.util.mimeformats import MimeFormats
from mcedit2.widgets.mcedockwidget import MCEDockWidget
from mcedit2.widgets.spinslider import SpinSlider
from mceditlib.transform import DimensionTransform, SelectionTransform
from mceditlib.util import exhaust
from mceditlib.util.lazyprop import weakrefprop
from mcedit2.util.raycast import rayCastInBounds
@ -67,6 +68,37 @@ class PendingImport(object):
self.pos = pos
self.sourceDim = sourceDim
self.isMove = isMove
self._rotation = (0, 0, 0)
self._scale = (0, 0, 0)
self.transformedDim = None
bounds = self.selection
self.rotateAnchor = bounds.origin + bounds.size * 0.5
@property
def rotation(self):
return self._rotation
@rotation.setter
def rotation(self, value):
self._rotation = value
self.updateTransform()
@property
def scale(self):
return self._rotation
@scale.setter
def scale(self, value):
self._rotation = value
self.updateTransform()
def updateTransform(self):
if self.rotation == (0, 0, 0) and self.scale == (0, 0, 0):
self.transformedDim = None
else:
selectionDim = SelectionTransform(self.sourceDim, self.selection)
self.transformedDim = DimensionTransform(selectionDim, self.rotateAnchor, *self.rotation)
def __repr__(self):
return "%s(%r, %r, %r)" % (self.__class__.__name__, self.sourceDim, self.selection, self.pos)