void Update()
    {
        if (activeGhost != null)
        {
            if (Input.GetMouseButtonUp(0))
            {
                mouseDownCounts = true;
            }

            updateRaycast();
            placeGhost();
            if (Input.GetMouseButtonDown(0) && mouseDownCounts)
            {
                foreach (Coord coord in adjacentCoords)
                {
                    if (activeGhost.CanBePlacedAt(coord.X, coord.Z))
                    {
                        ItemLocationSelectedSignal itemLocationSelectedSignal = new ItemLocationSelectedSignal(activeGhost, coord.X, coord.Z);
                        GameSceneSignalManager.Inst.FireSignal(itemLocationSelectedSignal);
                        Destroy(activeGhost.gameObject);
                        activeGhost    = null;
                        adjacentCoords = null;
                        return;
                    }
                }
            }
        }
    }
    private void onItemLocationSelected(Signal signal)
    {
        ItemLocationSelectedSignal itemLocationSelectedSignal = (ItemLocationSelectedSignal)signal;
        int  x            = itemLocationSelectedSignal.X;
        int  z            = itemLocationSelectedSignal.Z;
        Tile existingTile = GetTileAt(x, z);

        if (existingTile != null)
        {
            tiles.Remove(existingTile);
            existingTile.DestroySelf();
        }
        Tile newTile = Instantiate <Tile>(itemLocationSelectedSignal.ItemGhost.TilePrefab, new Vector3(x, 0, z), Quaternion.identity, transform);

        newTile.x = itemLocationSelectedSignal.X;
        newTile.z = itemLocationSelectedSignal.Z;
        tiles.Add(newTile);
    }