public void EnableModule(POModule m)
 {
     m.enabled = true;
     if (!enabledModules.Contains(m))
     {
         enabledModules.Add(m);
     }
     try { m.OnModuleEnabled(logic); }
     catch (Exception e) { Debug.LogError("[ProceduralObjects] Error inside module OnModuleEnabled() method!\n" + e); }
 }
 public void DisableModule(POModule m)
 {
     m.enabled = false;
     if (enabledModules.Contains(m))
     {
         enabledModules.Remove(m);
     }
     try { m.OnModuleDisabled(logic); }
     catch (Exception e) { Debug.LogError("[ProceduralObjects] Error inside module OnModuleDisabled() method!\n" + e); }
 }
 public void CloseWindow(POModule m)
 {
     if (!openedUIModules.Contains(m))
     {
         return;
     }
     try { m.OnModuleWindowClose(logic); }
     catch (Exception e) { Debug.LogError("[ProceduralObjects] Error inside module OnModuleWindowClose() method!\n" + e); }
     openedUIModules.Remove(m);
 }
        public POModule AddModule(POModuleType type, ProceduralObject obj)
        {
            POModule module = (POModule)Activator.CreateInstance(type.ModuleType);

            module.ModuleType   = type;
            module.parentObject = obj;
            obj.m_modules.Add(module);
            module.enabled = true;
            modules.Add(module);
            enabledModules.Add(module);
            try { module.OnModuleCreated(logic); }
            catch (Exception e) { Debug.LogError("[ProceduralObjects] Error inside module OnModuleCreated() method!\n" + e); }
            return(module);
        }
 public void RemoveModule(POModule m)
 {
     if (!modules.Contains(m))
     {
         return;
     }
     try { m.OnModuleRemoved(logic); }
     catch (Exception e) { Debug.LogError("[ProceduralObjects] Error inside module OnModuleRemoved() method!\n" + e); }
     if (openedUIModules.Contains(m))
     {
         CloseWindow(m);
     }
     if (m.parentObject.m_modules.Contains(m))
     {
         m.parentObject.m_modules.Remove(m);
     }
     modules.Remove(m);
     if (enabledModules.Contains(m))
     {
         enabledModules.Remove(m);
     }
 }