bool HandleAxis()
    {
        bool bRet = false;

        if (
            (null == currCtrl) ||
            (null == currCtrl.GetEditorRoot()) ||
            (null == currCtrl.GetEditorRoot().GetgeometryTool())
            )
        {
            return(false);
        }

        bool   isMouseIn    = false;
        string mouseInObjID = string.Empty;
        object paramObj     = null;

        Vector2 localMousePos = currCtrl.CalcLocalPos(FrameInputInfo.GetInstance().currPos);

        localMousePos.x = localMousePos.x - (currCtrl.LastRect.width - 128f);
        Vector2 cameraMousePos = new Vector2(localMousePos.x, 128f - localMousePos.y);

        isMouseIn = currCtrl.GetEditorRoot().GetgeometryTool().GetGeometryObjWithMouse(currCtrl.assistantCam, cameraMousePos, out mouseInObjID, out paramObj);

        if (
            FrameInputInfo.GetInstance().leftBtnPress &&
            isMouseIn &&
            (paramObj != null) &&
            (mouseInObjID.StartsWith(currCtrl.mainViewRoot.name))
            )
        {
            if ((MOUSEINAXIS)paramObj == MOUSEINAXIS.MOUSEIN_X)
            {
                RoroateAll(new Vector3(0f, -90f, 0f));
            }
            else if ((MOUSEINAXIS)paramObj == MOUSEINAXIS.MOUSEIN_XNEG)
            {
                RoroateAll(new Vector3(0f, 90f, 0f));
            }
            else if ((MOUSEINAXIS)paramObj == MOUSEINAXIS.MOUSEIN_Y)
            {
                RoroateAll(new Vector3(90f, 0f, 0f));
            }
            else if ((MOUSEINAXIS)paramObj == MOUSEINAXIS.MOUSEIN_YNEG)
            {
                RoroateAll(new Vector3(-90f, 0f, 0f));
            }
            else if ((MOUSEINAXIS)paramObj == MOUSEINAXIS.MOUSEIN_Z)
            {
                RoroateAll(new Vector3(0f, 180f, 0f));
            }
            else if ((MOUSEINAXIS)paramObj == MOUSEINAXIS.MOUSEIN_ZNEG)
            {
                RoroateAll(new Vector3(0f, 0f, 0f));
            }
            bRet = true;
        }

        return(bRet);
    }
    private void HandleDragAction(EditorControl c)
    {
        if (
            (null == currCtrl) ||
            !currCtrl.IsCurrentCtrlEnable()
            )
        {
            return;
        }


        //Vector2 currMousePos = FrameInputInfo.GetInstance().currPos;
        Vector2 localMousePos = CalcLocalPos(c, FrameInputInfo.GetInstance().currPos);

        //DragUpdated
        if (
            (currCtrl.LastRect.Contains(localMousePos)) &&
            (FrameInputInfo.GetInstance().customDragUpdated)
            )
        {
            CustomDragUpdated(currCtrl);

            currCtrl.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().dragObjsPerform&&
            currCtrl.LastRect.Contains(localMousePos)
            )
        {
            CustomDragAccept(currCtrl, false);

            currCtrl.RequestRepaint();
        }
    }
Esempio n. 3
0
    public override void Visit(EditorControl c)
    {
        HSpliterCtrl spliter = c as HSpliterCtrl;

        GUILayout.Box("", c.GetStyle(), c.GetOptions());

        c.UpdateLastRect();

        if (spliter.Dragable && spliter.IsCurrentCtrlEnable())
        {
            if (
                FrameInputInfo.GetInstance().leftBtnPress&&
                c.LastRect.Contains(FrameInputInfo.GetInstance().currPos)
                )
            {
                spliter.IsDragging = true;
            }
            else
            {
                if (FrameInputInfo.GetInstance().leftButtonDown == false)
                {
                    spliter.IsDragging = false;
                }

                if (spliter.IsDragging)
                {
                    if (null != c.layoutConstraint)
                    {
                        Vector2 mouseDelta = FrameInputInfo.GetInstance().posOffset;


                        if (Mathf.Abs(mouseDelta.y) > Mathf.Epsilon)
                        {
                            if (c.layoutConstraint.spliterOffsetInv)
                            {
                                c.layoutConstraint.spliterOffset -= mouseDelta.y;
                            }
                            else
                            {
                                c.layoutConstraint.spliterOffset += mouseDelta.y;
                            }

                            if (c.layoutConstraint.spliterOffset < spliter.MinOffset)
                            {
                                c.layoutConstraint.spliterOffset = spliter.MinOffset;
                            }
                            if (c.layoutConstraint.spliterOffset > spliter.MaxOffset)
                            {
                                c.layoutConstraint.spliterOffset = spliter.MaxOffset;
                            }

                            c.RequestRepaint();
                        }
                    }
                }
            }
            EditorGUIUtility.AddCursorRect(c.LastRect, MouseCursor.ResizeVertical);
        }
    }
    void _UpdateDraggingState()
    {
        if (FrameInputInfo.GetInstance().leftButtonDown)
        {
            if (FrameInputInfo.GetInstance().leftBtnPress)
            {
                currCtrl.rotateDragging = true;
            }
        }
        else
        {
            currCtrl.rotateDragging = false;
        }

        if (FrameInputInfo.GetInstance().midButtonDown)
        {
            if (FrameInputInfo.GetInstance().midBtnPress)
            {
                currCtrl.moveDragging = true;
            }
        }
        else
        {
            currCtrl.moveDragging = false;
        }

        if (FrameInputInfo.GetInstance().rightButtonDown)
        {
            if (FrameInputInfo.GetInstance().rightBtnPress)
            {
                currCtrl.zoomDragging = true;
            }
        }
        else
        {
            currCtrl.zoomDragging = false;
        }

        if (FrameInputInfo.GetInstance().scroll)
        {
            currCtrl.zoomWheelScroll = true;
        }
        else
        {
            currCtrl.zoomWheelScroll = false;
        }
    }
Esempio n. 5
0
    virtual public void CheckInputEvent(EditorControl c)
    {
        if (
            (null == c)
            )
        {
            return;
        }

        Vector2 localMousePos = CalcLocalPos(c, FrameInputInfo.GetInstance().currPos);

        if (
            FrameInputInfo.GetInstance().hasInput &&
            c.LastRect.Contains(localMousePos)
            )
        {
            c.frameTriggerInfo.isHandleInput = true;
        }
    }
