Collapse some one-child nodes in WorldScene into their parents

This commit is contained in:
David Vierra 2015-11-07 06:25:58 -10:00
parent 983bec64ff
commit df15798a6e

View File

@ -206,19 +206,17 @@ class WorldScene(scenenode.Node):
self.depthOffset = DepthOffset(DepthOffsets.Renderer) self.depthOffset = DepthOffset(DepthOffsets.Renderer)
self.addState(self.depthOffset) self.addState(self.depthOffset)
self.textureAtlasNode = Node()
self.textureAtlasState = TextureAtlasState(textureAtlas) self.textureAtlasState = TextureAtlasState(textureAtlas)
self.textureAtlasNode.addState(self.textureAtlasState) self.addState(self.textureAtlasState)
self.addChild(self.textureAtlasNode)
self.renderstateNodes = {} self.renderstateNodes = {}
for rsClass in renderstates.allRenderstates: for rsClass in renderstates.allRenderstates:
rsNode = Node() groupNode = ChunkGroupNode()
rsNode.addState(rsClass()) groupNode.name = rsClass.__name__
self.textureAtlasNode.addChild(rsNode) groupNode.addState(rsClass())
self.renderstateNodes[rsClass] = rsNode self.addChild(groupNode)
self.renderstateNodes[rsClass] = groupNode
self.groupNodes = {} # by renderstate
self.chunkRenderInfo = {} self.chunkRenderInfo = {}
self.visibleLayers = set(Layer.DefaultVisibleLayers) self.visibleLayers = set(Layer.DefaultVisibleLayers)
@ -244,11 +242,7 @@ class WorldScene(scenenode.Node):
return self.chunkRenderInfo.iterkeys() return self.chunkRenderInfo.iterkeys()
def getRenderstateGroup(self, rsClass): def getRenderstateGroup(self, rsClass):
groupNode = self.groupNodes.get(rsClass) groupNode = self.renderstateNodes.get(rsClass)
if groupNode is None:
groupNode = ChunkGroupNode()
self.groupNodes[rsClass] = groupNode
self.renderstateNodes[rsClass].addChild(groupNode)
return groupNode return groupNode
@ -256,7 +250,7 @@ class WorldScene(scenenode.Node):
""" """
Discard the chunk at the given position from the scene Discard the chunk at the given position from the scene
""" """
for groupNode in self.groupNodes.itervalues(): for groupNode in self.renderstateNodes.itervalues():
groupNode.discardChunkNode(cx, cz) groupNode.discardChunkNode(cx, cz)
self.chunkRenderInfo.pop((cx, cz), None) self.chunkRenderInfo.pop((cx, cz), None)
@ -265,7 +259,7 @@ class WorldScene(scenenode.Node):
self.discardChunk(cx, cz) self.discardChunk(cx, cz)
def discardAllChunks(self): def discardAllChunks(self):
for groupNode in self.groupNodes.itervalues(): for groupNode in self.renderstateNodes.itervalues():
groupNode.clear() groupNode.clear()
self.chunkRenderInfo.clear() self.chunkRenderInfo.clear()
@ -343,7 +337,7 @@ class WorldScene(scenenode.Node):
else: else:
self.visibleLayers.discard(layerName) self.visibleLayers.discard(layerName)
for groupNode in self.groupNodes.itervalues(): for groupNode in self.renderstateNodes.itervalues():
groupNode.setLayerVisible(layerName, visible) groupNode.setLayerVisible(layerName, visible)
def setVisibleLayers(self, layerNames): def setVisibleLayers(self, layerNames):