public static IEnumerator StartServer(bool doLoad, string saveFileOverride, bool allowOutOfDateSaves) { float timeScale = UnityEngine.Time.timeScale; if (ConVar.Time.pausewhileloading) { UnityEngine.Time.timeScale = 0f; } RCon.Initialize(); BaseEntity.Query.Server = new BaseEntity.Query.EntityTree(8096f); if ((bool)SingletonComponent <WorldSetup> .Instance) { yield return(SingletonComponent <WorldSetup> .Instance.StartCoroutine(SingletonComponent <WorldSetup> .Instance.InitCoroutine())); } if ((bool)SingletonComponent <DynamicNavMesh> .Instance && SingletonComponent <DynamicNavMesh> .Instance.enabled && !AiManager.nav_disable) { yield return(SingletonComponent <DynamicNavMesh> .Instance.StartCoroutine(SingletonComponent <DynamicNavMesh> .Instance.UpdateNavMeshAndWait())); } if ((bool)SingletonComponent <AiManager> .Instance && SingletonComponent <AiManager> .Instance.enabled) { SingletonComponent <AiManager> .Instance.Initialize(); if (!AiManager.nav_disable && AI.npc_enable && TerrainMeta.Path != null) { foreach (MonumentInfo monument in TerrainMeta.Path.Monuments) { if (monument.HasNavmesh) { yield return(monument.StartCoroutine(monument.GetMonumentNavMesh().UpdateNavMeshAndWait())); } } if ((bool)TerrainMeta.Path && (bool)TerrainMeta.Path.DungeonRoot) { DungeonNavmesh dungeonNavmesh = TerrainMeta.Path.DungeonRoot.AddComponent <DungeonNavmesh>(); dungeonNavmesh.NavMeshCollectGeometry = NavMeshCollectGeometry.PhysicsColliders; dungeonNavmesh.LayerMask = 65537; yield return(dungeonNavmesh.StartCoroutine(dungeonNavmesh.UpdateNavMeshAndWait())); } else { Debug.LogError("Failed to find DungeonRoot, NOT generating Dungeon navmesh"); } } } GameObject gameObject = GameManager.server.CreatePrefab("assets/bundled/prefabs/system/server.prefab"); Object.DontDestroyOnLoad(gameObject); ServerMgr serverMgr = gameObject.GetComponent <ServerMgr>(); serverMgr.Initialize(doLoad, saveFileOverride, allowOutOfDateSaves); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.InitializeEntityLinks(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.InitializeEntitySupports(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.InitializeEntityConditionals(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.GetSaveCache(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); BaseGameMode.CreateGameMode(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); serverMgr.OpenConnection(); CompanionServer.Server.Initialize(); using (BenchmarkTimer.New("Boombox.LoadStations")) { BoomBox.LoadStations(); } if (ConVar.Time.pausewhileloading) { UnityEngine.Time.timeScale = timeScale; } WriteToLog("Server startup complete"); }
public static IEnumerator StartServer( bool doLoad, string saveFileOverride, bool allowOutOfDateSaves) { float timeScale = Time.get_timeScale(); if (Time.pausewhileloading) { Time.set_timeScale(0.0f); } RCon.Initialize(); BaseEntity.Query.Server = new BaseEntity.Query.EntityTree(8096f); if (Object.op_Implicit((Object)SingletonComponent <WorldSetup> .Instance)) { yield return((object)((MonoBehaviour)SingletonComponent <WorldSetup> .Instance).StartCoroutine(((WorldSetup)SingletonComponent <WorldSetup> .Instance).InitCoroutine())); } if (Object.op_Implicit((Object)SingletonComponent <DynamicNavMesh> .Instance) && ((Behaviour)SingletonComponent <DynamicNavMesh> .Instance).get_enabled() && !AiManager.nav_disable) { yield return((object)((MonoBehaviour)SingletonComponent <DynamicNavMesh> .Instance).StartCoroutine(((DynamicNavMesh)SingletonComponent <DynamicNavMesh> .Instance).UpdateNavMeshAndWait())); } if (Object.op_Implicit((Object)SingletonComponent <AiManager> .Instance) && ((Behaviour)SingletonComponent <AiManager> .Instance).get_enabled()) { ((AiManager)SingletonComponent <AiManager> .Instance).Initialize(); if (!AiManager.nav_disable && AI.npc_enable && Object.op_Inequality((Object)TerrainMeta.Path, (Object)null)) { foreach (MonumentInfo monument in TerrainMeta.Path.Monuments) { if (monument.HasNavmesh) { yield return((object)monument.StartCoroutine(monument.GetMonumentNavMesh().UpdateNavMeshAndWait())); } } } } GameObject prefab = GameManager.server.CreatePrefab("assets/bundled/prefabs/system/server.prefab", true); Object.DontDestroyOnLoad((Object)prefab); ServerMgr serverMgr = (ServerMgr)prefab.GetComponent <ServerMgr>(); serverMgr.Initialize(doLoad, saveFileOverride, allowOutOfDateSaves, false); yield return((object)CoroutineEx.waitForSecondsRealtime(0.1f)); ColliderGrid.RefreshAll(); yield return((object)CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.InitializeEntityLinks(); yield return((object)CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.InitializeEntitySupports(); yield return((object)CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.InitializeEntityConditionals(); yield return((object)CoroutineEx.waitForSecondsRealtime(0.1f)); ColliderGrid.RefreshAll(); yield return((object)CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.GetSaveCache(); yield return((object)CoroutineEx.waitForSecondsRealtime(0.1f)); serverMgr.OpenConnection(); if (Time.pausewhileloading) { Time.set_timeScale(timeScale); } Bootstrap.WriteToLog("Server startup complete"); }
public static IEnumerator StartServer(bool doLoad, string saveFileOverride, bool allowOutOfDateSaves) { float single = UnityEngine.Time.timeScale; if (ConVar.Time.pausewhileloading) { UnityEngine.Time.timeScale = 0f; } RCon.Initialize(); BaseEntity.Query.Server = new BaseEntity.Query.EntityTree(8096f); if (SingletonComponent <WorldSetup> .Instance) { yield return(SingletonComponent <WorldSetup> .Instance.StartCoroutine(SingletonComponent <WorldSetup> .Instance.InitCoroutine())); } if (SingletonComponent <DynamicNavMesh> .Instance && SingletonComponent <DynamicNavMesh> .Instance.enabled && !AiManager.nav_disable) { yield return(SingletonComponent <DynamicNavMesh> .Instance.StartCoroutine(SingletonComponent <DynamicNavMesh> .Instance.UpdateNavMeshAndWait())); } if (SingletonComponent <AiManager> .Instance && SingletonComponent <AiManager> .Instance.enabled) { SingletonComponent <AiManager> .Instance.Initialize(); if (!AiManager.nav_disable && AI.npc_enable && TerrainMeta.Path != null) { foreach (MonumentInfo monument in TerrainMeta.Path.Monuments) { if (!monument.HasNavmesh) { continue; } yield return(monument.StartCoroutine(monument.GetMonumentNavMesh().UpdateNavMeshAndWait())); } } } GameObject gameObject = GameManager.server.CreatePrefab("assets/bundled/prefabs/system/server.prefab", true); UnityEngine.Object.DontDestroyOnLoad(gameObject); ServerMgr component = gameObject.GetComponent <ServerMgr>(); component.Initialize(doLoad, saveFileOverride, allowOutOfDateSaves, false); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); ColliderGrid.RefreshAll(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.InitializeEntityLinks(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.InitializeEntitySupports(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.InitializeEntityConditionals(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); ColliderGrid.RefreshAll(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); SaveRestore.GetSaveCache(); yield return(CoroutineEx.waitForSecondsRealtime(0.1f)); component.OpenConnection(); if (ConVar.Time.pausewhileloading) { UnityEngine.Time.timeScale = single; } Bootstrap.WriteToLog("Server startup complete"); }