示例#1
0
    public override void HandlerActionTouch(TouchControllersState state, TouchGroup touches, float touchOneStateMoveTime = 0.0f, float touchOneStateTime = 0.0f, CheckingRayIntoObject checkingRay = null)
    {
        Touch[] touchOne  = touches.touchOne;
        Touch[] touchTwo  = touches.touchTwo;
        Touch[] touchTree = touches.touchTree;


        Vector3 point1      = Vector3.zero;
        Vector3 point2      = Vector3.zero;
        Vector3 point1Delta = Vector3.zero;
        Vector3 point2Delta = Vector3.zero;

        if (touchOne != null)
        {
            point1      = touchOne[0].position;
            point1Delta = touchOne[0].deltaPosition;
        }
        if (touchTwo != null)
        {
            point2      = touchTwo[0].position;
            point2Delta = touchTwo[0].deltaPosition;
        }
#if UNITY_EDITOR
        if (MouseButtonState)
        {
            point1      = Start_editorMousposition;
            point2      = Input.mousePosition + new Vector3(100.0f * -mouseScrollWheel, 100.0f * -mouseScrollWheel, 100.0f * -mouseScrollWheel);
            point1Delta = new Vector3(100.0f * (mouseScrollWheelOld - mouseScrollWheel), 100.0f * (mouseScrollWheelOld - mouseScrollWheel), 100.0f * (mouseScrollWheelOld - mouseScrollWheel));
            point2Delta = new Vector3(100.0f * (mouseScrollWheelOld - mouseScrollWheel), 100.0f * (mouseScrollWheelOld - mouseScrollWheel), 100.0f * (mouseScrollWheelOld - mouseScrollWheel));
        }
#endif

        ZoomEvent(stateT, point1, point2, point1Delta, point2Delta);
    }
示例#2
0
    private void DragEvent(TouchControllersState state, Vector3 point1, Vector3 point1Delta, float EventTime)
    {
        /*
         *  Событие перемешения обьекта, имеет 3 состояния Старт,работа,конец
         *  Происхотит при попадании в Drag обьекты, без учета пальцев попавших в элементы UI.
         *  При В старте нужно реализовать выдиление здания
         *  При В работа перемешение, в конце проверку на отпускания браг обьекта.
         *  Дополнительные проверки не нужны
         *  point1 - палец 1
         *  point1Delta - дульта перемешения пальца 1
         *  EventTime - Время нахождения пальца в одном состоянии
         */
#if DEBUG_LOG
        Log.Write("DragEvent: " + state.ToString() + " p1:" + point1.ToString() + " dp1:" + point1Delta.ToString());
#endif
        DragModel dragModel = new DragModel()
        {
            stateT      = state,
            EventTime   = EventTime,
            point1      = point1,
            point1Delta = point1Delta
        };

        MainContextView.DispatchStrangeEvent(EventGlobal.E_TouchAndMouseGestures_Drag, dragModel);
    }
示例#3
0
    public override void HandlerActionTouch(TouchControllersState state, TouchGroup touches, float touchOneStateMoveTime = 0.0f, float touchOneStateTime = 0.0f, CheckingRayIntoObject checkingRay = null)
    {
        Touch[] touchOne  = touches.touchOne;
        Touch[] touchTwo  = touches.touchTwo;
        Touch[] touchTree = touches.touchTree;
        Vector3 point1    = Vector3.zero;

        if (touchOne != null)
        {
            point1 = touchOne[0].position;
            HoldEvent(state, point1, touchOneStateTime, checkingRay(point1));
        }
    }
示例#4
0
 public override TouchControllersState HandlerFindTouch(TouchGroup touches, float touchOneStateMoveTime = 0.0f, float touchOneStateTime = 0.0f, CheckingRayIntoObject checkingRay = null)
 {
     Touch[] touchOne  = touches.touchOne;
     Touch[] touchTwo  = touches.touchTwo;
     Touch[] touchTree = touches.touchTree;
     if (stateT == TouchControllersState.TCS_None)
     {
         if (touchOne != null && touchTwo == null)
         {
             /*
              * Начало Драга:
              * Случай 1: (1 B)(1 S) + S(>0.3C)
              */
             if ((touchOne[1].phase == TouchPhase.Began || touchOne[0].phase == TouchPhase.Stationary) && checkingRay(touchOne[0].position))
             {
                 stateT = TouchControllersState.TCS_Start;
                 return(stateT);
             }
         }
     }
     else if (stateT == TouchControllersState.TCS_Start)
     {
         stateT = TouchControllersState.TCS_Action;
         return(stateT);
     }
     else if (stateT == TouchControllersState.TCS_Action)
     {
         /*
          *  Драг
          *  Случай 1: (1 M)
          *  Конец Драга:
          *  Случай 1: (1 E)
          */
         if ((touchOne == null || touchTwo != null ||
              touchOne[0].phase == TouchPhase.Ended))
         {
             touchOneStateTime = 0;
             stateT            = TouchControllersState.TCS_End;
             return(stateT);
         }
     }
     else if (stateT == TouchControllersState.TCS_End)
     {
         stateT = TouchControllersState.TCS_None;
         return(stateT);
     }
     return(stateT);
 }
