Add rendering layer for chunk section edges.

Reveals that far too many chunk sections are being created.
Edges have odd diagonals but I'll leave it for now.
This commit is contained in:
David Vierra 2015-06-14 17:09:11 -10:00
parent ffa4c0a19a
commit cc4d4f5799
3 changed files with 41 additions and 1 deletions

View File

@ -0,0 +1,37 @@
"""
${NAME}
"""
from __future__ import absolute_import, division, print_function, unicode_literals
import logging
from OpenGL import GL
import numpy
from mcedit2.rendering import renderstates, scenegraph
from mcedit2.rendering.blockmeshes import standardCubeTemplates
from mcedit2.rendering.blockmeshes import ChunkMeshBase
from mcedit2.rendering.layers import Layer
from mcedit2.rendering.slices import _XYZ, _RGBA
from mcedit2.rendering.vertexarraybuffer import VertexArrayBuffer
log = logging.getLogger(__name__)
class ChunkSectionsRenderer(ChunkMeshBase):
layer = Layer.ChunkSections
renderstate = renderstates.RenderstateEntityNode
color = (255, 200, 255)
vertexTemplate = numpy.zeros((6, 4, 4), 'float32')
vertexTemplate[_XYZ] = standardCubeTemplates[_XYZ]
vertexTemplate[_XYZ] *= (16, 16, 16)
vertexTemplate.view('uint8')[_RGBA] = color + (72,)
def makeChunkVertices(self, chunk, _limitBox):
positions = chunk.sectionPositions()
buffer = VertexArrayBuffer((len(positions), 6, 4), GL.GL_LINE_STRIP, textures=False, lights=False)
for i, cy in enumerate(positions):
buffer.buffer[i, :] = self.vertexTemplate
buffer.vertex[i, ..., 1] += cy * 16
self.sceneNode = scenegraph.VertexNode(buffer)
yield

View File

@ -8,6 +8,7 @@ import numpy
from mcedit2.rendering.modelmesh import BlockModelMesh
from mcedit2.rendering import layers
from mcedit2.rendering.chunkmeshes.chunksections import ChunkSectionsRenderer
from mcedit2.rendering.chunkmeshes.entitymesh import TileEntityMesh, MonsterRenderer, ItemRenderer
from mcedit2.rendering.chunkmeshes.lowdetail import LowDetailBlockMesh, OverheadBlockMesh
from mcedit2.rendering.chunkmeshes.terrainpop import TerrainPopulatedRenderer
@ -125,6 +126,7 @@ class ChunkUpdate(object):
ItemRenderer,
TileTicksRenderer,
TerrainPopulatedRenderer,
ChunkSectionsRenderer,
LowDetailBlockMesh,
OverheadBlockMesh,
]

View File

@ -13,4 +13,5 @@ class Layer:
TileEntities = "TileEntities"
TileTicks = "TileTicks"
TerrainPopulated = "TerrainPopulated"
AllLayers = (Blocks, Entities, Items, TileEntities, TileTicks)
ChunkSections = "ChunkSections"
AllLayers = (Blocks, Entities, Items, TileEntities, TileTicks, ChunkSections)