public void AddWorld(World world, ProvenceDelegate <WorldRegistrationComplete> regEvent = null) { if (!worlds.ContainsKey(world.id)) { worlds[world.id] = world; if (regEvent != null) { world.eventManager.AddListener <WorldRegistrationComplete>(regEvent, 10); } if (UnityHelpers.IsCurrentScene(world.worldName)) { world.Initialize(); } else { if (UnityHelpers.SceneExists(world.worldName)) { //load async then init. UnityHelpers.LoadSceneAsync(world.worldName, () => { Debug.Log("async load: " + world.worldName); world.Initialize(); }); } else { world.Initialize(); } } } }
public void RemoveWorld(World world) { if (worlds.ContainsKey(world.id)) { worlds.Remove(world.id); world.Destroy(); UnityHelpers.UnloadSceneAsync(world.worldName); } }
public void RemoveWorld(string id) { World world = worlds.Values.Where(w => w.id == id).First(); if (world != null) { worlds.Remove(id); world.Destroy(); UnityHelpers.UnloadSceneAsync(world.worldName); } }
public void Save() { if (!managerID.Equals("") && worlds != null) { foreach (World world in worlds.Values) { if (world.id == managerID) { world.worldName = UnityHelpers.GetSceneName(); } Helpers.SerializeAndSaveToFile <World>(world, ProvenceCollection <AssetData> .dataPath + "/Worlds/", world.id, ".meglo"); } } }