xxx destroy this commit, adds logging to rendernode

This commit is contained in:
David Vierra 2015-10-25 16:39:24 -10:00
parent 333e0e6b3b
commit fd795bf79c

View File

@ -80,9 +80,11 @@ class RenderNode(object):
return self.displayList.getList()
def callList(self):
rendernode_log("callList", self)
self.displayList.call()
def compile(self):
rendernode_log("compile", self)
if self.childNeedsRecompile:
for node in self.children:
if node.sceneNode.visible:
@ -92,6 +94,7 @@ class RenderNode(object):
self.displayList.compile(self.draw)
def draw(self):
rendernode_log("draw", self)
self.drawSelf()
self.drawChildren()
@ -165,6 +168,26 @@ def createRenderNode(sceneNode):
updateRenderNode(renderNode)
return renderNode
logUpdateRenderNode = False
rendernode_file = None
def rendernode_log(msg, node, *a):
if not logUpdateRenderNode:
return
global rendernode_file
if rendernode_file is None:
rendernode_file = open("rendernode.log", "w")
if len(a):
msg = msg % a
msg = str(node) + ": " + msg
rendernode_file.write(msg)
rendernode_file.write("\n")
def updateRenderNode(renderNode):
"""
@ -182,20 +205,25 @@ def updateRenderNode(renderNode):
:type renderNode: mcedit2.rendering.rendernode.RenderNode
"""
sceneNode = renderNode.sceneNode
rendernode_log("updateRenderNode", sceneNode)
if sceneNode.dirty:
rendernode_log("dirty", sceneNode)
renderNode.invalidate()
sceneNode.dirty = False
if sceneNode.childrenChanged:
rendernode_log("childrenChanged", sceneNode)
updateChildren(renderNode)
sceneNode.childrenChanged = False
if sceneNode.descendentNeedsUpdate:
rendernode_log("descendentNeedsUpdate", sceneNode)
for renderChild in renderNode.children:
updateRenderNode(renderChild)
sceneNode.descendentNeedsUpdate = False
def updateChildren(renderNode):
"""
Compare the children of this renderNode to the children of its sceneNode. Create
@ -208,10 +236,12 @@ def updateChildren(renderNode):
"""
sceneNode = renderNode.sceneNode
orphans = []
rendernode_log("childrenChanged", sceneNode)
# Find renderNode children whose sceneNode is no longer this node's sceneNode
for renderChild in renderNode.children:
if not renderChild.sceneNode.hasParent(sceneNode):
rendernode_log("orphaned", renderChild)
orphans.append(renderChild)
for node in orphans:
@ -222,9 +252,10 @@ def updateChildren(renderNode):
for index, sceneChild in enumerate(sceneNode.children):
renderChild = renderNode.childrenBySceneNode.get(sceneChild)
if renderChild is None:
renderNode.insertNode(index, createRenderNode(sceneChild))
renderChild = createRenderNode(sceneChild)
renderNode.insertNode(index, renderChild)
sceneChild.dirty = False
rendernode_log("new child", renderChild)
def renderScene(renderNode):
@ -235,3 +266,10 @@ def renderScene(renderNode):
with profiler.context("renderNode.callList"):
renderNode.callList()
global rendernode_file, logUpdateRenderNode
logUpdateRenderNode = False
if rendernode_file:
rendernode_file.close()
rendernode_file = None