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}");
                }
            }
        }
Exemple #3
0
 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);
         }
     }
 }