private void Project_ElementCollectionChanged(object sender, ElementCollectionChangedEventArgs e) { if (e.Action == System.ComponentModel.CollectionChangeAction.Remove) { int count = _SelectedElements.RemoveAll(x => e.RemovedElements.Contains(x)); if (count > 0) { SelectionChanged?.Invoke(this, EventArgs.Empty); } } else { InitializeElementExtensions(); } ElementCollectionChanged?.Invoke(this, e); UndoRedoManager.ProcessProjectElementsChanged(e); if (IsExecutingUndoRedo || IsExecutingBatchChanges) { ElementsChangedWhilePerformingChanges = true; } else { ElementsChanged?.Invoke(this, EventArgs.Empty); } }
protected override void MoveElementSelection(int insertIndex, int[] selectedIds) { int originalInsert = insertIndex; foreach (int selectedElement in selectedIds) { if (selectedElement < originalInsert) { insertIndex -= 1; } } for (int i = selectedIds.Length - 1; i > -1; i--) { elements.MoveArrayElement(selectedIds[i], ElementCount - 1); selectedIds[i] = ElementCount - selectedIds.Length + i; } for (int i = 0; i < selectedIds.Length; i++) { elements.MoveArrayElement(selectedIds[i], insertIndex); selectedIds[i] = insertIndex + i; } SerializedObject.ApplyModifiedProperties(); SerializedObject.Update(); SetSelection(selectedIds, TreeViewSelectionOptions.RevealAndFrame | TreeViewSelectionOptions.FireSelectionChanged); ReloadTree(); ElementsChanged?.Invoke(); }
protected override void RemoveElementSelection() { List <int> selection = new List <int> (Selection); // Sort elements by descending if (selection.Count > 1) { selection.Sort((a, b) => - 1 * a.CompareTo(b)); } foreach (int id in selection) { SerializedProperty elementProperty = elements.GetArrayElementAtIndex(id); if (elementProperty.propertyType == SerializedPropertyType.ObjectReference) { if (elementProperty.objectReferenceValue != null) { elementProperty.objectReferenceValue = null; } } elements.DeleteArrayElementAtIndex(id); } SerializedObject.ApplyModifiedProperties(); SerializedObject.Update(); Refresh(); SetSelection(null); ElementsChanged?.Invoke(); }
private void UndoRedoManager_EndUndoRedo(object sender, EventArgs e) { if (ElementsChangedWhilePerformingChanges) { ElementsChangedWhilePerformingChanges = false; ElementsChanged?.Invoke(this, EventArgs.Empty); } }
private void OnElementElementCompleted(RssElement e) { ElementsChanged?.Invoke(e, EventArgs.Empty); if (Elements.Where(r => r.Completed == false).FirstOrDefault() == null) { LoadCompleted?.Invoke(this, EventArgs.Empty); } }
public void EndBatchChanges() { UndoRedoManager.EndBatchChanges(); if (ElementsChangedWhilePerformingChanges) { ElementsChangedWhilePerformingChanges = false; ElementsChanged?.Invoke(this, EventArgs.Empty); } }
protected void AddElementAtIndex(int insertIndex, TElement value) { elements.Insert(insertIndex, value); ReloadTree(); SetSelection(new List <int> { insertIndex }); ElementsChanged?.Invoke(); }
protected override void MoveElementSelection(int insertIndex, int[] selectedIds) { if (insertIndex < 0) { return; } List <object> selection = new List <object> (); for (int i = 0; i < selectedIds.Length; i++) { selection.Add(elements[selectedIds[i]]); } foreach (TElement item in selection) { elements.Remove(item); } int itemsAboveInsertIndex = 0; foreach (int selectedElement in selectedIds) { if (selectedElement < insertIndex) { itemsAboveInsertIndex++; } } insertIndex -= itemsAboveInsertIndex; selection.Reverse(); foreach (TElement item in selection) { elements.Insert(insertIndex, item); } List <int> newSelection = new List <int> (); for (int i = insertIndex; i < insertIndex + selection.Count; i++) { newSelection.Add(i); } SetSelection(newSelection, TreeViewSelectionOptions.RevealAndFrame | TreeViewSelectionOptions.FireSelectionChanged); ReloadTree(); ElementsChanged?.Invoke(); }
protected void AddElementAtIndex(int insertIndex, object value) { elements.InsertArrayElementAtIndex(insertIndex); SerializedObject.ApplyModifiedProperties(); elements.GetArrayElementAtIndex(insertIndex).SetValue(value); SerializedObject.ApplyModifiedPropertiesWithoutUndo(); SerializedObject.Update(); ReloadTree(); SetSelection(new List <int> { insertIndex }); ElementsChanged?.Invoke(); }
protected override void RemoveElementSelection() { List <int> selection = new List <int> (Selection); // Sort elements by descending if (selection.Count > 1) { selection.Sort((a, b) => - 1 * a.CompareTo(b)); } foreach (int id in selection) { elements.RemoveAt(id); } Refresh(); SetSelection(null); ElementsChanged?.Invoke(); }
public void OnElementsChanged(ElementsChangedEventArgs e) { ElementsChanged?.Invoke(this, e); }
public static void HandleAction(EditorAction action, bool redo) { if (redo) { switch (action.type) { case EditorAction.ActionType.EnvironmentChanged: // set map environment settings to new settings EnvironmentChanged ec = action as EnvironmentChanged; EditorMain.instance.LoadedMap.AmbientColor = ec.newAmbientColor; EditorMain.instance.LoadedMap.BaseplateColor = ec.newBaseplateColor; EditorMain.instance.LoadedMap.SkyColor = ec.newSkyColor; EditorMain.instance.LoadedMap.BaseplateSize = ec.newBaseplateSize; EditorMain.instance.LoadedMap.SunIntensity = ec.newSunIntensity; MapBuilder.instance.UpdateEnvironment(EditorMain.instance.LoadedMap); break; case EditorAction.ActionType.ElementsAdded: // add elements ElementsAdded ea = action as ElementsAdded; if (ea.bricksAdded != null) { for (int i = 0; i < ea.bricksAdded.Length; i++) { EditorUI.instance.ImportBrick(ea.bricksAdded[i].ToBrick(false)); } } if (ea.groupsAdded != null) { for (int i = 0; i < ea.groupsAdded.Length; i++) { EditorUI.instance.ImportGroup(ea.groupsAdded[i].ToGroup(false)); } } break; case EditorAction.ActionType.ElementsChanged: // set element settings to new settings ElementsChanged elc = action as ElementsChanged; for (int i = 0; i < elc.oldBricks.Length; i++) { EditorMain.instance.SetBrickProperties(elc.newBricks[i], elc.oldBricks[i].ID); EditorUI.instance.UpdateElement(elc.oldBricks[i].ID); } EditorUI.instance.UpdateInspector(); break; case EditorAction.ActionType.ElementsRemoved: // remove elements ElementsRemoved er = action as ElementsRemoved; if (er.bricksRemoved != null) { for (int i = 0; i < er.bricksRemoved.Length; i++) { EditorUI.instance.DeleteElement(er.bricksRemoved[i].ID); } } if (er.groupsRemoved != null) { for (int i = 0; i < er.groupsRemoved.Length; i++) { EditorUI.instance.DeleteElement(er.groupsRemoved[i].ID); } } break; case EditorAction.ActionType.GenericMapChange: // load new saved map break; } } else { switch (action.type) { case EditorAction.ActionType.EnvironmentChanged: // revert map environment settings to old settings EnvironmentChanged ec = action as EnvironmentChanged; EditorMain.instance.LoadedMap.AmbientColor = ec.oldAmbientColor; EditorMain.instance.LoadedMap.BaseplateColor = ec.oldBaseplateColor; EditorMain.instance.LoadedMap.SkyColor = ec.oldSkyColor; EditorMain.instance.LoadedMap.BaseplateSize = ec.oldBaseplateSize; EditorMain.instance.LoadedMap.SunIntensity = ec.oldSunIntensity; MapBuilder.instance.UpdateEnvironment(EditorMain.instance.LoadedMap); break; case EditorAction.ActionType.ElementsAdded: // remove added elements ElementsAdded ea = action as ElementsAdded; if (ea.bricksAdded != null) { for (int i = 0; i < ea.bricksAdded.Length; i++) { EditorUI.instance.DeleteElement(ea.bricksAdded[i].ID); } } if (ea.groupsAdded != null) { for (int i = 0; i < ea.groupsAdded.Length; i++) { EditorUI.instance.DeleteElement(ea.groupsAdded[i].ID); } } break; case EditorAction.ActionType.ElementsChanged: // revert element settings to old settings ElementsChanged elc = action as ElementsChanged; for (int i = 0; i < elc.newBricks.Length; i++) { EditorMain.instance.SetBrickProperties(elc.oldBricks[i], elc.newBricks[i].ID); EditorUI.instance.UpdateElement(elc.newBricks[i].ID); } EditorUI.instance.UpdateInspector(); break; case EditorAction.ActionType.ElementsRemoved: // add removed elements ElementsRemoved er = action as ElementsRemoved; if (er.bricksRemoved != null) { for (int i = 0; i < er.bricksRemoved.Length; i++) { EditorUI.instance.ImportBrick(er.bricksRemoved[i].ToBrick(false)); } } if (er.groupsRemoved != null) { for (int i = 0; i < er.groupsRemoved.Length; i++) { EditorUI.instance.ImportGroup(er.groupsRemoved[i].ToGroup(false)); } } break; case EditorAction.ActionType.GenericMapChange: // load old saved map GenericMapChange gmc = action as GenericMapChange; break; } } }
protected void HandleElementsChangedEvent() { ElementsChanged?.Invoke(this, EventArgs.Empty); }
protected void HandleElementsChangedEvent(object sender, EventArgs eventArgs) { ElementsChanged?.Invoke(this, EventArgs.Empty); }