/////////////////////////// MOUSE INPUT //////////////////////////////
    private void MouseClickInput()
    {
        if (Input.GetButtonDown ("Fire1"))	// Left Click down first frame
        {
            GameObject clickedObject = RaycastFromMouse();	// Raycast from Camera to Scene and return GameObject
            if(!clickedObject) return;

            Vector3 vector = clickedObject.transform.position;

            if(clickedObject.CompareTag("SnapTarget") || clickedObject.layer == 8)
         	{
         		//Debug.Log("CameraRaycaster.MouseClickInput -> Clicked on 'SnapTarget' " + clickedObject.name + ".");
                if(selectedworker != null)
                {
                    selectedworker.SetSelected(false);
                    selectedworker = null;
                }
         	}
            else if(clickedObject.CompareTag("Worker"))
         	{
                if(mouseOverWorker != null) mouseOverWorker.MouseClick();
                if(selectedworker != null && selectedworker != mouseOverWorker)
                {
                    selectedworker.SetSelected(false);
                    selectedworker = null;
                }
                selectedworker = mouseOverWorker;
                if(selectedworker != null) selectedworker.SetSelected(true);
         	}
         	else
         	{
         		//Debug.Log("CameraRaycaster -> Clicked on " + clickedObject.name + ", has no effect.");
                if(selectedworker != null)
                {
                    selectedworker.SetSelected(false);
                    selectedworker = null;
                }
         	}
        }
        else if(Input.GetButton ("Fire1")) // Left Click down continuous
        {
            if(dragObject == null) BeginMouseDrag();
            else MouseDrag();
        }
        else // Left Click is not down
        {
            if(dragObject != null) MouseDrop();
        }
    }