From 725ee72b8f17cf4c3c853c2163763839af28319b Mon Sep 17 00:00:00 2001 From: David Vierra Date: Sat, 11 Jul 2015 11:37:50 -1000 Subject: [PATCH] Display red boxes for entities as wireframes Added PolygonModeNode --- src/mcedit2/rendering/chunkmeshes/entitymesh.py | 7 ++++++- src/mcedit2/rendering/rendergraph.py | 9 +++++++++ src/mcedit2/rendering/scenegraph.py | 7 +++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/mcedit2/rendering/chunkmeshes/entitymesh.py b/src/mcedit2/rendering/chunkmeshes/entitymesh.py index 29a9dcb..afd473e 100644 --- a/src/mcedit2/rendering/chunkmeshes/entitymesh.py +++ b/src/mcedit2/rendering/chunkmeshes/entitymesh.py @@ -3,11 +3,13 @@ """ 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.scenegraph import PolygonModeNode from mcedit2.rendering.slices import _XYZ from mcedit2.rendering.vertexarraybuffer import QuadVertexArrayBuffer from mceditlib.anvil.entities import PCPaintingEntityRefBase @@ -147,7 +149,10 @@ class MonsterRenderer(EntityMeshBase): offset=True, chunkPosition=chunk.chunkPosition) yield - self.sceneNode = scenegraph.VertexNode(monsters) + + vertexNode = scenegraph.VertexNode(monsters) + self.sceneNode = PolygonModeNode(GL.GL_FRONT_AND_BACK, GL.GL_LINE) + self.sceneNode.addChild(vertexNode) diff --git a/src/mcedit2/rendering/rendergraph.py b/src/mcedit2/rendering/rendergraph.py index 7909d09..1062bfc 100644 --- a/src/mcedit2/rendering/rendergraph.py +++ b/src/mcedit2/rendering/rendergraph.py @@ -212,6 +212,15 @@ class TranslateRenderNode(RenderstateRenderNode): GL.glPopMatrix() +class PolygonModeRenderNode(RenderstateRenderNode): + def enter(self): + GL.glPushAttrib(GL.GL_POLYGON_BIT) + GL.glPolygonMode(self.sceneNode.face, self.sceneNode.mode) + + def exit(self): + GL.glPopAttrib() + + class VertexRenderNode(RenderNode): def __init__(self, sceneNode): """ diff --git a/src/mcedit2/rendering/scenegraph.py b/src/mcedit2/rendering/scenegraph.py index b93d83b..3c7d922 100644 --- a/src/mcedit2/rendering/scenegraph.py +++ b/src/mcedit2/rendering/scenegraph.py @@ -208,6 +208,13 @@ class OrthoNode(Node): self._size = value self.dirty = True +class PolygonModeNode(Node): + RenderNodeClass = rendergraph.PolygonModeRenderNode + def __init__(self, face, mode): + super(PolygonModeNode, self).__init__() + self.face = face + self.mode = mode + class VertexNode(Node): RenderNodeClass = rendergraph.VertexRenderNode