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); }
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); }
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)); } }
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); }
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); }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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); }
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) { }
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); }