   ###
   mouseHasMoved: ->
     engine.last < @mouse.lastMoved
-
 
   ###
   Checks if a mouse button or touch is currently down.

    button = (if button isnt undefined then button else MOUSE_TOUCH_ANY)
    throw new Error("Missing argument: shape") if shape is undefined #dev
    throw new Error("Argument shape has implement a \"contains\"-function") if typeof shape.contains isnt "function" #dev
    i = undefined
    pointers = undefined
    pointer = undefined
    ret = undefined

    # Narrow possible pointers down to the pointers which are down within the selected buttons
    pointers = @isDown(button)
    return false unless pointers

    # Check each of the pointers to see if they are inside the shape
    ret = []
    i = 0
    while i < pointers.length
      pointer = pointers[i]
      continue if pointer.x is false or pointer.y is false
      if not outside and shape.contains(pointer)
        ret.push pointer
      else ret.push pointer if outside and not shape.contains(pointer)
      i++

    # Return the pointers which are inside the shape
    (if ret.length then ret else false)


  ###
  Returns a string representing the button type.

      @cursor.y = @mouse.y
    return

  ###
  Registers every ontouchstart event to the Mouse object.