Esempio n. 6
0
    public void RenderOneFrame()
    {
        if (isClosed)
        {
            Close();
            return;
        }

        if (rootCtrl == null)
        {
            return;
        }

        //若当前窗口不是当前窗口,则不更新此
        //窗口的输入信息
        if (this == EditorWindow.focusedWindow)
        {
            InputInfo.Update(this);
        }

        FrameInputInfo.SetCurrInputInfo(InputInfo);

        _PrepareDrawGUI();

        geometryTool.DrawBegin();

        renderer.Render(rootCtrl, position);

        //广播本帧产生的所有消息
        NotifyMessages();

        if (onGUI != null)
        {
            onGUI(this);
        }

        geometryTool.DrawEnd();

        if (renderer.IsRepaintRequested())
        {
            Repaint();
        }
    }
Esempio n. 7
0
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //	* New Method: Get Updated Input Info
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    private LinkedList <FrameInputInfo> GetUpdatedInputInfo()
    {
        LinkedList <FrameInputInfo> lInputList = new LinkedList <FrameInputInfo>();

#if UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX
        for (int i = 0; i < 2; ++i)
        {
            if (Input.GetMouseButton(i))
            {
                FrameInputInfo info = new FrameInputInfo();
                info.hitObject = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero).transform;
                info.inputID   = i;
                info.triggered = Input.GetMouseButtonDown(i);
                lInputList.AddLast(info);

#if UNITY_EDITOR
                // DEBUG ONLY~ Update InputTrigger List. In the CustomEditor This will tell the developer what has most recently been touched.
                //	=> Additionally, whenever the List gets above 100, reduce it back down to 100 (or below) by chopping off the first value in the list.
                if (info.triggered && info.hitObject != null)
                {
                    while (dm_lTriggeredObjects.Count > 99)
                    {
                        dm_lTriggeredObjects.RemoveFirst();
                    }
                    dm_lTriggeredObjects.AddLast(info.hitObject);
                }
#endif
            }
        }
#else
        for (int i = 0; i < Input.touchCount; ++i)
        {
            FrameInputInfo info = new FrameInputInfo();
            info.hitObject = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(i).position), Vector2.zero).transform;
            info.inputID   = i;
            info.triggered = Input.GetTouch(i).phase == TouchPhase.Began;
            lInputList.AddLast(info);
        }
#endif
        return(lInputList);
    }
Esempio n. 8
0
    private void Trigger(EditorControl c)
    {
        if (c.frameTriggerInfo.isCtrlBehaveChange)
        {
            if (null != c.onCtrlBehaveChange)
            {
                c.onCtrlBehaveChange(c);
            }
        }

        if (c.frameTriggerInfo.isClick)
        {
            if (null != c.onClick)
            {
                c.onClick(c);
            }
        }

        if (c.frameTriggerInfo.isHover)
        {
            if (null != c.onHover)
            {
                c.onHover(c);
            }
        }

        if (c.frameTriggerInfo.isValueChanged)
        {
            if (null != c.onValueChange)
            {
                c.onValueChange(c, c.CurrValue);
            }
        }

        if (c.frameTriggerInfo.lastSelectItem != -1)
        {
            if (null != c.onItemSelected)
            {
                c.onItemSelected(c, c.frameTriggerInfo.lastSelectItem);
            }
        }

        //add by liteng for atlas start
        if (c.frameTriggerInfo.lastSelectItemR != -1)
        {
            if (null != c.onItemSelectedR)
            {
                c.onItemSelectedR(c, c.frameTriggerInfo.lastSelectItemR);
            }
        }

        if (c.frameTriggerInfo.lastSelectItemRU != -1)
        {
            if (null != c.onItemSelectedRU)
            {
                c.onItemSelectedRU(c, c.frameTriggerInfo.lastSelectItemRU);
            }
        }
        //add by liteng end
        if (c.frameTriggerInfo.isScroll)
        {
            if (null != c.onScroll)
            {
                c.onScroll(c, c.frameTriggerInfo.scrollPos);
            }
        }


        if (c.frameTriggerInfo.isDraggingObjs)
        {
            if (null != c.onDragingObjs)
            {
                c.onDragingObjs(c, FrameInputInfo.GetInstance().dragObjs, FrameInputInfo.GetInstance().dragObjsPaths);
            }
        }

        if (c.frameTriggerInfo.isDropObjs)
        {
            if (null != c.onDropObjs)
            {
                c.onDropObjs(c, FrameInputInfo.GetInstance().dragObjs, FrameInputInfo.GetInstance().dragObjsPaths);
            }
        }

        //Add by liteng for MoveAtlas At 2014/1/4 Start
        if (c.frameTriggerInfo.isCustomDragAccept)
        {
            if (null != c.onAcceptCustomDrag)
            {
                c.onAcceptCustomDrag(c, c.DragObject);
            }
        }

        if (c.frameTriggerInfo.isCustomDragAcceptCtrl)
        {
            if (null != c.onAcceptCustomDragCtrl)
            {
                c.onAcceptCustomDragCtrl(c, c.DragObject);
            }
        }

        if (c.frameTriggerInfo.isCtrlSelectItem)
        {
            if (null != c.onItemCtrlSelected)
            {
                c.onItemCtrlSelected(c, c.frameTriggerInfo.lastCtrlSelectItem);
            }
        }

        if (c.frameTriggerInfo.isDoubleClick)
        {
            if (null != c.onDoubleClick)
            {
                c.onDoubleClick(c, c.ClickObject);
            }
        }

        if (c.frameTriggerInfo.isOnPress)
        {
            if (null != c.onOnPress)
            {
                c.onOnPress(c, c.ClickObject);
            }
        }

        if (c.frameTriggerInfo.isPressDown)
        {
            if (null != c.onPressDown)
            {
                c.onPressDown(c, c.ClickObject);
            }
        }

        if (c.frameTriggerInfo.isPressUp)
        {
            if (null != c.onPressUp)
            {
                c.onPressUp(c, c.ClickObject);
            }
        }

        if (c.frameTriggerInfo.isRPressDown)
        {
            if (null != c.onRPressDown)
            {
                c.onRPressDown(c, c.ClickObject);
            }
        }

        if (c.frameTriggerInfo.isRPressUP)
        {
            if (null != c.onRPressUp)
            {
                c.onRPressUp(c, c.ClickObject);
            }
        }

        if (c.frameTriggerInfo.isPlay)
        {
            if (null != c.onPlay)
            {
                c.onPlay(c);
            }
        }

        if (c.frameTriggerInfo.isPause)
        {
            if (null != c.onPause)
            {
                c.onPause(c);
            }
        }

        if (c.frameTriggerInfo.isStop)
        {
            if (null != c.onStop)
            {
                c.onStop(c);
            }
        }
    }
