private void Awake()
    {
        Instance = this;

        var mapWidth  = 10;
        var mapHeight = 8;

        var origin = new Vector3(0, 0);

        _grid = new Grid <GridCombatSystem.GridObject>(
            mapWidth,
            mapHeight,
            cellSize,
            origin,
            (g, x, y) => new GridCombatSystem.GridObject(g, x, y)
            );

        gridPathfinding = new GridPathfinding(origin + new Vector3(1, 1) * cellSize * .5f,
                                              new Vector3(mapWidth, mapHeight) * cellSize, cellSize);
        gridPathfinding.RaycastWalkable();

        var gridTile = Resources.Load("Sprites/grid", typeof(GameObject)) as GameObject;

        gridTile.transform.localScale = new Vector3(14, 14, 10);
        gridPathfinding.PrintMap((vec, size, color) =>
                                 Instantiate(gridTile, vec, Quaternion.identity));

        _gridRespawnLeftContainer  = GameObject.Find("GridRespawnLeftContainer").transform;
        _gridRespawnRightContainer = GameObject.Find("GridRespawnRightContainer").transform;
    }
    private void Start()
    {
        // TODO nice to have - scriptable objects for sizes
        _nodeSize = 17;
        var mapWidth  = 10;
        var mapHeight = 8;

        _worldOrigin = new Vector3(0, 0);

        gridPathfinding = new GridPathfinding(
            _worldOrigin + new Vector3(1, 1) * _nodeSize * .5f,
            new Vector3(mapWidth, mapHeight) * _nodeSize, _nodeSize
            );
        gridPathfinding.RaycastWalkable();
        gridPathfinding.PrintMap((vec, size, color) =>
                                 Instantiate(walkablePrefab, vec, Quaternion.identity));
        foreach (var objectOnMap in objectsOnMap)
        {
            if (objectOnMap == null)
            {
                return;
            }

            var origin     = new Vector3(0, 0);
            var cellSize   = 17;
            var cellCenter = cellSize / 2;
            // Objects has to be in objectOnMap list in order to snap to grid
            var objectOnMapTransformPosition = objectOnMap.transform.position;
            // _objectOnGridPosition.x = Mathf.Floor(objectOnMapTransformPosition.x / _nodeSize) * _nodeSize;
            // _objectOnGridPosition.y = Mathf.Floor(objectOnMapTransformPosition.y / _nodeSize) * _nodeSize;
            // _objectOnGridPosition.z = 0;
            objectOnMap.transform.position = new Vector3(cellCenter + gameObject.transform.position.x * cellSize,
                                                         cellCenter + gameObject.transform.position.y * cellSize) + new Vector3(1, 1) * 0.5f;
        }

        if (testObjectForGridSnapTests == null)
        {
            Debug.Log("No test object is provided");
            _debugMode = false;
        }

        ;
    }