Esempio n. 1
0
        private void CreateCell(int x, int y, Vector3 reference)
        {
            TerrainTile ti       = GetPrefabByType(TileType.Water);
            TerrainTile tile     = _grid[x, y] = Instantiate <TerrainTile>(ti);
            Vector3     position = reference + Vector3.right * (x * _tileDiameter + TileRadius) + Vector3.forward * (y * _tileDiameter + TileRadius);

            tile.transform.SetParent(transform, false);
            tile.transform.localPosition = position - tile.PivotOffset;
            tile.FixedLocalPosition      = tile.transform.localPosition;
            tile.transform.localScale   *= _tileDiameter;
            tile.SetCoordinates(x, y);
            tile.IsAtSurface = true;
            tile.Neighbours  = new TerrainTile[8];

            ComputeTileNeighbours(tile, x, y);
        }
Esempio n. 2
0
        private TerrainTile ChangeTileType(TerrainTile original, TileType newType)
        {
            TerrainTile tt   = GetPrefabByType(newType);
            TerrainTile newT = Instantiate(tt);

            newT.transform.SetParent(transform, false);
            newT.transform.localPosition = original.transform.localPosition;
            newT.transform.localScale    = original.transform.localScale;
            newT.SetCoordinates(original.X, original.Y);
            newT.Elevation                = original.Elevation;
            newT.Distance                 = original.Distance;
            newT.Neighbours               = original.Neighbours;
            newT.SearchHeuristic          = original.SearchHeuristic;
            newT.SearchPhase              = original.SearchPhase;
            newT.IsAtSurface              = original.IsAtSurface;
            newT.NextWithSamePriority     = original.NextWithSamePriority;
            _grid[original.X, original.Y] = newT;
            DestroyImmediate(original.gameObject);
            ComputeTileNeighbours(newT);
            PathfindingGrid.UpdateNode(newT);
            return(newT);
        }