Esempio n. 9
0
 public static void SetCurrInputInfo(FrameInputInfo info)
 {
     currInputInfo = info;
 }
Esempio n. 10
0
    //处理所有输入
    void HandleInput()
    {
        if (
            (null == currCtrl) ||
            (!currCtrl.IsCurrentCtrlEnable())
            )
        {
            return;
        }

        //Vector2 mousePos = FrameInputInfo.GetInstance().currPos;
        Vector2 mousePos = CalcLocalPos(currCtrl, FrameInputInfo.GetInstance().currPos);

        Vector2 mousePosOffset = FrameInputInfo.GetInstance().posOffset;
        //Vector2 viewLocalMousePos = FrameInputInfo.GetInstance().currPos + currCtrl.ScrollPos;
        Vector2 viewLocalMousePos = CalcLocalPos(FrameInputInfo.GetInstance().currPos);

        viewLocalMousePos += currCtrl.ScrollPos;

        bool lBtnPress   = FrameInputInfo.GetInstance().leftBtnPress;
        bool lBtnPressUp = FrameInputInfo.GetInstance().leftBtnPressUp;
        bool lBtnDown    = FrameInputInfo.GetInstance().leftButtonDown;

        bool mBtnPress = FrameInputInfo.GetInstance().midBtnPress;
        bool mBtnDown  = FrameInputInfo.GetInstance().midButtonDown;

        bool rBtnPress = FrameInputInfo.GetInstance().rightBtnPress;
        bool rBtnDown  = FrameInputInfo.GetInstance().rightButtonDown;

        bool    mouseScroll = FrameInputInfo.GetInstance().scroll;
        Vector2 scrollDelta = FrameInputInfo.GetInstance().delta;


        bool hasInteractSubCtrl = false;

        CheckInputEvent(currCtrl);

        {//处理所有时间标签响应
            int selTag = -1;
            int i      = 0;
            //对控件的时间标签进行输入处理
            foreach (var tag in currCtrl.Tags)
            {
                if (tag.lastRect.Contains(viewLocalMousePos) && lBtnPress)
                {
                    tag.isDragging           = true;
                    selTag                   = i;
                    currCtrl.LastSelectedTag = i;

                    hasInteractSubCtrl = true;
                    break;
                }
                i++;
            }

            if (!lBtnDown)
            {
                foreach (var tag in currCtrl.Tags)
                {
                    tag.isDragging = false;
                }
                selTag = -1;
                if (currCtrl.LastSelectedTag != -1)
                {
                    currCtrl.PostMessage(ControlMessage.Message.TIMELINECTRL_END_DRAG_TAG, currCtrl.LastSelectedTag);
                }
                currCtrl.LastSelectedTag = -1;
            }

            if (selTag != -1)
            {//有新选中项
                currCtrl.PostMessage(ControlMessage.Message.TIMELINECTRL_BEGIN_DRAG_TAG, selTag);
            }

            bool hasDraggingMsg = false;
            foreach (var tag in currCtrl.Tags)
            {
                if (tag.isDragging)
                {
                    float pixelOffset = FrameInputInfo.GetInstance().posOffset.x;
                    float timeOffset  = currCtrl.CalcTime(pixelOffset);
                    tag.time += timeOffset;
                    if (tag.time < 0f)
                    {
                        tag.time = 0f;
                    }
                    currCtrl.RequestRepaint();

                    if (Mathf.Abs(pixelOffset) > 0f)
                    {
                        hasDraggingMsg = true;
                    }

                    hasInteractSubCtrl = true;
                }
            }

            if (hasDraggingMsg)
            {
                currCtrl.PostMessage(ControlMessage.Message.TIMELINECTRL_DRAG_TAG, currCtrl.LastSelectedTag);
            }
        }//处理所有标签响应事件



        {//处理所有时间线响应事件
            //处理鼠标左键点击事件
            if (lBtnPress)
            {
                if (currCtrl.mutiSelectState == TimeLineViewCtrl.MutiSelectState.STATE_MUTI_SEL_CHOOSE_DRAGGER)
                {//若进入多选模式
                    int i = 0;
                    //查看点击的项与矩形是否与多选记录相符
                    foreach (var item in currCtrl.Items)
                    {
                        int selSide = 0;
                        if (item.leftDragLastRect.Contains(viewLocalMousePos))
                        {
                            selSide = TimeLineViewCtrl.SIDE_LEFT;
                        }
                        else if (item.rightDragLastRect.Contains(viewLocalMousePos))
                        {
                            selSide = TimeLineViewCtrl.SIDE_RIGHT;
                        }
                        else if (item.lastRect.Contains(viewLocalMousePos))
                        {
                            selSide = TimeLineViewCtrl.SIDE_MID;
                        }
                        if (selSide > 0)
                        {
                            if (currCtrl.IsHighLightBox(i, selSide))
                            {//点中多选项中的一项
                                hasInteractSubCtrl = true;
                                //进入多选拖拽模式
                                currCtrl.mutiSelectState = TimeLineViewCtrl.MutiSelectState.STATE_MUTI_SEL_DRAGGING;
                                TriggerSelectChange(i);
                                TriggerDragItemsBegin();
                                break;
                            }
                            else
                            {//如果选中项与多选项不符
                                currCtrl.mutiSelectState = TimeLineViewCtrl.MutiSelectState.STATE_NULL;
                            }
                        }

                        i++;
                    }
                }


                if (currCtrl.mutiSelectState == TimeLineViewCtrl.MutiSelectState.STATE_NULL)
                {//单选点击
                    currCtrl.ClearSelectItemInfo();
                    int i = 0;
                    foreach (var item in currCtrl.Items)
                    {
                        int selSide = 0;
                        if (item.leftDragLastRect.Contains(viewLocalMousePos))
                        {
                            selSide = TimeLineViewCtrl.SIDE_LEFT;
                        }
                        else if (item.rightDragLastRect.Contains(viewLocalMousePos))
                        {
                            selSide = TimeLineViewCtrl.SIDE_RIGHT;
                        }
                        else if (item.lastRect.Contains(viewLocalMousePos))
                        {
                            selSide = TimeLineViewCtrl.SIDE_MID;
                        }

                        if (selSide > 0)
                        {
                            hasInteractSubCtrl = true;
                            currCtrl.AddSelectItemInfo(i, selSide);
                            break;
                        }
                        i++;
                    }

                    if (currCtrl.selectItemInfos.Count > 0)
                    {
                        TriggerSelectChange(i);
                        TriggerDragItemsBegin();
                    }
                }
            }//处理鼠标左键点击事件


            if (lBtnDown &&
                (
                    currCtrl.mutiSelectState == TimeLineViewCtrl.MutiSelectState.STATE_NULL ||
                    currCtrl.mutiSelectState == TimeLineViewCtrl.MutiSelectState.STATE_MUTI_SEL_DRAGGING
                )
                )
            {
                bool triggerDragging = false;
                foreach (var info in currCtrl.selectItemInfos)
                {
                    TimeLineItem item = currCtrl.Items[info.indx];

                    if (info.side == TimeLineViewCtrl.SIDE_LEFT)
                    {
                        float newStartX = item.lastRect.x + mousePosOffset.x;

                        if (Mathf.Abs(newStartX - item.lastRect.x) > Mathf.Epsilon)
                        {
                            float newStartTime = currCtrl.Trans2RealTime(newStartX - currCtrl.LastRect.x);
                            float oldEndTime   = item.startTime + item.length;

                            if (newStartTime < 0.0f)
                            {
                                newStartTime = 0.0f;
                            }

                            if (newStartTime > oldEndTime)
                            {
                                newStartTime = oldEndTime;
                            }

                            float newLength = oldEndTime - newStartTime;

                            item.startTime = newStartTime;
                            item.length    = newLength;

                            triggerDragging = true;
                        }
                    }
                    else if (info.side == TimeLineViewCtrl.SIDE_RIGHT)
                    {
                        float newEndX = item.lastRect.x + item.lastRect.width + mousePosOffset.x;

                        if (Mathf.Abs(newEndX - (item.lastRect.x + item.lastRect.width)) > Mathf.Epsilon)
                        {
                            float newEndTime = currCtrl.Trans2RealTime(newEndX - currCtrl.LastRect.x);

                            if (newEndTime < 0.0f)
                            {
                                newEndTime = 0.0f;
                            }

                            if (newEndTime < item.startTime)
                            {
                                newEndTime = item.startTime;
                            }

                            item.length = newEndTime - item.startTime;

                            triggerDragging = true;
                        }
                    }
                    else if (info.side == TimeLineViewCtrl.SIDE_MID)
                    {
                        float newStartX = item.lastRect.x + mousePosOffset.x;

                        if (Mathf.Abs(newStartX - item.lastRect.x) > Mathf.Epsilon)
                        {
                            float newStartTime = currCtrl.Trans2RealTime(newStartX - currCtrl.LastRect.x);

                            if (newStartTime < 0.0f)
                            {
                                newStartTime = 0.0f;
                            }

                            item.startTime = newStartTime;

                            triggerDragging = true;
                        }
                    }

                    hasInteractSubCtrl = true;
                }

                if (triggerDragging)
                {
                    TriggerItemsDraging();
                }
            }
        }//处理所有时间线响应事件


        {//对于松开鼠标左键处理
            if (lBtnPressUp)
            {
                if (currCtrl.mutiSelectState == TimeLineViewCtrl.MutiSelectState.STATE_MUTI_SEL_DRAGGING)
                {
                    TriggerDragItemsEnd();
                    currCtrl.mutiSelectState = TimeLineViewCtrl.MutiSelectState.STATE_MUTI_SEL_CHOOSE_DRAGGER;
                }
                else if (currCtrl.mutiSelectState == TimeLineViewCtrl.MutiSelectState.STATE_NULL)
                {
                    if (currCtrl.selectItemInfos.Count > 0)
                    {
                        TriggerDragItemsEnd();
                    }
                }
            }
        }

        if (lBtnPressUp)
        {     //左键松开
            if (currCtrl.mutiSelectState == TimeLineViewCtrl.MutiSelectState.STATE_DRAGGING_MUTI_SEL_RECT)
            { //进入多选模式
                if (currCtrl.selectItemInfos.Count > 0)
                {
                    if (currCtrl.selectItemInfos.Count > 0)
                    {
                        TriggerSelectChange(currCtrl.selectItemInfos[0].indx);
                    }
                    currCtrl.mutiSelectState = TimeLineViewCtrl.MutiSelectState.STATE_MUTI_SEL_CHOOSE_DRAGGER;
                }
                else
                {
                    currCtrl.mutiSelectState = TimeLineViewCtrl.MutiSelectState.STATE_NULL;
                }
            }
        }

        {//处理在整个控件范围内的输入
            //若鼠标在控件区域内
            if (currCtrl.LastRect.Contains(mousePos))
            {
                //左键点下并且之前没有与其他子控件交互
                if (lBtnPress && !hasInteractSubCtrl)
                {//进入多选选择阶段
                    currCtrl.mutiSelectState        = TimeLineViewCtrl.MutiSelectState.STATE_DRAGGING_MUTI_SEL_RECT;
                    currCtrl.mutiSelectRectStartPos = viewLocalMousePos;
                    currCtrl.ClearSelectItemInfo();
                }

                if (lBtnDown && FrameInputInfo.GetInstance().isMouseInWindow&& currCtrl.mutiSelectState == TimeLineViewCtrl.MutiSelectState.STATE_DRAGGING_MUTI_SEL_RECT)
                {
                    currCtrl.mutiSelectRectEndPos = viewLocalMousePos;
                    currCtrl.RecalcDragMutiSelectRect();
                    //根据多选拖拽矩形,更新选中项列表
                    currCtrl.UpdateSelectItemInfoListWithMutiSelectRect();
                }


                //控件的鼠标标线时间标签
                if (mBtnDown && mBtnPress)
                {
                    currCtrl.showMouseTag = !currCtrl.showMouseTag;
                }


                //对横向滚动响应
                if (rBtnPress && rBtnDown)
                {
                    currCtrl.horizonScrollDragging = true;
                }

                if (!rBtnDown)
                {
                    currCtrl.horizonScrollDragging = false;
                }


                //缩放时间轴视图
                if (mouseScroll)
                {
                    if (Mathf.Abs(scrollDelta.y) > Mathf.Epsilon)
                    {
                        if (scrollDelta.y > 0.0f)
                        {
                            currCtrl.Zoom *= 1.1f;
                        }
                        else
                        {
                            currCtrl.Zoom /= 1.1f;
                        }
                    }
                }

                currCtrl.mousePos = mousePos;
                currCtrl.RequestRepaint();
            }
            else
            {
                currCtrl.horizonScrollDragging = false;
            }

            //水平拖动
            if (currCtrl.horizonScrollDragging)
            {
                currCtrl.ScrollPos -= new Vector2(mousePosOffset.x, 0);
            }
        }//处理在整个控件范围内的输入
    }
