/// <summary> /// Receives click events. Called at mouse down and at mouse up. /// </summary> /// <param name = "mouseData"></param> protected override void OnMouseDownAction(Mouse3DPosition mouseData) { var pos = HandleEditingPoints(mouseData); if (pos != -1) { if (mouseData.ShiftDown && pos % 3 == 0 && pos != Points.Count - 1) { switch (pos) { case 0: Points.RemoveAt(0); SplineControlPoints.RemoveRange(0, 3); break; default: Points.RemoveAt(pos / 3); SplineControlPoints.RemoveRange(pos - 1, 3); break; } PreviewSpinePath(); } EditedPointIndex = pos; ShowHint("Move mouse to set the coordinate"); return; } if (Points.Count <= 2) { UpdateBasePoint(Points.Count - 1); } SetLastPointAsMouse(mouseData); PreviewSpinePath(); Points.Add(new Point3D()); }
/// <summary> /// Constructor /// </summary> public ControlledSpline( ) { m_ControlPoints = new SplineControlPoints( this ); }