示例#5
0
    private void HoldEvent(TouchControllersState stateT, Vector3 point1, float EventTime, bool isHoldOnDragObject)
    {
        /*
         *  Событие Зашатия пальца на экране, не имеет состояний срабатывает зажатии пальца в одном месте, без учета пальцев попавших в элементы UI.
         *  isHoldOnDragObject - параметер определяюший произходил ли там над Drag обьектом
         */
#if DEBUG_LOG
        Log.Write("HoldEvent p1:" + point1.ToString() + " EventTime:" + EventTime.ToString() + " isDragObject:" + isHoldOnDragObject.ToString());
#endif
        HoldModel tapModel = new HoldModel()
        {
            stateT             = stateT,
            point1             = point1,
            EventTime          = EventTime,
            isHoldOnDragObject = isHoldOnDragObject
        };
        MainContextView.DispatchStrangeEvent(EventGlobal.E_TouchAndMouseGestures_Hold, tapModel);
    }
 public void UpdateMainContextInput()
 {
     updateTouchArray();
     foreach (BaseTouchControllers controller in TouchControllers)
     {
         TouchControllersState state = controller.HandlerFindTouch(TouchesGroup, TouchesGroup.touchOneStateMoveTime, TouchesGroup.touchOneStateTime, TestDragObjectPosition);
         if (state != TouchControllersState.TCS_None)
         {
             controller.HandlerActionTouch(state, TouchesGroup, TouchesGroup.touchOneStateMoveTime, TouchesGroup.touchOneStateTime, TestDragObjectPosition);
             if (controller.AbortOtherTouches())
             {
                 foreach (BaseTouchControllers controllerbreak in TouchControllers)
                 {
                     controllerbreak.BreakTouch(TouchesGroup, TouchesGroup.touchOneStateMoveTime, TouchesGroup.touchOneStateTime, TestDragObjectPosition);
                 }
                 return;
             }
         }
     }
 }
    private void TapEvent(TouchControllersState stateT, Vector3 point1, int tapCount, bool isTapOnDragObject)
    {
        tapGlobalCount++;

        /*
         *  —обытие тапа по экрану, не имеет состо¤ний срабатывает при отпускании тапа, без учета пальцев попавших в элементы UI.
         *  isTapOnDragObject - параметер определ¤юший произходил ли там над Drag обьектом
         */
#if DEBUG_LOG
        Log.Write("TapEvent p1:" + point1.ToString() + " tapCount:" + tapCount.ToString() + " isDragObject:" + isTapOnDragObject.ToString());
#endif
        TapModel tapModel = new TapModel()
        {
            stateT            = stateT,
            point1            = point1,
            tapCount          = tapCount,
            isTapOnDragObject = isTapOnDragObject,
            tapGlobalCount    = tapGlobalCount
        };
        MainContextView.DispatchStrangeEvent(EventGlobal.E_TouchAndMouseGestures_Tap, tapModel);
    }
示例#8
0
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    private void SwipeEvent(TouchControllersState _stateT, Vector3 point1, Vector3 point1Delta, float EventTime)
    {
        /*
         *  Событие протягивания пальца, имеет 3 состояния Старт,работа,конец
         *  Происхотит при резком здвижении пальца куда либо, без учета попадания в Drag обьекты, без учета пальцев попавших в элементы UI
         *  Дополнительные проверки не нужны
         *  point1 - палец 1
         *  point1Delta - дульта перемешения пальца 1
         *  EventTime - Время нахождения пальца в одном состоянии
         */
#if DEBUG_LOG
        Log.Write("SwipeEvent: " + _stateT.ToString() + " p1:" + point1.ToString() + " dp1:" + point1Delta.ToString());
#endif
        SwipeModel swipe = new SwipeModel
        {
            point1      = point1,
            point1Delta = point1Delta,
            EventTime   = EventTime,
            stateT      = _stateT
        };
        MainContextView.DispatchStrangeEvent(EventGlobal.E_TouchAndMouseGestures_Swipe, swipe);
    }