Esempio n. 11
0
    private void HandleMouseInput(EditorControl c)
    {
        currCtrl = c as TabViewCtrl;
        if (
            (null == currCtrl) ||
            !currCtrl.IsCurrentCtrlEnable() ||
            currCtrl.IsEventTriggered()
            )
        {
            return;
        }

        CheckInputEvent(c);

        Rect tabViewField = new Rect(currCtrl.LastRect.x, currCtrl.LastRect.y + tabTitleRect.height, currCtrl.LastRect.width, currCtrl.LastRect.height - tabTitleRect.height);

        Vector2 localMousePos = CalcLocalPos(c, FrameInputInfo.GetInstance().currPos);

        if (
            FrameInputInfo.GetInstance().leftBtnDoubleClick &&
            tabViewField.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isDoubleClick = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnClick &&
            tabViewField.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isClick = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnOnPress &&
            tabViewField.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isOnPress = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnPress &&
            tabViewField.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isPressDown = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnPressUp &&
            tabViewField.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isPressUp = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
    }
Esempio n. 12
0
    private void HandleMouseInput(EditorControl c)
    {
        HBoxCtrl hBox = c as HBoxCtrl;

        if (
            (null == hBox) ||
            !hBox.IsCurrentCtrlEnable() ||
            hBox.IsEventTriggered()
            )
        {
            return;
        }

        CheckInputEvent(c);

        Rect contentRect = GetCtrlLastRectWithOutScrollBar(hBox);

        Vector2 localMousePos = CalcLocalPos(c, FrameInputInfo.GetInstance().currPos);

        if (
            FrameInputInfo.GetInstance().leftBtnDoubleClick &&
            contentRect.Contains(localMousePos)
            )
        {
            hBox.frameTriggerInfo.isDoubleClick = true;
            hBox.ClickObject = null;

            hBox.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnClick &&
            contentRect.Contains(localMousePos)
            )
        {
            hBox.frameTriggerInfo.isClick = true;
            hBox.ClickObject = null;

            hBox.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnOnPress &&
            contentRect.Contains(localMousePos)
            )
        {
            hBox.frameTriggerInfo.isOnPress = true;
            hBox.ClickObject = null;

            hBox.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnPress &&
            contentRect.Contains(localMousePos)
            )
        {
            hBox.frameTriggerInfo.isPressDown = true;
            hBox.ClickObject = null;

            hBox.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnPressUp &&
            contentRect.Contains(localMousePos)
            )
        {
            hBox.frameTriggerInfo.isPressUp = true;
            hBox.ClickObject = null;

            hBox.RequestRepaint();
        }
    }
    private void HandleMouseInput(EditorControl c)
    {
        LabelCtrl currCtrl = c as LabelCtrl;

        if (
            (null == currCtrl) ||
            !currCtrl.IsCurrentCtrlEnable() ||
            currCtrl.IsEventTriggered()
            )
        {
            return;
        }

        CheckInputEvent(c);

        Vector2 localMousePos = CalcLocalPos(c, FrameInputInfo.GetInstance().currPos);

        localMousePos += currCtrl.ScrollPos;

        if (
            FrameInputInfo.GetInstance().leftBtnDoubleClick &&
            currCtrl.LastRect.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isDoubleClick = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnClick &&
            currCtrl.LastRect.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isClick = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnOnPress &&
            currCtrl.LastRect.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isOnPress = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnPress &&
            currCtrl.LastRect.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isPressDown = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().leftBtnPressUp &&
            currCtrl.LastRect.Contains(localMousePos)
            )
        {
            currCtrl.frameTriggerInfo.isPressUp = true;
            currCtrl.ClickObject = null;

            currCtrl.RequestRepaint();
        }
    }
Esempio n. 14
0
    void _HandleInput()
    {
        if (currCtrl == null)
        {
            return;
        }

        Vector2 currMousePos = FrameInputInfo.GetInstance().currPos;
        //Vector2 localMousePos = currCtrl.CalcLocalPos(currMousePos);
        Vector2 mouseMoveDelta   = FrameInputInfo.GetInstance().posOffset;
        Vector2 wheelScrollDelta = FrameInputInfo.GetInstance().delta;

        //2D视图
        bool is2DView = currCtrl.Is2DView;

        CheckInputEvent(currCtrl);

        //若当前鼠标不在视口区域内直接忽略
        if (!currCtrl.LastRect.Contains(currMousePos))
        {
            currCtrl.rotateDragging = false;
            currCtrl.moveDragging   = false;
            return;
        }

        if (FrameInputInfo.GetInstance().dragingObjs)
        {
            bool accept = false;

            if (currCtrl.onAcceptDragObjs != null)
            {
                accept = currCtrl.onAcceptDragObjs(
                    currCtrl,
                    FrameInputInfo.GetInstance().dragObjs,
                    FrameInputInfo.GetInstance().dragObjsPaths);

                if (accept)
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Link;

                    if (!FrameInputInfo.GetInstance().dragObjsPerform)
                    {
                        currCtrl.frameTriggerInfo.isDraggingObjs = true;
                    }
                    else
                    {
                        currCtrl.frameTriggerInfo.isDropObjs = true;
                    }
                }
                else
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Rejected;
                }
            }
            else
            {
                DragAndDrop.visualMode = DragAndDropVisualMode.Rejected;
            }
        }

        //根据输入分析控件的推拽状态
        _UpdateDraggingState();

        if (Mathf.Abs(mouseMoveDelta.x) < Mathf.Epsilon &&
            Mathf.Abs(mouseMoveDelta.y) < Mathf.Epsilon &&
            !FrameInputInfo.GetInstance().scroll
            )
        {//无明显移动直接返回
            return;
        }

        //Transform rootTrans = currCtrl.mainViewRoot.transform;
        Transform camTrans = currCtrl.camObj.transform;

        Camera cam = currCtrl.mainCam;

        if (currCtrl.rotateDragging)
        {
            if (!is2DView)
            {//只有3D视图才响应旋转拖拽
                float angleAroundUp    = mouseMoveDelta.x * 0.1f;
                float angleAroundRight = mouseMoveDelta.y * 0.1f;

                Vector3 localPos = (camTrans.localPosition - currCtrl.center).normalized * currCtrl.radius;


                //Quaternion q0 = Quaternion.AngleAxis(angleAroundUp, camTrans.up);

                //camTrans.localPosition = q0 * localPos;
                //camTrans.Rotate(Vector3.up, angleAroundUp, Space.Self);

                //Quaternion q1 = Quaternion.AngleAxis(angleAroundRight, camTrans.right);

                //camTrans.Rotate(Vector3.right, angleAroundRight, Space.Self);
                //camTrans.localPosition = q1 * camTrans.localPosition;

                //camTrans.localPosition += currCtrl.center;

                Quaternion q0 = Quaternion.AngleAxis(angleAroundUp, Vector3.up);

                camTrans.localPosition = q0 * localPos;
                camTrans.Rotate(Vector3.up, angleAroundUp, Space.World);

                Quaternion q1 = Quaternion.AngleAxis(angleAroundRight, camTrans.right);

                camTrans.Rotate(camTrans.right, angleAroundRight, Space.World);
                camTrans.localPosition = q1 * camTrans.localPosition;

                camTrans.localPosition += currCtrl.center;


                if (currCtrl.IsShowAxis)
                {
                    Transform assCamTrans = currCtrl.assistantCamObj.transform;
                    Vector3   localPosAss = (assCamTrans.localPosition - currCtrl.assCentter).normalized * currCtrl.assRadius;

                    //Quaternion q3 = Quaternion.AngleAxis(angleAroundUp, assCamTrans.up);

                    //assCamTrans.localPosition = q3 * localPosAss;
                    //assCamTrans.Rotate(Vector3.up, angleAroundUp, Space.Self);

                    //Quaternion q2 = Quaternion.AngleAxis(angleAroundRight, assCamTrans.right);

                    //assCamTrans.Rotate(Vector3.right, angleAroundRight, Space.Self);
                    //assCamTrans.localPosition = q2 * assCamTrans.localPosition;

                    Quaternion q3 = Quaternion.AngleAxis(angleAroundUp, Vector3.up);

                    assCamTrans.localPosition = q3 * localPosAss;
                    assCamTrans.Rotate(Vector3.up, angleAroundUp, Space.World);

                    Quaternion q2 = Quaternion.AngleAxis(angleAroundRight, assCamTrans.right);
                    assCamTrans.Rotate(assCamTrans.right, angleAroundRight, Space.World);
                    assCamTrans.localPosition = q2 * assCamTrans.localPosition;

                    assCamTrans.localPosition += currCtrl.assCentter;
                }

                currCtrl.RequestRepaint();
            }
        }

        if (currCtrl.moveDragging)
        {
            float moveX = -mouseMoveDelta.x * 0.01f;
            float moveY = mouseMoveDelta.y * 0.01f;

            if (!is2DView)
            {//3D视图
                Vector3 localPos = camTrans.localPosition - currCtrl.center;
                currCtrl.center       += camTrans.up * moveY + camTrans.right * moveX;
                camTrans.localPosition = localPos + currCtrl.center;
            }

            currCtrl.RequestRepaint();
        }

        float zoom = 0.0f;

        if (currCtrl.zoomWheelScroll)
        {
            zoom = wheelScrollDelta.y * 0.2f;
        }
        else if (currCtrl.zoomDragging)
        {
            zoom = mouseMoveDelta.y * 0.01f;
        }

        if (currCtrl.zoomWheelScroll || currCtrl.zoomDragging)
        {
            if (!is2DView)
            {
                currCtrl.radius += zoom;
                currCtrl.radius  = Mathf.Clamp(currCtrl.radius, currCtrl.minRadius, currCtrl.maxRadius);

                Vector3 localPos = (camTrans.localPosition - currCtrl.center).normalized * currCtrl.radius;
                camTrans.localPosition = localPos + currCtrl.center;
            }
            else
            {
                if (currCtrl.zoomDragging)
                {//缩放拖拽在2D视图中是移动
                    float offsetX = (-mouseMoveDelta.x / cam.pixelWidth) * cam.orthographicSize * 2.0f;
                    float offsetY = (mouseMoveDelta.y / cam.pixelHeight) * cam.orthographicSize * 2.0f;
                    camTrans.localPosition += new Vector3(offsetX, offsetY);
                }
                else
                {
                    if (zoom < 0.0f)
                    {
                        cam.orthographicSize *= 0.9f;
                    }
                    else
                    {
                        cam.orthographicSize *= 1.1f;
                    }
                }
            }
            currCtrl.RequestRepaint();
        }
    }
