public override void OnMouseDown(Vector2d mousepos) { base.OnMouseDown(mousepos); var gamepos = ScreenToGameCoords(mousepos); Stop();//double check if (!SelectLine(gamepos)) { CurrentTools.SetTool(CurrentTools.SelectTool); CurrentTools.SelectTool.OnMouseDown(mousepos); IsLeftMouseDown = false; _hoverline = null; } else { UpdateHoverline(gamepos); } }
public void Paste() { if (_copybuffer.Count != 0) { Stop(false); var pasteorigin = GetCopyOrigin(); var diff = pasteorigin - _copyorigin; Unselect(); Active = true; if (CurrentTools.SelectedTool != this) { CurrentTools.SetTool(this); } using (var trk = game.Track.CreateTrackWriter()) { game.Track.UndoManager.BeginAction(); foreach (var line in _copybuffer) { var add = line.Clone(); add.ID = GameLine.UninitializedID; add.Position += diff; add.Position2 += diff; if (add is StandardLine stl) { stl.CalculateConstants(); } add.SelectionState = SelectionState.Selected; trk.AddLine(add); var selectinfo = new LineSelection(add, true, null); _selection.Add(selectinfo); _selectedlines.Add(add.ID); } game.Track.UndoManager.EndAction(); } _selectionbox = GetBoxFromSelected(_selection); game.Track.NotifyTrackChanged(); } }
private void DeferToMoveTool() { CurrentTools.SetTool(CurrentTools.MoveTool); }