Shaped selection renderer feels slightly more responsive.

Load chunks immediately over a very short duration when the box is resized.
This commit is contained in:
David Vierra 2015-10-25 16:36:17 -10:00
parent 81e1753629
commit e2f41bac1e
2 changed files with 13 additions and 6 deletions

View File

@ -4,6 +4,7 @@
from __future__ import absolute_import, division, print_function, unicode_literals
import logging
import time
from OpenGL import GL
from PySide import QtGui, QtCore
@ -251,9 +252,14 @@ class SelectionTool(EditorTool):
self.selectionNode.visible = False
self.faceHoverNode.visible = False
lastResizeTime = time.time()
def boxHandleResized(self, box):
if box is not None:
self.selectionNode.selection = self.createShapedSelection(box)
if time.time() - self.lastResizeTime > 0.025:
self.selectionNode.loadImmediateChunks(0.025)
self.lastResizeTime = time.time()
def boxHandleResizedDone(self, box, oldBox):
if box is not None:
@ -289,6 +295,7 @@ class SelectionTool(EditorTool):
def createShapedSelection(self, box):
return self.shapeInput.currentShape.createShapedSelection(box, self.editorSession.currentDimension)
class SelectionCursorRenderNode(rendernode.RenderNode):
def drawSelf(self):
point = self.sceneNode.point
@ -315,9 +322,9 @@ class SelectionCursorRenderNode(rendernode.RenderNode):
cubes.drawFace(box, self.sceneNode.face)
class SelectionCursor(scenenode.Node):
RenderNodeClass = SelectionCursorRenderNode
def __init__(self, point=Vector(0, 0, 0), face=faces.FaceXDecreasing, color=(.3, .3, 1)):
super(SelectionCursor, self).__init__()
self._point = point

View File

@ -4,6 +4,7 @@
from __future__ import absolute_import, division, print_function
import logging
import time
from OpenGL import GL
from PySide import QtCore
@ -158,11 +159,10 @@ class SelectionScene(scenenode.Node):
self.groupNode.clear()
self._loader = None
def loadImmediateChunks(self):
if self.selection.chunkCount < 16:
exhaust(self.loadSections())
self.loadTimer.setInterval(333)
def loadImmediateChunks(self, duration=0.05):
start = time.time()
while time.time() - duration < start:
self.loadMore()
_loader = None