Esempio n. 15
0
    public override void Visit(EditorControl c)
    {
        currCtrl = c as PlayCtrl;

        if (
            (null == currCtrl)
            )
        {
            return;
        }

        EditorGUI.BeginDisabledGroup(!currCtrl.Enable);

        EditorGUILayout.BeginHorizontal();
        float newPlayTime = 0.0f;

        try
        {
            GUI.SetNextControlName(currCtrl.CtrlID);
            newPlayTime =
                EditorGUILayout.Slider(currCtrl.PlayTime, 0.0f, currCtrl.TotalTime,
                                       new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(20f), GUILayout.MinWidth(300f) });
        }catch (Exception e)
        {
            e.GetType();
            //Debug.Log(e.Message);
        }

        EditorGUI.EndDisabledGroup();

        c.UpdateLastRect();

        CheckInputEvent(c);

        //若鼠标在播放条发生点按事件,暂停播放
        if (c.LastRect.Contains(CalcLocalPos(c, FrameInputInfo.GetInstance().currPos)))
        {
            if (
                FrameInputInfo.GetInstance().leftButtonDown&&
                FrameInputInfo.GetInstance().leftBtnPress&&
                c.IsCurrentCtrlEnable()
                )
            {
                currCtrl.Pause();
            }
        }

        if (!currCtrl.IsPlaying)
        {
            if (Mathf.Abs(currCtrl.PlayTime - newPlayTime) > Mathf.Epsilon)
            {
                currCtrl.frameTriggerInfo.isValueChanged = true;
            }
            currCtrl.PlayTime      = newPlayTime;
            currCtrl.IsForceUpdate = false;
        }

        EditorGUI.BeginDisabledGroup(!currCtrl.Enable);

        GUILayoutOption[] btnOptions = new GUILayoutOption[] {
            GUILayout.Width(40), GUILayout.Height(20)
        };

        if (!currCtrl.IsPlaying)
        {
            if (GUILayout.Button("播放", btnOptions))
            {
                currCtrl.Play();
                currCtrl.frameTriggerInfo.isValueChanged = true;
                currCtrl.frameTriggerInfo.isPlay         = true;
            }
        }
        else
        {
            if (GUILayout.Button("暂停", btnOptions))
            {
                currCtrl.Pause();
                currCtrl.frameTriggerInfo.isValueChanged = true;
                currCtrl.frameTriggerInfo.isPause        = true;
            }
        }
        //if( GUILayout.Button("播放", btnOptions) )
        //{
        //    currCtrl.Play();
        //    currCtrl.frameTriggerInfo.isValueChanged = true;
        //    currCtrl.frameTriggerInfo.isPlay = true;
        //}
        //if( GUILayout.Button("暂停", btnOptions) )
        //{
        //    currCtrl.Pause();
        //    currCtrl.frameTriggerInfo.isValueChanged = true;
        //    currCtrl.frameTriggerInfo.isPause = true;
        //}
        if (GUILayout.Button("停止", btnOptions))
        {
            currCtrl.Stop();
            currCtrl.frameTriggerInfo.isValueChanged = true;
            currCtrl.frameTriggerInfo.isStop         = true;
        }

        EditorGUILayout.LabelField("Loop", GUILayout.Width(30f));
        currCtrl.IsLoop = EditorGUILayout.Toggle(currCtrl.IsLoop, GUILayout.Width(20f));

        EditorGUI.EndDisabledGroup();


        EditorGUILayout.EndHorizontal();

        SpecialEffectEditorUtility.GetLastRect(ref totalRect);

        CheckInputEvent(c, totalRect);
    }
