public void BuildDescriptors(string rootDirectory) { RootDirectory = rootDirectory; PluginDescriptors.Clear(); LogSystem?.Print("Scanning for plugins in " + RootDirectory); if (!Directory.Exists(RootDirectory)) { return; } var directories = Directory.GetDirectories(RootDirectory); foreach (string dir in directories) { var descriptor = FindDescriptorByDirectory(dir); if (descriptor != null) { continue; } try { descriptor = new SharpConfigDescriptor(dir); PluginDescriptors.Add(descriptor); } catch (Exception e) { LogSystem?.PrintWarning(e.ToString()); } } }
public T GetData <T>() where T : IComponentData { var hash = typeof(T).GetHashCode(); if (_data.ContainsKey(hash)) { return((T)_data[hash]); } else { LogSystem.Print(AlertLevel.Error, "Actor", $"Not found {typeof(T).Name} component data"); } return(default(T)); }
private void OnChangeActiveStateComponent(ComponentActor beh, bool state) { var hash = beh.GetHashCode(); if (_components.ContainsKey(hash)) { var data = _components[hash]; if (state) { if (data.tick != null && !_ticks.Contains(data.tick)) { _ticks.Add(data.tick); _countTicks++; } if (data.tickFixed != null && !_ticksFixed.Contains(data.tickFixed)) { _ticksFixed.Add(data.tickFixed); _countTicksFixed++; } if (data.tickLate != null && !_ticksLate.Contains(data.tickLate)) { _ticksLate.Add(data.tickLate); _countTicksLate++; } } else { if (data.tick != null) { _ticks.Remove(data.tick); _countTicks--; } if (data.tickFixed != null) { _ticksFixed.Remove(data.tickFixed); _countTicksFixed--; } if (data.tickLate != null) { _ticksLate.Remove(data.tickLate); _countTicksLate--; } } } else { LogSystem.Print(AlertLevel.Error, "System", $"Cell for {beh.GetType().Name}:{hash} not found"); } }