         if not @mouseDown or not position
             return
 
+        @hideCursor()
+
         @hasSelection = true
         @absolutePosition = _.clone position
 
         if not @selection
-            geometry = new THREE.PlaneGeometry 1, 1
-            material = new THREE.MeshBasicMaterial {
+            geometry = new THREE.BoxGeometry 1, 1, 1
+            material = new THREE.MeshLambertMaterial {
                 color: 0x333333
                 transparent: true
                 opacity: 0.4

        point.x = (Math.floor(point.x / @gridCellWidth) * @gridCellWidth) + (@gridCellWidth / 2)
        point.y = (Math.floor(point.y / @gridCellHeight) * @gridCellHeight) + (@gridCellWidth / 2)

        @cursor.position.set point.x, point.y, 0.1
        @cursor.material.visible = true
        @cursor.material.needsUpdate



    showCursor: (point) ->
        if not @cursor
            geometry = new THREE.BoxGeometry 1, 1, 1
            material = new THREE.MeshLambertMaterial {
                color: 0x333333
                transparent: true
                opacity: 0.4
                visible: false
            }
            @cursor = new THREE.Mesh geometry, material
            @cursor.scale.set @gridCellWidth, @gridCellHeight, @gridCellHeight * 2
            @cursor.position.set 0, 0, 1
            @renderer.getScene().add @cursor

        # matrix = new THREE.Matrix4