Esempio n. 16
0
    private void HandleMouseAction(ListViewCtrl list, int curIndex)
    {
        if (
            (null == list) ||
            (!list.IsCurrentCtrlEnable())
            )
        {
            return;
        }

        if (!list.LastRect.Contains(CalcLocalPos(list, FrameInputInfo.GetInstance().currPos)))
        {
            return;
        }

        bool    bIsFind       = false;
        Vector2 localMousePos = list.CalcLocalPos(FrameInputInfo.GetInstance().currPos);

        localMousePos += list.ScrollPos;

        //Ctrl + LButtonPress
        if (
            FrameInputInfo.GetInstance().leftBtnPress&& Event.current.control &&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            foreach (var index in list.SelectItems)
            {
                if (curIndex == index)
                {
                    bIsFind = true;
                    break;
                }
            }

            if (!bIsFind)
            {
                list.SelectItems.Add(curIndex);
                list.LastSelectItem = curIndex;
                list.frameTriggerInfo.isCtrlSelectItem   = true;
                list.frameTriggerInfo.lastCtrlSelectItem = list.LastSelectItem;
            }
            else
            {
                m_TargetCtrl   = list;
                m_IsNeedRemove = true;
            }

            CustomDragPrepare(list);

            list.RequestRepaint();
        }
        //Ctrl + LButtonPressUp
        else if (
            FrameInputInfo.GetInstance().leftBtnPressUp&& Event.current.control &&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            foreach (var index in list.SelectItems)
            {
                if (curIndex == index)
                {
                    bIsFind = true;
                    break;
                }
            }

            if (m_IsNeedRemove && (list.Name == m_TargetCtrl.Name))
            {
                list.SelectItems.Remove(curIndex);
                UpdateLastSelectItemAfterRemove(list, curIndex);
                list.frameTriggerInfo.isCtrlSelectItem   = true;
                list.frameTriggerInfo.lastCtrlSelectItem = list.LastSelectItem;
                m_IsNeedRemove = false;
                m_TargetCtrl   = null;
            }

            list.RequestRepaint();
        }
        //LButtonPress
        else if (
            FrameInputInfo.GetInstance().leftBtnPress&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            foreach (var index in list.SelectItems)
            {
                if (curIndex == index)
                {
                    bIsFind = true;
                    break;
                }
            }

            if (!bIsFind)
            {
                list.SelectItems.Clear();
                list.SelectItems.Add(curIndex);
                list.LastSelectItem = curIndex;
                list.frameTriggerInfo.lastSelectItem = curIndex;
            }
            else
            {
                m_TargetCtrl   = list;
                m_IsNeedRemove = true;
            }

            CustomDragPrepare(list);

            list.RequestRepaint();
        }
        //LButtonPressUp
        else if (
            FrameInputInfo.GetInstance().leftBtnPressUp&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            if (m_IsNeedRemove && (list.Name == m_TargetCtrl.Name))
            {
                list.SelectItems.Clear();
                list.SelectItems.Add(curIndex);
                list.LastSelectItem = curIndex;
                list.frameTriggerInfo.lastSelectItem = curIndex;

                m_IsNeedRemove = false;
                m_TargetCtrl   = null;
            }

            list.RequestRepaint();
        }
        //LButtonDoubleClick
        else if (
            FrameInputInfo.GetInstance().leftBtnDoubleClick&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            list.SelectItems.Clear();
            list.SelectItems.Add(curIndex);
            list.LastSelectItem = curIndex;
            list.frameTriggerInfo.lastSelectItem = curIndex;
            list.frameTriggerInfo.isDoubleClick  = true;
            list.ClickObject = curIndex;

            list.RequestRepaint();
        }
        //LButtonOnPress
        else if (
            FrameInputInfo.GetInstance().leftBtnOnPress&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            list.frameTriggerInfo.isOnPress = true;
            list.ClickObject = curIndex;

            list.RequestRepaint();
        }
        //RButtonDown
        else if (
            FrameInputInfo.GetInstance().rightBtnPress&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            foreach (var index in list.SelectItems)
            {
                if (curIndex == index)
                {
                    bIsFind = true;

                    break;
                }
            }

            if (!bIsFind)
            {
                list.SelectItems.Clear();
                list.SelectItems.Add(curIndex);
            }
            list.LastSelectItem = curIndex;
            list.frameTriggerInfo.lastSelectItemR = curIndex;

            list.RequestRepaint();
        }
        //RButtonUP
        else if (
            FrameInputInfo.GetInstance().rightBtnPressUp&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            list.frameTriggerInfo.lastSelectItemRU = curIndex;

            list.RequestRepaint();
        }
        //Drag
        else if (
            FrameInputInfo.GetInstance().drag&&
            list.Items[curIndex].lastRect.Contains(localMousePos)
            )
        {
            CustomDragStart(list);

            list.RequestRepaint();
        }
        else
        {
            //do nothing
        }
    }
