Beispiel #1
0
        private void StartDragTimelineTargetAction(TargetIcon icon)
        {
            isDraggingNotesOnTimeline = true;
            startTimelineMoveTime     = icon.data.beatTime;
            timelineTargetMoveIntents = new List <TargetTimelineMoveIntent>();
            timeline.selectedNotes.ForEach(target => {
                var intent       = new TargetTimelineMoveIntent();
                intent.target    = target.data;
                intent.startTime = target.data.beatTime;

                timelineTargetMoveIntents.Add(intent);
            });
        }
Beispiel #2
0
        public void MoveTarget(TargetData data, QNT_Timestamp newTime)
        {
            TargetTimelineMoveIntent intent = new TargetTimelineMoveIntent();

            intent.targetData   = data;
            intent.startTick    = data.time;
            intent.intendedTick = newTime;

            List <TargetTimelineMoveIntent> list = new List <TargetTimelineMoveIntent>();

            list.Add(intent);
            timeline.MoveTimelineTargets(list);
        }
Beispiel #3
0
        public override void UndoAction(Timeline timeline)
        {
            List <Target> targets = targetTimelineMoveIntents.Select(intent => timeline.FindNote(intent.target)).ToList();

            for (int i = 0; i < targetTimelineMoveIntents.Count; ++i)
            {
                TargetTimelineMoveIntent intent = targetTimelineMoveIntents[i];
                Target target = targets[i];
                target.data.beatTime   = intent.startTime;
                intent.target.beatTime = intent.startTime;
            }
            timeline.SortOrderedList();
        }
        public override void DoAction(Timeline timeline)
        {
            if (moveAction == null)
            {
                bool first = true;

                ulong firstTick = 0, lastTick = 0;

                //Find the first and last note in the sequence
                foreach (TargetData data in affectedTargets)
                {
                    if (first)
                    {
                        firstTick = data.time.tick;
                        lastTick  = data.time.tick;
                        first     = false;
                    }

                    else if (data.time.tick > lastTick)
                    {
                        lastTick = data.time.tick;
                    }

                    else if (data.time.tick < firstTick)
                    {
                        firstTick = data.time.tick;
                    }
                }

                List <TargetTimelineMoveIntent> intents = new List <TargetTimelineMoveIntent>();
                foreach (TargetData data in affectedTargets)
                {
                    ulong amt = data.time.tick - firstTick;
                    TargetTimelineMoveIntent intent = new TargetTimelineMoveIntent();
                    intent.targetData   = data;
                    intent.startTick    = data.time;
                    intent.intendedTick = new QNT_Timestamp(lastTick - amt);
                    intents.Add(intent);
                }

                moveAction = timeline.GenerateMoveTimelineAction(intents);
            }

            moveAction.DoAction(timeline);
        }