internal static TerrainGroups CollectTerrains(bool onlyAutoConnectedTerrains = true) { if (!HasValidTerrains()) { return(null); } // Collect by groups TerrainGroups TerrainGroups = new TerrainGroups(); foreach (Terrain t in Terrain.activeTerrains) { if (onlyAutoConnectedTerrains && !t.allowAutoConnect) { continue; } if (!TerrainGroups.ContainsKey(t.groupingID)) { TerrainMap map = TerrainMap.CreateFromPlacement(t, (x => (x.groupingID == t.groupingID) && !(onlyAutoConnectedTerrains && !x.allowAutoConnect))); if (map != null) { TerrainGroups.Add(t.groupingID, map); } } } return((TerrainGroups.Count != 0) ? TerrainGroups : null); }
static public void AutoConnect() { if (!HasValidTerrains()) { return; } ClearConnectivity(); TerrainGroups TerrainGroups = CollectTerrains(); if (TerrainGroups == null) { return; } foreach (var group in TerrainGroups) { TerrainMap terrains = group.Value; foreach (var tile in terrains.m_terrainTiles) { TerrainMap.TileCoord coords = tile.Key; Terrain center = terrains.GetTerrain(coords.tileX, coords.tileZ); Terrain left = terrains.GetTerrain(coords.tileX - 1, coords.tileZ); Terrain right = terrains.GetTerrain(coords.tileX + 1, coords.tileZ); Terrain top = terrains.GetTerrain(coords.tileX, coords.tileZ + 1); Terrain bottom = terrains.GetTerrain(coords.tileX, coords.tileZ - 1); center.SetNeighbors(left, top, right, bottom); } } }
public static void Clear() { // Clear Resource Directories ModelDirectories.Clear(); ResourceDirectories.Clear(); // Clear Viewport Models/Instances Viewport.SelectedInstances.Clear(); DefaultCube.Instances.Clear(); DefaultTerrainGroup.Clear(); TerrainGroups.Clear(); Objects.Clear(); // Clear Resources Materials.Clear(); Textures.Clear(); }