Esempio n. 17
0
    private void HandleDragAction(ListViewCtrl list)
    {
        if (
            (null == list) ||
            !list.IsCurrentCtrlEnable()
            )
        {
            return;
        }

        if (
            (list.LastRect.Contains(FrameInputInfo.GetInstance().currPos) &&
             FrameInputInfo.GetInstance().dragingObjs&& !m_IsCusDragStart)
            )
        {
            bool accept = false;

            if (list.onAcceptDragObjs != null)
            {
                accept = list.onAcceptDragObjs(
                    list,
                    FrameInputInfo.GetInstance().dragObjs,
                    FrameInputInfo.GetInstance().dragObjsPaths);

                if (accept)
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Link;

                    if (!FrameInputInfo.GetInstance().dragObjsPerform)
                    {
                        list.frameTriggerInfo.isDraggingObjs = true;
                    }
                    else
                    {
                        list.frameTriggerInfo.isDropObjs = true;
                    }
                }
                else
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Rejected;
                }
            }
            else
            {
                DragAndDrop.visualMode = DragAndDropVisualMode.Rejected;
            }
        }
        //DragUpdated
        else if (
            (list.LastRect.Contains(FrameInputInfo.GetInstance().currPos)) &&
            (FrameInputInfo.GetInstance().customDragUpdated)
            )
        {
            CustomDragUpdated(list);

            list.RequestRepaint();
        }
        //DragAccept ctrl
        else if (
            FrameInputInfo.GetInstance().dragObjsPerform&& Event.current.control &&
            list.LastRect.Contains(FrameInputInfo.GetInstance().currPos)
            )
        {
            CustomDragAccept(list, true);

            list.RequestRepaint();
        }
        else if (
            FrameInputInfo.GetInstance().dragObjsPerform&&
            list.LastRect.Contains(FrameInputInfo.GetInstance().currPos)
            )
        {
            CustomDragAccept(list, false);

            list.RequestRepaint();
        }
    }
