Exemplo n.º 1
0
        //遅延命令
        public void Emit(OnTrackEvent onTrackEvent)
        {
            var type = onTrackEvent.eventType;

            // tack events.
            switch (type)
            {
            case OnTrackEvent.EventType.EVENT_PARTS_MOVED:
            {
                //Undo.RecordObject(this, "Parts Moved");
                //Debug.Log("Parts Moved");
                parent_.NeedSave();
                return;
            }

            case OnTrackEvent.EventType.EVENT_PARTS_COPY:
            {
                var activeTack = parent_.GetActiveScore().GetActiveTackPoint();
                clipPos_ = activeTack.motionData_.mPos;

                return;
            }

            case OnTrackEvent.EventType.EVENT_PARTS_PASTE:
            {
                Undo.RecordObject(this, "Parts Paste");
                var activeTack = parent_.GetActiveScore().GetActiveTackPoint();
                activeTack.motionData_.mPos = clipPos_;
                SetupPartsData(true);
                return;
            }

            default:
            {
                //親に投げる
                ParentEmit(onTrackEvent);
                break;
            }
            }
        }
Exemplo n.º 2
0
        //マウス入力イベント設定
        void HandlingMouseEvent()
        {
            var repaint  = false;
            var useEvent = false;

            switch (Event.current.type)
            {
            // mouse event handling.
            case EventType.MouseDown: {
                var touchedFrameCount = TimelineTrack.GetFrameOnTimelineFromAbsolutePosX(scrollPos_ + (Event.current.mousePosition.x - WindowSettings.TIMELINE_CONDITIONBOX_SPAN));
                if (touchedFrameCount < 0)
                {
                    touchedFrameCount = 0;
                }
                selectedPos_   = touchedFrameCount * WindowSettings.TACK_FRAME_WIDTH;
                selectedFrame_ = touchedFrameCount;
                repaint        = true;

                Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_UNSELECTED, null));

                useEvent = true;
                break;
            }

            case EventType.ContextClick: {
                ShowContextMenu();
                useEvent = true;
                break;
            }

            case EventType.MouseUp: {
                // right click.
                if (Event.current.button == 1)
                {
                    ShowContextMenu();
                }
                else
                {
                    var touchedFrameCount = TimelineTrack.GetFrameOnTimelineFromAbsolutePosX(scrollPos_ + (Event.current.mousePosition.x - WindowSettings.TIMELINE_CONDITIONBOX_SPAN));
                    if (touchedFrameCount < 0)
                    {
                        touchedFrameCount = 0;
                    }
                    selectedPos_   = touchedFrameCount * WindowSettings.TACK_FRAME_WIDTH;
                    selectedFrame_ = touchedFrameCount;
                    repaint        = true;
                }

                useEvent = true;

                break;
            }

            case EventType.MouseDrag: {
                var pos = scrollPos_ + (Event.current.mousePosition.x - WindowSettings.TIMELINE_CONDITIONBOX_SPAN);
                if (pos < 0)
                {
                    pos = 0;
                }
                selectedPos_   = pos - ((WindowSettings.TACK_FRAME_WIDTH / 2f) - 1f);
                selectedFrame_ = TimelineTrack.GetFrameOnTimelineFromAbsolutePosX(pos);

                FocusToFrame(selectedFrame_);

                repaint  = true;
                useEvent = true;
                break;
            }

            // scroll event handling.
            case EventType.ScrollWheel: {
                if (0 != Event.current.delta.x)
                {
                    scrollPos_ = scrollPos_ + (Event.current.delta.x * 2);
                    if (scrollPos_ < 0)
                    {
                        scrollPos_ = 0;
                    }

                    repaint = true;
                }
                useEvent = true;
                break;
            }

            // key event handling.
            case EventType.KeyDown: {
                switch (Event.current.keyCode)
                {
                case KeyCode.LeftArrow: {
                    if (manipulateTargets.activeObjectIds.Count == 0)
                    {
                        selectedFrame_ = selectedFrame_ - 1;
                        if (selectedFrame_ < 0)
                        {
                            selectedFrame_ = 0;
                        }
                        selectedPos_ = selectedFrame_ * WindowSettings.TACK_FRAME_WIDTH;
                        repaint      = true;

                        FocusToFrame(selectedFrame_);
                    }
                    manipulateEvents_.keyLeft = true;
                    useEvent = true;
                    break;
                }

                case KeyCode.RightArrow: {
                    if (manipulateTargets.activeObjectIds.Count == 0)
                    {
                        selectedFrame_ = selectedFrame_ + 1;
                        selectedPos_   = selectedFrame_ * WindowSettings.TACK_FRAME_WIDTH;
                        repaint        = true;

                        FocusToFrame(selectedFrame_);
                    }
                    manipulateEvents_.keyRight = true;
                    useEvent = true;
                    break;
                }

                case KeyCode.UpArrow: {
                    manipulateEvents_.keyUp = true;
                    useEvent = true;
                    break;
                }

                case KeyCode.DownArrow: {
                    manipulateEvents_.keyDown = true;
                    useEvent = true;
                    break;
                }

                case KeyCode.S:
                    parent_.SaveData2(true);
                    break;

                case KeyCode.L:
                    parent_.ReloadSavedData();
                    break;

                case KeyCode.Z:
                    ARIMotionMainWindow.scoreCmd_.Undo();                                    //Undo
                    repaint = true;
                    break;

                case KeyCode.Y:
                    ARIMotionMainWindow.scoreCmd_.Redo();                                    //Redo
                    repaint = true;
                    break;
                    //case KeyCode.Keypad1:
                    //case KeyCode.Keypad2:
                    //case KeyCode.Keypad3:
                    //case KeyCode.Keypad4:
                    //case KeyCode.Keypad5:
                    //case KeyCode.Keypad6:
                    //case KeyCode.Keypad7:
                    //case KeyCode.Keypad8:
                    //case KeyCode.Keypad9:
                    //case KeyCode.Keypad0:
                    //	{
                    //		manipulateEvents_.SetKeyNum(Event.current.keyCode);
                    //		useEvent = true;
                    //		break;
                    //	}
                }
                break;
            }
            }

            // update cursor pos
            cursorPos_ = selectedPos_ - scrollPos_;

            if (repaint)
            {
                //HandleUtility.Repaint();
                parent_.RepaintAllWindow();
                //repaint = false;
            }

            if (eventStacks_.Any())
            {
                foreach (var onTrackEvent in eventStacks_)
                {
                    EmitAfterDraw(onTrackEvent);
                }
                eventStacks_.Clear();
                parent_.NeedSave();
            }

            if (useEvent)
            {
                Event.current.Use();
            }
        }