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); }
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); }
public void Remove(EditorStoryboardLayer layer) { if (layers.Remove(layer)) { layer.OnChanged -= layer_OnChanged; OnLayersChanged?.Invoke(this, EventArgs.Empty); } }
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); }
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); }
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); }
public void Add(EditorStoryboardLayer layer) { layers.Insert(findLayerIndex(layer), layer); layer.OnChanged += layer_OnChanged; OnLayersChanged?.Invoke(this, EventArgs.Empty); }