internal void SaveRenderElement()
        {
            RenderElementEntity.StartSegmentLength   = StartSegmentLength;
            RenderElementEntity.MainSegmentLength    = MainSegmentLength;
            RenderElementEntity.EndSegmentLength     = EndSegmentLength;
            RenderElementEntity.DisplayContinuously  = DisplayContinuously;
            RenderElementEntity.AlwaysFinishTimeline = AlwaysFinishTimeline;

            RenderElementEntity.LayerEffects.Clear();
            foreach (BaseLayerEffect layerEffect in LayerEffects)
            {
                LayerEffectEntity layerEffectEntity = new LayerEffectEntity
                {
                    Id             = layerEffect.EntityId,
                    PluginGuid     = layerEffect.Descriptor.PlaceholderFor ?? layerEffect.PluginInfo.Guid,
                    EffectType     = layerEffect.GetEffectTypeName(),
                    Name           = layerEffect.Name,
                    Enabled        = layerEffect.Enabled,
                    HasBeenRenamed = layerEffect.HasBeenRenamed,
                    Order          = layerEffect.Order
                };
                RenderElementEntity.LayerEffects.Add(layerEffectEntity);
                layerEffect.BaseProperties.ApplyToEntity();
            }

            // Conditions
            RenderElementEntity.DisplayCondition = DisplayCondition?.Entity;
            DisplayCondition?.Save();
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        private void CreatePlaceHolderInstance(RenderProfileElement renderElement, LayerEffectEntity entity)
        {
            PlaceholderLayerEffect effect = new PlaceholderLayerEffect(entity, PlaceholderFor.Value)
            {
                ProfileElement = renderElement, Descriptor = this
            };

            effect.Initialize();
            renderElement.ActivateLayerEffect(effect);
        }
        internal PlaceholderLayerEffect(LayerEffectEntity originalEntity, string placeholderFor)
        {
            OriginalEntity = originalEntity;
            PlaceholderFor = placeholderFor;

            EntityId       = OriginalEntity.Id;
            Order          = OriginalEntity.Order;
            Name           = OriginalEntity.Name;
            Suspended      = OriginalEntity.Suspended;
            HasBeenRenamed = OriginalEntity.HasBeenRenamed;
        }
示例#6
0
        internal PlaceholderLayerEffect(LayerEffectEntity originalEntity, Guid placeholderFor)
        {
            OriginalEntity = originalEntity;
            PlaceholderFor = placeholderFor;

            EntityId       = OriginalEntity.Id;
            Order          = OriginalEntity.Order;
            Name           = OriginalEntity.Name;
            Enabled        = OriginalEntity.Enabled;
            HasBeenRenamed = OriginalEntity.HasBeenRenamed;
        }
示例#7
0
        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);
        }
    }