/// <inheritdoc /> protected BaseLayerEffect() { // These are set right after construction to keep the constructor of inherited classes clean _profileElement = null !; _descriptor = null !; _name = null !; }
/// <summary> /// Creates an instance of the described effect and applies it to the render element /// </summary> internal void CreateInstance(RenderProfileElement renderElement, LayerEffectEntity entity) { // Skip effects already on the element if (renderElement.LayerEffects.Any(e => e.EntityId == entity.Id)) { return; } if (PlaceholderFor != null) { CreatePlaceHolderInstance(renderElement, entity); return; } BaseLayerEffect effect = (BaseLayerEffect)LayerEffectProvider.PluginInfo.Kernel.Get(LayerEffectType); effect.ProfileElement = renderElement; effect.EntityId = entity.Id; effect.Order = entity.Order; effect.Name = entity.Name; effect.Enabled = entity.Enabled; effect.Descriptor = this; effect.Initialize(); effect.Update(0); renderElement.ActivateLayerEffect(effect); }
public List <ILayerPropertyKeyframe> Paste(RenderProfileElement target, TimeSpan pastePosition) { if (target == null) { throw new ArgumentNullException(nameof(target)); } if (HasBeenPasted) { throw new ArtemisUIException("Clipboard model can only be pasted once"); } List <ILayerPropertyKeyframe> results = new(); if (!ClipboardModels.Any()) { return(results); } // Determine the offset by looking at the position of the first keyframe, start pasting from there TimeSpan offset = pastePosition - ClipboardModels.First().KeyframeEntity.Position; List <ILayerProperty> properties = target.GetAllLayerProperties(); foreach (KeyframeClipboardModel clipboardModel in ClipboardModels) { ILayerPropertyKeyframe layerPropertyKeyframe = clipboardModel.Paste(properties, offset); if (layerPropertyKeyframe != null) { results.Add(layerPropertyKeyframe); } } HasBeenPasted = true; return(results); }
/// <summary> /// Creates an instance of the described effect and applies it to the render element /// </summary> internal void CreateInstance(RenderProfileElement renderElement, LayerEffectEntity entity) { // Skip effects already on the element if (renderElement.LayerEffects.Any(e => e.EntityId == entity.Id)) { return; } if (PlaceholderFor != null) { CreatePlaceHolderInstance(renderElement, entity); return; } if (LayerEffectType == null) { throw new ArtemisCoreException("Cannot create an instance of a layer effect because this descriptor is not a placeholder but is still missing its LayerEffectType"); } BaseLayerEffect effect = (BaseLayerEffect)Provider.Plugin.Kernel !.Get(LayerEffectType); effect.ProfileElement = renderElement; effect.EntityId = entity.Id; effect.Order = entity.Order; effect.Name = entity.Name; effect.Enabled = entity.Enabled; effect.Descriptor = this; effect.Initialize(); effect.Update(0); renderElement.ActivateLayerEffect(effect); }
private void CreatePlaceHolderInstance(RenderProfileElement renderElement, LayerEffectEntity entity) { PlaceholderLayerEffect effect = new PlaceholderLayerEffect(entity, PlaceholderFor.Value) { ProfileElement = renderElement, Descriptor = this }; effect.Initialize(); renderElement.ActivateLayerEffect(effect); }
private void CreatePlaceHolderInstance(RenderProfileElement renderElement, LayerEffectEntity entity) { if (PlaceholderFor == null) { throw new ArtemisCoreException("Cannot create a placeholder instance using a layer effect descriptor that is not a placeholder for anything"); } PlaceholderLayerEffect effect = new(entity, PlaceholderFor) { ProfileElement = renderElement, Descriptor = this }; effect.Initialize(); renderElement.ActivateLayerEffect(effect); } }
public RenderProfileElementEventArgs(RenderProfileElement renderProfileElement) { RenderProfileElement = renderProfileElement; }
public RenderProfileElementEventArgs(RenderProfileElement renderProfileElement, RenderProfileElement previousRenderProfileElement) { RenderProfileElement = renderProfileElement; PreviousRenderProfileElement = previousRenderProfileElement; }