Source code for drawable

"""
    ${NAME}
"""
from __future__ import absolute_import, division, print_function, unicode_literals
import logging

log = logging.getLogger(__name__)

from OpenGL import GL


[docs]class Drawable(object): def __init__(self): super(Drawable, self).__init__() self._displayList = None self.invalidList = True self.children = [] @staticmethod
[docs] def setUp(): """ Set up rendering settings and view matrices :return: :rtype: """
@staticmethod
[docs] def tearDown(): """ Return any settings changed in setUp to their previous states :return: :rtype: """
[docs] def drawSelf(self): """ Draw this drawable, if it has its own graphics. :return: :rtype: """
def _draw(self): self.setUp() self.drawSelf() for child in self.children: child.draw() self.tearDown()
[docs] def draw(self): if self._displayList is None: self._displayList = GL.glGenLists(1) if self.invalidList: self.compileList() GL.glCallList(self._displayList)
[docs] def compileList(self): GL.glNewList(self._displayList, GL.GL_COMPILE) self._draw() GL.glEndList() self.invalidList = False
[docs] def invalidate(self): self.invalidList = True