void DestroyECS() { if (space != null) { space.GetOrCreateSystem <VoxelSystemGroup>().Clear(); space.Dispose(); space = null; EditorApplication.update -= UpdateEditorWindow; Repaint(); } }
public void Dispose() { m_SourceEntityManager = null; if (m_ShadowWorld != null && m_ShadowWorld.IsCreated) { m_ShadowWorld.Dispose(); } m_BlobAssetCache.Dispose(); m_ShadowWorld = null; m_ShadowEntityManager = null; m_EntityQueryDesc = null; }
public void Dispose() { if (space != null) { try { space.Dispose(); } catch (ArgumentException e) { Debug.LogWarning(e.ToString()); } space = null; } }
public void OnDisable() { Debug.Log("Removing Update Method from MapMaker."); EditorApplication.update -= UpdateEditorWindow; //ClearMap(); //systemsManager.Clear(); if (space != null) { if (space.IsCreated) { space.GetOrCreateSystem <VoxelSystemGroup>().Clear(); space.Dispose(); } space = null; //EditorApplication.update -= UpdateEditorWindow; //Repaint(); } }
public void Dispose() { if (m_ShadowWorld != null && m_ShadowWorld.IsCreated) { m_ShadowWorld.Dispose(); } m_ShadowWorld = null; m_ShadowWorldEntityQuery = null; if (m_SrcWorld != null && m_SrcWorld.IsCreated) { m_SrcWorldEntityQuery.Dispose(); } m_SrcWorldEntityQuery = null; m_SrcWorld = null; m_TypeInfoStream.Dispose(); }
public static void Initialize(string worldName, bool editorWorld) { // Register hybrid injection hooks #pragma warning disable 0618 InjectionHookSupport.RegisterHook(new GameObjectArrayInjectionHook()); InjectionHookSupport.RegisterHook(new TransformAccessArrayInjectionHook()); InjectionHookSupport.RegisterHook(new ComponentArrayInjectionHook()); #pragma warning restore 0618 PlayerLoopManager.RegisterDomainUnload(DomainUnloadShutdown, 10000); var world = new World(worldName); World.Active = world; var systems = GetAllSystems(WorldSystemFilterFlags.Default); if (systems == null) { world.Dispose(); if (World.Active == world) { World.Active = null; } return; } // create presentation system and simulation system InitializationSystemGroup initializationSystemGroup = world.GetOrCreateManager <InitializationSystemGroup>(); SimulationSystemGroup simulationSystemGroup = world.GetOrCreateManager <SimulationSystemGroup>(); PresentationSystemGroup presentationSystemGroup = world.GetOrCreateManager <PresentationSystemGroup>(); // Add systems to their groups, based on the [UpdateInGroup] attribute. foreach (var type in systems) { // Skip the built-in root-level systems if (type == typeof(InitializationSystemGroup) || type == typeof(SimulationSystemGroup) || type == typeof(PresentationSystemGroup)) { continue; } if (editorWorld) { if (Attribute.IsDefined(type, typeof(ExecuteInEditMode))) { Debug.LogError( $"{type} is decorated with {typeof(ExecuteInEditMode)}. Support for this attribute will be deprecated. Please use {typeof(ExecuteAlways)} instead."); } if (!Attribute.IsDefined(type, typeof(ExecuteAlways))) { continue; } } var groups = type.GetCustomAttributes(typeof(UpdateInGroupAttribute), true); if (groups.Length == 0) { simulationSystemGroup.AddSystemToUpdateList(GetOrCreateManagerAndLogException(world, type) as ComponentSystemBase); } foreach (var g in groups) { var group = g as UpdateInGroupAttribute; if (group == null) { continue; } if (!(typeof(ComponentSystemGroup)).IsAssignableFrom(group.GroupType)) { Debug.LogError($"Invalid [UpdateInGroup] attribute for {type}: {group.GroupType} must be derived from ComponentSystemGroup."); continue; } var groupMgr = GetOrCreateManagerAndLogException(world, group.GroupType); if (groupMgr == null) { Debug.LogWarning( $"Skipping creation of {type} due to errors creating the group {group.GroupType}. Fix these errors before continuing."); continue; } var groupSys = groupMgr as ComponentSystemGroup; if (groupSys != null) { groupSys.AddSystemToUpdateList(GetOrCreateManagerAndLogException(world, type) as ComponentSystemBase); } } } // Update player loop initializationSystemGroup.SortSystemUpdateList(); simulationSystemGroup.SortSystemUpdateList(); presentationSystemGroup.SortSystemUpdateList(); ScriptBehaviourUpdateOrder.UpdatePlayerLoop(world); }