コード例 #1
0
ファイル: MapManager.cs プロジェクト: kbedits/Editor
        public static IEnumerator Load(MapInfo mapInfo, string path = "")
        {
            for (int i = 0; i < Progress.GetCount(); i++) // Remove old progress
            {
                var progress = Progress.GetProgressById(Progress.GetId(i));
                if (progress.finished && progress.name.Contains("Load:"))
                {
                    progress.Remove();
                }
            }

            int progressID = Progress.Start("Load: " + path.Split('/').Last(), "Preparing Map", Progress.Options.Sticky);
            int delPrefab  = Progress.Start("Prefabs", null, Progress.Options.Sticky, progressID);
            int spwPrefab  = Progress.Start("Prefabs", null, Progress.Options.Sticky, progressID);
            int delPath    = Progress.Start("Paths", null, Progress.Options.Sticky, progressID);
            int spwPath    = Progress.Start("Paths", null, Progress.Options.Sticky, progressID);
            int terrainID  = Progress.Start("Terrain", null, Progress.Options.Sticky, progressID);

            var splatMapTask = Task.Run(() => SetSplatMaps(mapInfo));

            PrefabManager.DeletePrefabs(PrefabManager.CurrentMapPrefabs, delPrefab);
            PathManager.DeletePaths(PathManager.CurrentMapPaths, delPath);
            CentreSceneObjects(mapInfo);
            SetTerrain(mapInfo, terrainID);
            PrefabManager.SpawnPrefabs(mapInfo.prefabData, spwPrefab);
            PathManager.SpawnPaths(mapInfo.pathData, spwPath);

            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Start();
            while (!splatMapTask.IsCompleted)
            {
                if (sw.Elapsed.TotalMilliseconds > 0.05f)
                {
                    sw.Restart();
                    yield return(null);
                }
            }

            SetLayer(LandLayer, TerrainTopology.TypeToIndex((int)TopologyLayer)); // Sets the alphamaps to the currently selected.

            while (Progress.GetProgressById(spwPrefab).running)
            {
                if (sw.Elapsed.TotalMilliseconds > 0.05f)
                {
                    sw.Restart();
                    yield return(null);
                }
            }

            Progress.Report(progressID, 0.99f, "Loaded");
            Progress.Finish(terrainID, Progress.Status.Succeeded);
            Progress.Finish(progressID, Progress.Status.Succeeded);

            EventManager.OnMapLoaded(path);
        }
コード例 #2
0
        public static void PrefabTools(ref bool deleteOnExport, string lootCrateSaveFile = "", string mapPrefabSaveFile = "")
        {
            Elements.MiniBoldLabel(ToolTips.toolsLabel);

            Elements.BeginToolbarHorizontal();
            if (Elements.ToolbarButton(ToolTips.deleteMapPrefabs))
            {
                PrefabManager.DeletePrefabs(PrefabManager.CurrentMapPrefabs);
            }
            if (Elements.ToolbarButton(ToolTips.deleteMapPaths))
            {
                PathManager.DeletePaths(PathManager.CurrentMapPaths);
            }
            Elements.EndToolbarHorizontal();
        }
コード例 #3
0
        public static void PrefabTools()
        {
            Elements.MiniBoldLabel(ToolTips.toolsLabel);

            Elements.BeginToolbarHorizontal();
            if (Elements.ToolbarButton(ToolTips.deleteMapPrefabs))
            {
                PrefabManager.DeletePrefabs(PrefabManager.CurrentMapPrefabs);
            }
            if (Elements.ToolbarButton(ToolTips.deleteMapPaths))
            {
                PathManager.DeletePaths(PathManager.CurrentMapPaths);
            }
            Elements.EndToolbarHorizontal();
        }
コード例 #4
0
        public static IEnumerator Load(MapInfo mapInfo, string path = "")
        {
            ProgressManager.RemoveProgressBars("Load:");

            int progressID = Progress.Start("Load: " + path.Split('/').Last(), "Preparing Map", Progress.Options.Sticky);
            int delPrefab  = Progress.Start("Prefabs", null, Progress.Options.Sticky, progressID);
            int spwPrefab  = Progress.Start("Prefabs", null, Progress.Options.Sticky, progressID);
            int delPath    = Progress.Start("Paths", null, Progress.Options.Sticky, progressID);
            int spwPath    = Progress.Start("Paths", null, Progress.Options.Sticky, progressID);
            int terrainID  = Progress.Start("Terrain", null, Progress.Options.Sticky, progressID);

            PrefabManager.DeletePrefabs(PrefabManager.CurrentMapPrefabs, delPrefab);
            PathManager.DeletePaths(PathManager.CurrentMapPaths, delPath);
            CentreSceneObjects(mapInfo);
            TerrainManager.Load(mapInfo, terrainID);
            PrefabManager.SpawnPrefabs(mapInfo.prefabData, spwPrefab);
            PathManager.SpawnPaths(mapInfo.pathData, spwPath);

            var sw = new System.Diagnostics.Stopwatch();

            sw.Start();

            while (Progress.GetProgressById(terrainID).progress < 0.99f || Progress.GetProgressById(spwPrefab).running || Progress.GetProgressById(spwPath).running)
            {
                if (sw.Elapsed.TotalMilliseconds > 0.05f)
                {
                    sw.Restart();
                    yield return(null);
                }
            }

            Progress.Report(progressID, 0.99f, "Loaded");
            Progress.Finish(terrainID, Progress.Status.Succeeded);
            Progress.Finish(progressID, Progress.Status.Succeeded);

            Callbacks.OnMapLoaded(path);
        }
コード例 #5
0
 public static void ClearMapPaths() => PathManager.DeletePaths(PathManager.CurrentMapPaths);