     minZ : 0
     maxZ : 0
     positionOffsetZ : 250
+    matrixDimensions : [0,0] #y,x
+    colorBoxSize : 5
   }
   this.colors = []
+  this.colorsMatrix = []
 
   # Handle dev vs production
   if window.location.hostname == 'color.camp'


  #
  dataLoadColors : (colors)->
    return if colors.length < 1

    colors = this.dataAssignCoords(colors, this.colors.length)
    $.each colors, ((i,v) ->
      this.colors[i] = v
    ).bind(this)

    this.canvasDrawColors() if this.canvas.scene

  #
  dataAppendColors : (colors) ->
    colors = this.dataAssignCoords(colors, this.colors.length)
    Array.prototype.push.apply(this.colors, colors)

  #
  dataPrependColors : (colors) ->
    colors = this.dataAssignCoords(colors.reverse(), 0).reverse() # reverse the order and then back
    Array.prototype.unshift.apply(this.colors, colors)


  # --- Canvas ---

    this.canvas.renderer.setSize( window.innerWidth, window.innerHeight )

    this.canvas.mouse = new THREE.Vector2()
    this.canvas.matrixDimensions = [6,10]#[24,36] #y,x
    this.dataResetMatrix()
    this.canvasDrawColors()

    document.body.appendChild( this.canvas.renderer.domElement )
