Example #1
0
 public DeletePitchPointCommand(UVoicePart part, UNote note, int index)
 {
     this.Part  = part;
     this.Note  = note;
     this.Index = index;
     this.Point = Note.pitch.data[Index];
 }
Example #2
0
 public DeletePitchPointCommand(UVoicePart part, UNote note, int index)
 {
     this.Part = part;
     this.Note = note;
     this.Index = index;
     this.Point = Note.PitchBend.Points[Index];
 }
Example #3
0
 public override void Begin(IPointer pointer, Point point)
 {
     base.Begin(pointer, point);
     if (!onPoint)
     {
         pitchPoint = new PitchPoint(x, y);
         index++;
         DocManager.Inst.ExecuteCmd(new AddPitchPointCommand(note, pitchPoint, index));
     }
 }
Example #4
0
 public PitchPointEditState(
     Canvas canvas, PianoRollViewModel vm, UNote note,
     int index, bool onPoint, float x, float y) : base(canvas, vm)
 {
     this.note    = note;
     this.index   = index;
     this.onPoint = onPoint;
     this.x       = x;
     this.y       = y;
     pitchPoint   = note.pitch.data[index];
 }
    private void PitchSetup()
    {
        for (int j = 0; j < FIELD_HEIGHT; j++)
        {
            for (int i = 0; i < FIELD_WIDTH; i++)
            {
                Vector3 point = new Vector3((FIELD_START_X + FIELD_OFFSET) + ((FIELD_SIZE_X / FIELD_WIDTH) * i),
                                            0f,
                                            (FIELD_START_Z + FIELD_OFFSET / 2) + ((FIELD_SIZE_Z / FIELD_HEIGHT) * j));

                GameObject go = (GameObject)Instantiate(pitchPoint, transform.position, Quaternion.identity);
                go.transform.SetParent(opponentPitch, true);

                PitchPoint pp = go.GetComponent <PitchPoint>();
                pp.SetupPoint(i + (j * (int)FIELD_WIDTH));

                go.transform.localPosition = point;
                go.transform.name          = pp.id.ToString();

                opponentPitchPoint.Add(pp);

                point = new Vector3((-FIELD_START_X - FIELD_OFFSET) - ((FIELD_SIZE_X / FIELD_WIDTH) * i),
                                    0f,
                                    (FIELD_START_Z + FIELD_OFFSET / 2) + ((FIELD_SIZE_Z / FIELD_HEIGHT) * j));

                go = (GameObject)Instantiate(pitchPoint, transform.position, Quaternion.identity);
                go.transform.SetParent(friendlyPitch, true);

                pp = go.GetComponent <PitchPoint>();
                pp.SetupPoint(i + (j * (int)FIELD_WIDTH));

                go.transform.localPosition = point;
                go.transform.name          = pp.id.ToString();

                friendlyPitchPoint.Add(pp);
            }
        }
    }
Example #6
0
 public ChangePitchPointShapeCommand(PitchPoint point, PitchPointShape shape)
 {
     this.Point    = point;
     this.NewShape = shape;
     this.OldShape = point.shape;
 }
Example #7
0
 public MovePitchPointCommand(PitchPoint point, float deltaX, float deltaY)
 {
     this.Point  = point;
     this.DeltaX = deltaX;
     this.DeltaY = deltaY;
 }
Example #8
0
 public AddPitchPointCommand(UNote note, PitchPoint point, int index)
 {
     this.Note  = note;
     this.Index = index;
     this.Point = point;
 }
Example #9
0
 public ChangePitchPointShapeCommand(PitchPoint point, PitchPointShape shape)
 {
     this.Point = point;
     this.NewShape = shape;
     this.OldShape = point.Shape;
 }
Example #10
0
 public MovePitchPointCommand(PitchPoint point, double deltaX, double deltaY)
 {
     this.Point = point;
     this.DeltaX = deltaX;
     this.DeltaY = deltaY;
 }
Example #11
0
 public AddPitchPointCommand(UNote note, PitchPoint point, int index)
 {
     this.Note = note;
     this.Index = index;
     this.Point = point;
 }
Example #12
0
 private void notesCanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
 {
     if (midiVM.Part == null) return;
     _inMove = false;
     _inResize = false;
     _noteHit = null;
     _inPitMove = false;
     _pitHit = null;
     DocManager.Inst.EndUndoGroup();
     // End selection
     selectionStart = null;
     if (selectionBox != null)
     {
         Canvas.SetZIndex(selectionBox, -100);
         selectionBox.Visibility = System.Windows.Visibility.Hidden;
     }
     midiVM.DoneTempSelect();
     ((Canvas)sender).ReleaseMouseCapture();
     Mouse.OverrideCursor = null;
 }
