Skip to content

Commit

Permalink
Use new deletion function
Browse files Browse the repository at this point in the history
  • Loading branch information
zacharied committed Oct 28, 2024
1 parent ff6ee4d commit fb01734
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -621,23 +621,28 @@ public void KeyboardAction_FastPlaceDockableObject(LaneType targetType, ILaneDoc
}

public void KeyboardAction_DeleteSelectingObjects(ActionExecutionContext e)
{
DeleteSelection();
}

public void DeleteSelection(IEnumerable<OngekiObjectBase> selection = null)
{
if (IsLocked)
return;

//获取要删除的物件
var selects = SelectObjects.OfType<OngekiObjectBase>().ToArray();
var selects = selection?.ToArray() ?? SelectObjects.OfType<OngekiObjectBase>().ToArray();

//依附于其他对象的子物件,比如轨道节点,曲线控制节点,无法做到单纯删除和添加
//记录它们子节点相对于集合的位置,下次恢复的时候就是插入了
var curveControlMaps = selects
.OfType<LaneCurvePathControlObject>()
.GroupBy(x => x.RefCurveObject)
.ToDictionary(x => x.Key, x => x.Select(c => (c, x.Key.PathControls.FirstIndexOf(p => p == c))).OrderBy(x => x.Item2).ToArray());
.OfType<LaneCurvePathControlObject>()
.GroupBy(x => x.RefCurveObject)
.ToDictionary(x => x.Key, x => x.Select(c => (c, x.Key.PathControls.FirstIndexOf(p => p == c))).OrderBy(x => x.Item2).ToArray());
var connectablesMaps = selects
.OfType<ConnectableChildObjectBase>()
.GroupBy(x => x.ReferenceStartObject)
.ToDictionary(x => x.Key, x => x.Select(c => (c, x.Key.Children.FirstIndexOf(p => p == c))).OrderBy(x => x.Item2).ToArray());
.OfType<ConnectableChildObjectBase>()
.GroupBy(x => x.ReferenceStartObject)
.ToDictionary(x => x.Key, x => x.Select(c => (c, x.Key.Children.FirstIndexOf(p => p == c))).OrderBy(x => x.Item2).ToArray());

var expectedObjects = selects.Where(x => x switch
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,23 +143,7 @@ public class SelectionAreaKind
if (!objs.Any())
return;

IoC.Get<IFumenObjectPropertyBrowser>().RefreshSelected(editor);

editor.UndoRedoManager.ExecuteAction(new LambdaUndoAction(Resources.DeleteObjects, Redo, Undo));

return;

void Redo()
{
foreach (var o in objs)
editor.Fumen.RemoveObject(o);
}

void Undo()
{
foreach (var o in objs)
editor.Fumen.AddObject(o);
}
editor.DeleteSelection();
});

public readonly Action<FumenVisualEditorViewModel, IEnumerable<OngekiObjectBase>> SelectAction;
Expand Down

0 comments on commit fb01734

Please sign in to comment.