Esempio n. 18
0
    private void HandleMouseInput(TreeViewNode n)
    {
        if (
            (null == n) ||
            (null == currCtrl) ||
            !currCtrl.IsCurrentCtrlEnable() ||
            currCtrl.IsEventTriggered()
            )
        {
            return;
        }

        if (!currCtrl.LastRect.Contains(CalcLocalPos(currCtrl, FrameInputInfo.GetInstance().currPos)))
        {
            return;
        }

        //CheckInputEvent(currCtrl);

        //处理树状控件节点点击
        Vector2 currMousePos  = FrameInputInfo.GetInstance().currPos;
        Vector2 localMousePos = currCtrl.CalcLocalPos(currMousePos);

        float scrollBarWidth = 16f;
        Rect  viewRect       = new Rect(currCtrl.LastRect);

        viewRect.width  = currCtrl.LastRect.width - scrollBarWidth;
        viewRect.height = currCtrl.LastRect.height - scrollBarWidth;

        if (
            n.lastRect.Contains(localMousePos + currCtrl.scrollPos) &&
            viewRect.Contains(currMousePos) &&
            FrameInputInfo.GetInstance().leftBtnPress
            )
        {
            if (!Object.ReferenceEquals(currCtrl.currSelectNode, n))
            {
                currCtrl.frameTriggerInfo.lastSelectItem = 0;
            }
            currCtrl.currSelectNode = n;

            currCtrl.frameTriggerInfo.isPressDown = true;

            CustomDragPrepare(currCtrl);

            RequestRepaint();
        }
        else if (
            n.lastRect.Contains(localMousePos + currCtrl.scrollPos) &&
            viewRect.Contains(currMousePos) &&
            FrameInputInfo.GetInstance().leftBtnDoubleClick
            )
        {
            if (!Object.ReferenceEquals(currCtrl.currSelectNode, n))
            {
                currCtrl.frameTriggerInfo.lastSelectItem = 0;
            }

            currCtrl.frameTriggerInfo.isDoubleClick = true;
            currCtrl.ClickObject    = n;
            currCtrl.currSelectNode = n;

            RequestRepaint();
        }
        else if (
            n.lastRect.Contains(localMousePos + currCtrl.scrollPos) &&
            viewRect.Contains(currMousePos) &&
            FrameInputInfo.GetInstance().leftBtnOnPress
            )
        {
            currCtrl.frameTriggerInfo.isOnPress = true;
            currCtrl.ClickObject = n;

            RequestRepaint();
        }
        else if (
            n.lastRect.Contains(localMousePos + currCtrl.scrollPos) &&
            viewRect.Contains(currMousePos) &&
            FrameInputInfo.GetInstance().leftBtnPressUp
            )
        {
            currCtrl.frameTriggerInfo.isPressUp = true;
            currCtrl.ClickObject = null;

            RequestRepaint();
        }
        else if (
            n.lastRect.Contains(localMousePos + currCtrl.scrollPos) &&
            viewRect.Contains(currMousePos) &&
            FrameInputInfo.GetInstance().drag
            )
        {
            CustomDragStart(currCtrl);
        }
        else if (
            n.lastRect.Contains(localMousePos + currCtrl.scrollPos) &&
            viewRect.Contains(currMousePos) &&
            FrameInputInfo.GetInstance().rightBtnPress
            )
        {
            currCtrl.frameTriggerInfo.isRPressDown = true;
            if (!Object.ReferenceEquals(currCtrl.currSelectNode, n))
            {
                currCtrl.frameTriggerInfo.lastSelectItem = 0;
            }
            currCtrl.currSelectNode = n;

            RequestRepaint();
        }
        else if (
            n.lastRect.Contains(localMousePos + currCtrl.scrollPos) &&
            viewRect.Contains(currMousePos) &&
            FrameInputInfo.GetInstance().rightBtnPressUp
            )
        {
            currCtrl.frameTriggerInfo.isRPressUP = true;

            RequestRepaint();
        }
    }