Esempio n. 1
0
 public void Replace(List <EditorStoryboardLayer> oldLayers, List <EditorStoryboardLayer> newLayers)
 {
     oldLayers = new List <EditorStoryboardLayer>(oldLayers);
     foreach (var newLayer in newLayers)
     {
         var oldLayer = oldLayers.Find(l => l.Identifier == newLayer.Identifier);
         if (oldLayer != null)
         {
             var index = layers.IndexOf(oldLayer);
             if (index != -1)
             {
                 newLayer.CopySettings(layers[index], copyGuid: true);
                 layers[index] = newLayer;
             }
             oldLayers.Remove(oldLayer);
         }
         else
         {
             layers.Insert(findLayerIndex(newLayer), newLayer);
         }
         newLayer.OnChanged += layer_OnChanged;
     }
     foreach (var oldLayer in oldLayers)
     {
         oldLayer.OnChanged -= layer_OnChanged;
         layers.Remove(oldLayer);
     }
     OnLayersChanged?.Invoke(this, EventArgs.Empty);
 }
Esempio n. 2
0
        public bool MoveToBottom(EditorStoryboardLayer layer)
        {
            var index = layers.IndexOf(layer);

            if (index != -1)
            {
                if (index == layers.Count - 1)
                {
                    return(false);
                }
                while (index < layers.Count - 1 && layer.CompareTo(layers[index + 1]) == 0)
                {
                    var otherLayer = layers[index + 1];
                    layers[index + 1] = layer;
                    layers[index]     = otherLayer;
                    ++index;
                }
            }
            else
            {
                throw new InvalidOperationException($"Cannot move layer '{layer.Name}'");
            }
            OnLayersChanged?.Invoke(this, EventArgs.Empty);
            return(true);
        }
Esempio n. 3
0
 public void Remove(EditorStoryboardLayer layer)
 {
     if (layers.Remove(layer))
     {
         layer.OnChanged -= layer_OnChanged;
         OnLayersChanged?.Invoke(this, EventArgs.Empty);
     }
 }
Esempio n. 4
0
        public void Replace(EditorStoryboardLayer oldLayer, EditorStoryboardLayer newLayer)
        {
            var index = layers.IndexOf(oldLayer);

            if (index != -1)
            {
                newLayer.CopySettings(oldLayer, copyGuid: true);
                newLayer.OnChanged += layer_OnChanged;
                oldLayer.OnChanged -= layer_OnChanged;
                layers[index]       = newLayer;
            }
            else
            {
                throw new InvalidOperationException($"Cannot replace layer '{oldLayer.Name}' with '{newLayer.Name}', old layer not found");
            }
            OnLayersChanged?.Invoke(this, EventArgs.Empty);
        }
Esempio n. 5
0
        public void Replace(EditorStoryboardLayer oldLayer, List <EditorStoryboardLayer> newLayers)
        {
            var index = layers.IndexOf(oldLayer);

            if (index != -1)
            {
                foreach (var newLayer in newLayers)
                {
                    newLayer.CopySettings(oldLayer, copyGuid: false);
                    newLayer.OnChanged += layer_OnChanged;
                }
                layers.InsertRange(index, newLayers);

                oldLayer.OnChanged -= layer_OnChanged;
                layers.Remove(oldLayer);
            }
            else
            {
                throw new InvalidOperationException($"Cannot replace layer '{oldLayer.Name}' with multiple layers, old layer not found");
            }
            OnLayersChanged?.Invoke(this, EventArgs.Empty);
        }
Esempio n. 6
0
        private void sortLayer(EditorStoryboardLayer layer)
        {
            var initialIndex = layers.IndexOf(layer);

            if (initialIndex < 0)
            {
                new InvalidOperationException($"Layer '{layer.Name}' cannot be found");
            }

            var newIndex = initialIndex;

            while (newIndex > 0 && layer.CompareTo(layers[newIndex - 1]) < 0)
            {
                newIndex--;
            }
            while (newIndex < layers.Count - 1 && layer.CompareTo(layers[newIndex + 1]) > 0)
            {
                newIndex++;
            }

            layers.Move(initialIndex, newIndex);
            OnLayersChanged?.Invoke(this, EventArgs.Empty);
        }
Esempio n. 7
0
 public void Add(EditorStoryboardLayer layer)
 {
     layers.Insert(findLayerIndex(layer), layer);
     layer.OnChanged += layer_OnChanged;
     OnLayersChanged?.Invoke(this, EventArgs.Empty);
 }