Core - Renamed LayerService to RenderElementService

Display conditions - Implemented persistent storage
This commit is contained in:
SpoinkyNL committed 2020-07-10 23:00:35 +02:00
1 parent 0dc77c0b6e
commit f7453331bf
32 files changed
+209 -111

No files matched your search

@@ -155,6 +155,11 @@ namespace Artemis.Core.Services
}
}
public DisplayConditionOperator GetConditionOperator(Guid operatorPluginGuid, string operatorType)
{
return RegisteredConditionOperators.FirstOrDefault(o => o.PluginInfo.Guid == operatorPluginGuid && o.GetType().Name == operatorType);
}
private void RegisterBuiltInConditionOperators()
{
RegisterConditionOperator(Constants.CorePluginInfo, new EqualsConditionOperator());
@@ -58,5 +58,6 @@ namespace Artemis.Core.Services.Interfaces
void RemoveConditionOperator([NotNull] DisplayConditionOperator displayConditionOperator);
List<DisplayConditionOperator> GetCompatibleConditionOperators(Type type);
DisplayConditionOperator GetConditionOperator(Guid operatorPluginGuid, string operatorType);
}
}
@@ -6,7 +6,7 @@ using Artemis.Core.Plugins.LayerEffect.Abstract;
namespace Artemis.Core.Services.Interfaces
{
public interface ILayerService : IArtemisService
public interface IRenderElementService : IArtemisService
{
/// <summary>
/// Creates a new layer
@@ -55,5 +55,7 @@ namespace Artemis.Core.Services.Interfaces
BaseLayerEffect AddLayerEffect(RenderProfileElement renderProfileElement, LayerEffectDescriptor layerEffectDescriptor);
void RemoveLayerEffect(BaseLayerEffect layerEffect);
void InstantiateDisplayConditions(RenderProfileElement renderElement);
}
}
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using Artemis.Core.Exceptions;
using Artemis.Core.Models.Profile;
using Artemis.Core.Models.Profile.Conditions;
using Artemis.Core.Plugins.Abstract;
using Artemis.Core.Plugins.LayerBrush.Abstract;
using Artemis.Core.Plugins.LayerEffect;
@@ -14,17 +15,19 @@ using Serilog;
namespace Artemis.Core.Services
{
public class LayerService : ILayerService
public class RenderElementService : IRenderElementService
{
private readonly IKernel _kernel;
private readonly ILogger _logger;
private readonly IPluginService _pluginService;
private readonly IDataModelService _dataModelService;
public LayerService(IKernel kernel, ILogger logger, IPluginService pluginService, IDataModelService dataModelService)
public RenderElementService(IKernel kernel, ILogger logger, IPluginService pluginService, IDataModelService dataModelService)
{
_kernel = kernel;
_logger = logger;
_pluginService = pluginService;
_dataModelService = dataModelService;
}
public Layer CreateLayer(Profile profile, ProfileElement parent, string name)
@@ -39,6 +42,7 @@ namespace Artemis.Core.Services
// With the properties loaded, the layer brush and effect can be instantiated
InstantiateLayerBrush(layer);
InstantiateLayerEffects(layer);
InstantiateDisplayConditions(layer);
return layer;
}
@@ -112,7 +116,7 @@ namespace Artemis.Core.Services
{
var layerEffectProviders = _pluginService.GetPluginsOfType<LayerEffectProvider>();
var descriptors = layerEffectProviders.SelectMany(l => l.LayerEffectDescriptors).ToList();
var entities = renderElement.EffectsEntity.LayerEffects.OrderByDescending(e => e.Order).ToList();
var entities = renderElement.RenderElementEntity.LayerEffects.OrderByDescending(e => e.Order).ToList();
foreach (var layerEffectEntity in entities)
{
@@ -143,10 +147,15 @@ namespace Artemis.Core.Services
_logger.Debug("Instantiated layer effect with root path {rootPath}", effect.PropertyRootPath);
}
}
public void InstantiateDisplayConditions(RenderProfileElement renderElement)
{
var displayCondition = renderElement.RenderElementEntity.RootDisplayCondition != null
? new DisplayConditionGroup(null, renderElement.RenderElementEntity.RootDisplayCondition)
: new DisplayConditionGroup(null);
displayCondition.Initialize(_dataModelService);
renderElement.DisplayConditionGroup = displayCondition;
}
}
}
@@ -19,18 +19,18 @@ namespace Artemis.Core.Services.Storage
/// </summary>
public class ProfileService : IProfileService
{
private readonly ILayerService _layerService;
private readonly IRenderElementService _renderElementService;
private readonly ILogger _logger;
private readonly IPluginService _pluginService;
private readonly IProfileRepository _profileRepository;
private readonly ISurfaceService _surfaceService;
internal ProfileService(ILogger logger, IPluginService pluginService, ISurfaceService surfaceService, ILayerService layerService, IProfileRepository profileRepository)
internal ProfileService(ILogger logger, IPluginService pluginService, ISurfaceService surfaceService, IRenderElementService renderElementService, IProfileRepository profileRepository)
{
_logger = logger;
_pluginService = pluginService;
_surfaceService = surfaceService;
_layerService = layerService;
_renderElementService = renderElementService;
_profileRepository = profileRepository;
_surfaceService.ActiveSurfaceConfigurationSelected += OnActiveSurfaceConfigurationSelected;
@@ -170,9 +170,9 @@ namespace Artemis.Core.Services.Storage
foreach (var layer in profile.GetAllLayers())
{
if (!layer.General.PropertiesInitialized)
layer.General.InitializeProperties(_layerService, layer, "General.");
layer.General.InitializeProperties(_renderElementService, layer, "General.");
if (!layer.Transform.PropertiesInitialized)
layer.Transform.InitializeProperties(_layerService, layer, "Transform.");
layer.Transform.InitializeProperties(_renderElementService, layer, "Transform.");
}
}
@@ -181,11 +181,13 @@ namespace Artemis.Core.Services.Storage
foreach (var folder in profile.GetAllFolders())
{
// Instantiate effects
_layerService.InstantiateLayerEffects(folder);
_renderElementService.InstantiateLayerEffects(folder);
// Remove effects of plugins that are disabled
var disabledEffects = new List<BaseLayerEffect>(folder.LayerEffects.Where(layerLayerEffect => !layerLayerEffect.PluginInfo.Enabled));
foreach (var layerLayerEffect in disabledEffects)
_layerService.RemoveLayerEffect(layerLayerEffect);
_renderElementService.RemoveLayerEffect(layerLayerEffect);
_renderElementService.InstantiateDisplayConditions(folder);
}
}
@@ -195,17 +197,19 @@ namespace Artemis.Core.Services.Storage
{
// Instantiate brush
if (layer.LayerBrush == null)
_layerService.InstantiateLayerBrush(layer);
_renderElementService.InstantiateLayerBrush(layer);
// Remove brush if plugin is disabled
else if (!layer.LayerBrush.PluginInfo.Enabled)
_layerService.DeactivateLayerBrush(layer);
_renderElementService.DeactivateLayerBrush(layer);
// Instantiate effects
_layerService.InstantiateLayerEffects(layer);
_renderElementService.InstantiateLayerEffects(layer);
// Remove effects of plugins that are disabled
var disabledEffects = new List<BaseLayerEffect>(layer.LayerEffects.Where(layerLayerEffect => !layerLayerEffect.PluginInfo.Enabled));
foreach (var layerLayerEffect in disabledEffects)
_layerService.RemoveLayerEffect(layerLayerEffect);
_renderElementService.RemoveLayerEffect(layerLayerEffect);
_renderElementService.InstantiateDisplayConditions(layer);
}
}