xxx destroy this commit, adds logging to rendernode
This commit is contained in:
parent
333e0e6b3b
commit
fd795bf79c
@ -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
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user