private void AssertModuleParam(IGameProjectModule module)
 {
     if (module == null)
     {
         throw new ArgumentNullException("module");
     }
 }
        public bool RemoveModule(IGameProjectModule module)
        {
            AssertModuleParam(module);

            List <IGameProjectModule> moduleList = GetModuleList(module.Type);

            return(moduleList != null && moduleList.Remove(module));
        }
        public bool RegisterModule(IGameProjectModule module)
        {
            AssertModuleParam(module);

            List <IGameProjectModule> moduleList;

            if (!_submodulesSet.TryGetValue(module.Type, out moduleList))
            {
                moduleList = new List <IGameProjectModule>();
                _submodulesSet.Add(module.Type, moduleList);
            }

            if (!moduleList.Contains(module))
            {
                moduleList.Add(module);
                return(true);
            }

            return(false);
        }