public void AddModule(AssetModule module) { if (_modules.ContainsKey(module.Name)) { throw new AssetException($"Cannot add module with duplicate name {module.Name}."); } else { _modules[module.Name] = module; _modulesList.Add(module); } }
void LoadModule(AssetModule module) { foreach (var depName in module.dependencies) { if (_modules.ContainsKey(depName)) { var depMod = _modules[depName]; if (!depMod.IsLoaded) { LoadModule(depMod); } } else { throw new AssetException($"Asset module dependency unsatisfied! {module.Name} depends on {depName} (missing)"); } } module.LoadAssets(this); Logger.Info(this, $"Loaded asset module {module.Name}"); }
public AssetInfo(string name) { Module = AssetModule.CurrentLoadingModule ?? throw new AssetException($"Cannot create asset info {GetType().Name}: No module being loaded"); Name = name; QualifiedName = Module.Name + ":" + Name; }
public AssetModuleException(AssetModule module, string message) : base($"[{module.Name}] {message}") { Module = module; }