public void FillTile(Index index)
    {
        if (AlreadySpawned(index))
        {
            return;
        }

        tempBuildingInstance = instanceManager.GetBuilding(index);
        if (tempBuildingInstance != null)
        {
            MapUtils.GetIndexDistanceToAreaMidPoint(index, tempBuildingInstance.index, tempBuildingInstance.lastIndex, out offsetVec);

            tempPoolObje = poolController.GetPoolObje(buildingObjeType.value, GetTileByIndex(index.x, index.y).transform.position + (Vector3)offsetVec);
            tempBuilding = tempPoolObje.GetComponent <Building>();
            tempBuilding.Set(tempBuildingInstance);
            activeBuildings.Add(tempBuilding);
            return;
        }

        tempSoldierInstances = instanceManager.GetSoldier(index);
        if (tempSoldierInstances != null)
        {
            for (int i = 0; i < tempSoldierInstances.Count; i++)
            {
                tempPoolObje = poolController.GetPoolObje(soldierObjeType.value, GetTileByIndex(index.x, index.y).transform.position);
                tempSoldier  = tempPoolObje.GetComponent <Soldier>();
                tempSoldier.Set(tempSoldierInstances[i]);
                activeSoldiers.Add(tempSoldier);
                E_SoldierActivated.Invoke(tempSoldier);
            }
        }
    }
    public void ActivateSoldier(Instance_Soldier soldierInstance)
    {
        for (int i = 0; i < activeSoldiers.Count; i++)
        {
            if (activeSoldiers[i].soldierInstance == soldierInstance)
            {
                return;
            }
        }

        if (!MapUtils.PositionInArea(soldierInstance.position, tiles[0][0].index, tiles[height.value - 1][width.value - 1].index))
        {
            return;
        }

        tempPoolObje = poolController.GetPoolObje(soldierObjeType.value);
        tempSoldier  = tempPoolObje.GetComponent <Soldier>();
        activeSoldiers.Add(tempSoldier);
        tempSoldier.Set(soldierInstance);
        E_SoldierActivated.Invoke(tempSoldier);
    }