Example #13
0
        private void notesCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (midiVM.Part == null) return;
            Point mousePos = e.GetPosition((Canvas)sender);

            var hit = VisualTreeHelper.HitTest(notesCanvas, mousePos).VisualHit;
            System.Diagnostics.Debug.WriteLine("Mouse hit " + hit.ToString());

            var pitHitResult = midiHT.HitTestPitchPoint(mousePos);

            if (pitHitResult != null)
            {
                if (pitHitResult.OnPoint)
                {
                    _inPitMove = true;
                    _pitHit = pitHitResult.Note.PitchBend.Points[pitHitResult.Index];
                    _pitHitIndex = pitHitResult.Index;
                    _noteHit = pitHitResult.Note;
                    DocManager.Inst.StartUndoGroup();
                }
            }
            else
            {
                UNote noteHit = midiHT.HitTestNote(mousePos);
                if (noteHit != null) System.Diagnostics.Debug.WriteLine("Mouse hit" + noteHit.ToString());

                if (Keyboard.Modifiers == ModifierKeys.Control || Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift))
                {
                    selectionStart = new Point(midiVM.CanvasToQuarter(mousePos.X), midiVM.CanvasToNoteNum(mousePos.Y));

                    if (Keyboard.IsKeyUp(Key.LeftShift) && Keyboard.IsKeyUp(Key.RightShift)) midiVM.DeselectAll();

                    if (selectionBox == null)
                    {
                        selectionBox = new Rectangle()
                        {
                            Stroke = Brushes.Black,
                            StrokeThickness = 2,
                            Fill = ThemeManager.BarNumberBrush,
                            Width = 0,
                            Height = 0,
                            Opacity = 0.5,
                            RadiusX = 8,
                            RadiusY = 8,
                            IsHitTestVisible = false
                        };
                        notesCanvas.Children.Add(selectionBox);
                        Canvas.SetZIndex(selectionBox, 1000);
                        selectionBox.Visibility = System.Windows.Visibility.Visible;
                    }
                    else
                    {
                        selectionBox.Width = 0;
                        selectionBox.Height = 0;
                        Canvas.SetZIndex(selectionBox, 1000);
                        selectionBox.Visibility = System.Windows.Visibility.Visible;
                    }
                    Mouse.OverrideCursor = Cursors.Cross;
                }
                else
                {
                    if (noteHit != null)
                    {
                        _noteHit = noteHit;
                        if (!midiVM.SelectedNotes.Contains(noteHit)) midiVM.DeselectAll();

                        if (!midiHT.HitNoteResizeArea(noteHit, mousePos))
                        {
                            // Move note
                            _inMove = true;
                            _tickMoveRelative = midiVM.CanvasToSnappedTick(mousePos.X) - noteHit.PosTick;
                            _tickMoveStart = noteHit.PosTick;
                            _lastNoteLength = noteHit.DurTick;
                            if (midiVM.SelectedNotes.Count != 0)
                            {
                                _noteMoveNoteMax = _noteMoveNoteMin = noteHit;
                                _noteMoveNoteLeft = _noteMoveNoteRight = noteHit;
                                foreach (UNote note in midiVM.SelectedNotes)
                                {
                                    if (note.PosTick < _noteMoveNoteLeft.PosTick) _noteMoveNoteLeft = note;
                                    if (note.EndTick > _noteMoveNoteRight.EndTick) _noteMoveNoteRight = note;
                                    if (note.NoteNum < _noteMoveNoteMin.NoteNum) _noteMoveNoteMin = note;
                                    if (note.NoteNum > _noteMoveNoteMax.NoteNum) _noteMoveNoteMax = note;
                                }
                            }
                            DocManager.Inst.StartUndoGroup();
                        }
                        else // if (!noteHit.IsLyricBoxActive()) FIXME
                        {
                            // Resize note
                            _inResize = true;
                            Mouse.OverrideCursor = Cursors.SizeWE;
                            if (midiVM.SelectedNotes.Count != 0)
                            {
                                _noteResizeShortest = noteHit;
                                foreach (UNote note in midiVM.SelectedNotes)
                                    if (note.DurTick < _noteResizeShortest.DurTick) _noteResizeShortest = note;
                            }
                            DocManager.Inst.StartUndoGroup();
                        }
                    }
                    else // Add note
                    {
                        UNote newNote = DocManager.Inst.Project.CreateNote(
                            midiVM.CanvasToNoteNum(mousePos.Y),
                            midiVM.CanvasToSnappedTick(mousePos.X),
                            _lastNoteLength);

                        DocManager.Inst.StartUndoGroup();
                        DocManager.Inst.ExecuteCmd(new AddNoteCommand(midiVM.Part, newNote));
                        DocManager.Inst.EndUndoGroup();
                        midiVM.MarkUpdate();
                        // Enable drag
                        midiVM.DeselectAll();
                        _inMove = true;
                        _noteHit = newNote;
                        _tickMoveRelative = 0;
                        _tickMoveStart = newNote.PosTick;
                        DocManager.Inst.StartUndoGroup();
                    }
                }
            }
            ((UIElement)sender).CaptureMouse();
        }