old_contents: from UM.Mesh.MeshData import MeshData
  
  import numpy
  import math
  
  class LayerData(MeshData):
      def __init__(self):
          super().__init__()
          self._layers = {}
  
      def addPolygon(self, layer, type, data):
          if layer not in self._layers:
              self._layers[layer] = []
  
          self._layers[layer].append(Polygon(self, type, data))
  
      def getLayers(self):
          return self._layers
  
  class Polygon():
      NoneType = 0
      Inset0Type = 1
      InsetXType = 2
      SkinType = 3
      SupportType = 4
      SkirtType = 5
  
      def __init__(self, mesh, type, data):
          super().__init__()
          self._type = type
          self._begin = mesh._vertex_count
          mesh.addVertices(data)
  
          indices = [self._begin + i for i in range(len(data))]
  
          mesh.addIndices(numpy.array(indices, dtype=numpy.int32))
          self._end = mesh._vertex_count
  
      @property
      def type(self):
          return self._type
  
      @property
      def data(self):
          return self._data
  
new_contents: from UM.Mesh.MeshData import MeshData
  from UM.Math.Color import Color
  
  import numpy
  import math
  
  class LayerData(MeshData):
      def __init__(self):
          super().__init__()
          self._layers = {}
          self._element_counts = []
  
      def addPolygon(self, layer, type, data):
          if layer not in self._layers:
              self._layers[layer] = []
  
          p = Polygon(self, type, data)
          self._layers[layer].append(p)
          self._element_counts.append(p.count)
  
      def getLayers(self):
          return self._layers
  
      def getElementCounts(self):
          return self._element_counts
  
  class Polygon():
      NoneType = 0
      Inset0Type = 1
      InsetXType = 2
      SkinType = 3
      SupportType = 4
      SkirtType = 5
  
      def __init__(self, mesh, type, data):
          super().__init__()
          self._type = type
          self._begin = mesh._vertex_count
          mesh.addVertices(data)
          self._end = self._begin + len(data)
  
          color = None
          if type == self.Inset0Type:
              color = [1, 0, 0, 1]
          elif type == self.InsetXType:
              color = [0, 1, 0, 1]
          elif type == self.SkinType:
              color = [1, 1, 0, 1]
          elif type == self.SupportType:
              color = [0, 1, 1, 1]
          elif type == self.SkirtType:
              color = [0, 1, 1, 1]
          else:
              color = [1, 1, 1, 1]
  
          colors = [color for i in range(len(data))]
          mesh.addColors(numpy.array(colors, dtype=numpy.float32))
  
          indices = []
          for i in range(self._begin, self._end):
              indices.append(i)
              indices.append(i + 1)
          mesh.addIndices(numpy.array(indices, dtype=numpy.int32))
  
      @property
      def type(self):
          return self._type
  
      @property
      def data(self):
          return self._data
  
      @property
      def count(self):
          return self._end - self._begin
  
subject: Support colours for rendering the layer view