   currentObject = null
 
   objectFilters = []
-
   filterObjects = (objects) ->
     for filter in objectFilters
       objects = filter(objects)

    I.scroll = Point(
      I.scroll.x.clamp(centerRect.left, centerRect.right).clamp(I.cameraBounds.left, I.cameraBounds.right - I.screen.width)
      I.scroll.y.clamp(centerRect.top, centerRect.bottom).clamp(I.cameraBounds.top, I.cameraBounds.bottom - I.screen.height)
    )    

    I.transform = Matrix.translate(-I.scroll.x, -I.scroll.y)
      .scale(I.zoom, I.zoom, objectCenter)
      .rotate(I.cameraRotation, objectCenter)

      canvas.context().clip()

      objects = filterObjects(objects)
      transform = filterTransform(self.transform())

      canvas.withTransform transform, (canvas) ->
        self.trigger "beforeDraw", canvas
        objects.invoke "draw", canvas

