private void SetToolSettings() { foreach (var runningTool in Tools) { runningTool.Dispose(); } foreach (var toolName in Settings.Tools) { var plugin = new PluginReference(toolName); var type = plugin.GetTypeReference <ITool>(); var tool = plugin.Construct <ITool>(); foreach (var property in type.GetProperties()) { if (property.GetCustomAttribute <PropertyAttribute>(false) != null && Settings.PluginSettings.TryGetValue(type.FullName + "." + property.Name, out var strValue)) { var value = Convert.ChangeType(strValue, property.PropertyType); property.SetValue(tool, value); } } if (tool.Initialize()) { Tools.Add(tool); } else { Log.Write("Tool", $"Failed to initialize {plugin.Name} tool.", LogLevel.Error); } } }
private void SetInterpolatorSettings() { foreach (var interpolator in Driver.Interpolators) { interpolator.Dispose(); } Driver.Interpolators.Clear(); if (Settings.Interpolators != null) { foreach (var interpolatorName in Settings.Interpolators) { var plugin = new PluginReference(interpolatorName); var type = plugin.GetTypeReference <Interpolator>(); var interpolator = plugin.Construct <Interpolator>(Platform.Timer); foreach (var property in type.GetProperties()) { if (property.GetCustomAttribute <PropertyAttribute>(false) != null && Settings.PluginSettings.TryGetValue(type.FullName + "." + property.Name, out var strValue)) { var value = Convert.ChangeType(strValue, property.PropertyType); property.SetValue(interpolator, value); } } Driver.Interpolators.Add(interpolator); Log.Write("Settings", $"Interpolator: {interpolator}"); } } }
private void UpdateSelectedStore(PluginReference reference) { if (CollectionReference.TryGetTarget(out PluginSettingStoreCollection storeCollection)) { if (storeCollection.FirstOrDefault(store => store.Path == reference.Path) is PluginSettingStore store) { settingStoreEditor.Refresh(store); } else { var newStore = new PluginSettingStore(reference.GetTypeReference <TSource>(), false); storeCollection.Add(newStore); settingStoreEditor.Refresh(newStore); } } }