示例#9
0
    private void ZoomEvent(TouchControllersState _stateT, Vector3 point1, Vector3 point2, Vector3 point1Delta, Vector3 point2Delta)
    {
        /*
         *  Событие зума, имеет 3 состояния Старт,работа,конец
         *  Происхотит при работе двумя пальцами, без учета пальцев попавших в элементы UI
         *  Дополнительные проверки не нужны
         *  point1 - палец 1
         *  point2 - палец 2
         *  point1Delta - дульта перемешения пальца 1
         *  point2Delta - дульта перемешения пальца 2
         */
#if DEBUG_LOG
        Log.Write("ZoomEvent: " + _stateT.ToString() + " p1:" + point1.ToString() + " dp1:" + point1Delta.ToString() + " p2:" + point2.ToString() + " dp2:" + point2Delta.ToString());
#endif
        ZoomModel zoom = new ZoomModel
        {
            point1      = point1,
            point1Delta = point1Delta,
            point2      = point2,
            point2Delta = point2Delta,
            stateT      = _stateT
        };
        MainContextView.DispatchStrangeEvent(EventGlobal.E_TouchAndMouseGestures_Zoom, zoom);
    }
 public virtual void HandlerActionTouch(TouchControllersState state, TouchGroup touches, float touchOneStateMoveTime = 0.0f, float touchOneStateTime = 0.0f, CheckingRayIntoObject checkingRay = null)
 {
 }
示例#11
0
    public override TouchControllersState HandlerFindTouch(TouchGroup touches, float touchOneStateMoveTime = 0.0f, float touchOneStateTime = 0.0f, CheckingRayIntoObject checkingRay = null)
    {
        Touch[] touchOne  = touches.touchOne;
        Touch[] touchTwo  = touches.touchTwo;
        Touch[] touchTree = touches.touchTree;
#if UNITY_EDITOR
        mouseScrollWheelOld = mouseScrollWheel;
        mouseScrollWheel   += Input.GetAxis("Mouse ScrollWheel");
#endif

        if (stateT == TouchControllersState.TCS_None)
        {
#if UNITY_EDITOR
            if (Input.GetMouseButton(1) && !MouseButtonState)
            {
                MouseButtonState         = true;
                mouseScrollWheel         = 0.0f;
                Start_editorMousposition = Input.mousePosition;
                stateT = TouchControllersState.TCS_Start;
                return(stateT);
            }
#endif


            if (touchTwo != null && touchOne != null)
            {
                /*
                 * Начало зума:
                 * Случай 1: (1 M)+(2 M)
                 * Случай 2: (1 M)+(2 S)
                 * Случай 3: (1 S)+(2 S)
                 * Случай 4: (1 S)+(2 M)
                 */
                if ((touchOne[0].phase == TouchPhase.Moved && touchTwo[0].phase == TouchPhase.Moved) ||
                    (touchOne[0].phase == TouchPhase.Moved && touchTwo[0].phase == TouchPhase.Stationary) ||
                    (touchOne[0].phase == TouchPhase.Stationary && touchTwo[0].phase == TouchPhase.Stationary) ||
                    (touchOne[0].phase == TouchPhase.Stationary && touchTwo[0].phase == TouchPhase.Moved))
                {
                    stateT = TouchControllersState.TCS_Start;
                    return(stateT);
                }
            }
        }
        else if (stateT == TouchControllersState.TCS_Start)
        {
            stateT = TouchControllersState.TCS_Action;
            return(stateT);
        }
        else if (stateT == TouchControllersState.TCS_Action)
        {
#if UNITY_EDITOR
            if (!Input.GetMouseButton(1) && MouseButtonState)
            {
                MouseButtonState = false;
                stateT           = TouchControllersState.TCS_End;
                return(stateT);
            }
#endif

            /*
             *             Зум
             *              Случай 1: (1 M)+(2 M)
             *              Случай 2: (1 M)+(2 S)
             *              Случай 3: (1 S)+(2 M)
             */
            /*
             *              Конец зума:
             *              Случай 1: (1 M)+(2 E)
             *              Случай 2: (1 S)+(2 E)
             *              Случай 3: (1 E)+(2 S)
             *              Случай 4: (1 E)+(2 M) */
            if (touchTwo == null || touchOne == null ||
                ((touchOne[0].phase == TouchPhase.Moved && touchTwo[0].phase == TouchPhase.Ended) ||
                 (touchOne[0].phase == TouchPhase.Stationary && touchTwo[0].phase == TouchPhase.Ended) ||
                 (touchOne[0].phase == TouchPhase.Ended && touchTwo[0].phase == TouchPhase.Stationary) ||
                 (touchOne[0].phase == TouchPhase.Ended && touchTwo[0].phase == TouchPhase.Moved) ||
                 (touchOne[0].phase == TouchPhase.Ended && touchTwo[0].phase == TouchPhase.Ended)))
            {
                stateT = TouchControllersState.TCS_End;
                return(stateT);
            }
        }
        else if (stateT == TouchControllersState.TCS_End)
        {
#if UNITY_EDITOR
            MouseButtonState = false;
#endif
            stateT = TouchControllersState.TCS_None;
            return(stateT);
        }
        return(stateT);
    }