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);
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        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();
        }