protected virtual void Awake() { //register interactions: Register(_leftIndexStatus); Register(_leftIndexMCPStatus); Register(_leftMiddleMCPStatus); Register(_rightIndexStatus); Register(_rightIndexMCPStatus); Register(_rightMiddleMCPStatus); Register(_colliderStatus); //refs: _audioSource = GetComponent <AudioSource>(); //trigger volume: _trigger = gameObject.AddComponent <BoxCollider>(); _trigger.isTrigger = true; _trigger.size = Vector3.zero; //hooks: OnPressUpdated.AddListener(HandlePressUpdated); OnHoverUpdated.AddListener(HandleHoverUpdated); OnPressed.AddListener(HandlePressed); OnReleased.AddListener(HandleReleased); OnTouchEnd.AddListener(HandleTouchEnd); OnHoverEnd.AddListener(HandleHoverEnd); OnCanceled.AddListener(HandleCanceled); //sets: ResetElement(); ResetFrame(); ResetColors(); }
private void OnDestroy() { EndTouch(); onTouchBegin = null; onTouchEnd = null; onTouchMove = null; }
public static void Update() { if (Input.touchCount != TouchCount && OnTouchCountChanged != null) { TouchCount = Input.touchCount; OnTouchCountChanged(); } if (Input.touchCount > 0) { for (int i = 0; i < Input.touchCount; ++i) { Touch currentTouch = Input.touches[i]; TouchInfo touchInfo = GetTouchInfo(currentTouch); if (touchInfo == null) { touchInfos.Add(new TouchInfo(currentTouch)); } else { touchInfo.UpdateInfo(currentTouch); } switch (currentTouch.phase) { case TouchPhase.Began: OnTouchStart?.Invoke(touchInfo); break; case TouchPhase.Stationary: OnTouchHold?.Invoke(touchInfo); break; case TouchPhase.Moved: OnTouchMove?.Invoke(touchInfo); break; case TouchPhase.Ended: touchInfos.Remove(touchInfo); OnTouchEnd?.Invoke(touchInfo); break; case TouchPhase.Canceled: touchInfos.Remove(touchInfo); OnTouchCancel?.Invoke(touchInfo); break; default: continue; } } } }
void OnTapUp(int fingerId, Vector3 tapPosition) { myRay = mainCamera.ScreenPointToRay(tapPosition); Physics.Raycast(myRay, out hitInfo, raycastLength, Camera.main.cullingMask, QueryTriggerInteraction.Collide); if (uiScreenPressed) { OnUITouchEnd?.Invoke(fingerId, tapPosition, hitInfo); uiScreenPressed = false; } else { OnTouchEnd?.Invoke(fingerId, tapPosition, hitInfo); } }
protected virtual Task HandleTouchEnd(TouchEventArgs args) { return(OnTouchEnd.InvokeAsync(args)); }
internal void DispatchEvent(Map map, MapJsEventArgs eventArgs) { switch (eventArgs.Type) { case "click": OnClick?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "contextmenu": OnContextMenu?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "dblclick": OnDblClick?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "layeradded": OnLayerAdded?.Invoke(new MapEventArgs(map, eventArgs.Type)); break; case "layerremoved": OnLayerRemoved?.Invoke(new MapEventArgs(map, eventArgs.Type)); break; case "mousedown": OnMouseDown?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "mouseenter": OnMouseEnter?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "mouseleave": OnMouseLeave?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "mousemove": OnMouseMove?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "mouseout": OnMouseOut?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "mouseover": OnMouseOver?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "mouseup": OnMouseUp?.Invoke(new MapMouseEventArgs(map, eventArgs)); break; case "touchcancel": OnTouchCancel?.Invoke(new MapTouchEventArgs(map, eventArgs)); break; case "touchend": OnTouchEnd?.Invoke(new MapTouchEventArgs(map, eventArgs)); break; case "touchmove": OnTouchMove?.Invoke(new MapTouchEventArgs(map, eventArgs)); break; case "touchstart": OnTouchStart?.Invoke(new MapTouchEventArgs(map, eventArgs)); break; case "wheel": OnWheel?.Invoke(new MapEventArgs(map, eventArgs.Type)); break; } }
private void UpdateTouches() { if (input == null || input.TouchCount() == 0) { return; } if (input.TouchCount() == 1) { TouchInfo touchInfo = input.GetTouch(0); if (currentTouch.GestureType == GestureType.None) { actionStartTime = Time.realtimeSinceStartup; } touchInfo.StartTime = actionStartTime; if (touchInfo.Phase == TouchPhase.Began) { Touch touch = new Touch { TouchInfo = touchInfo, GestureType = GestureType.None, SwipeDirection = SwipeDirection.None, SwipeLength = 0, SwipeVector = Vector2.zero }; currentTouch = touch; OnTouchStart?.Invoke(touch); } if (touchInfo.Phase == TouchPhase.Moved) { OnTouch?.Invoke(new Touch { TouchInfo = touchInfo, GestureType = GestureType.None, }); if (touchInfo.PositionDelta.magnitude >= settings.GetSwipeLengthInPixels()) { Touch touch = new Touch { TouchInfo = touchInfo, GestureType = GestureType.Swipe, SwipeDirection = GetSwipeDirection(touchInfo.Position - touchInfo.PositionDelta, touchInfo.Position), SwipeLength = touchInfo.PositionDelta.magnitude, SwipeVector = touchInfo.PositionDelta }; switch (currentTouch.GestureType) { case GestureType.None: OnSwipeStart?.Invoke(touch); break; case GestureType.Swipe: OnSwipe?.Invoke(touch); break; } currentTouch = touch; return; } } if (touchInfo.Phase == TouchPhase.Stationary) { OnTouch?.Invoke(new Touch { TouchInfo = touchInfo, GestureType = GestureType.None, }); touchInfo.ActionTime = Time.realtimeSinceStartup - touchInfo.StartTime; currentTouch = new Touch { TouchInfo = touchInfo, GestureType = GestureType.Tap, SwipeDirection = SwipeDirection.None, SwipeLength = 0, SwipeVector = Vector2.zero }; } if (touchInfo.Phase == TouchPhase.Ended) { OnTouchEnd?.Invoke(new Touch { TouchInfo = touchInfo, GestureType = GestureType.None, }); switch (currentTouch.GestureType) { case GestureType.Swipe: OnSwipeEnd?.Invoke(currentTouch); break; case GestureType.Tap when currentTouch.TouchInfo.ActionTime <= settings.TapTime: OnTap?.Invoke(currentTouch); break; } } } if (input.TouchCount() == 2) { TouchInfo touch0 = input.GetTouch(0); TouchInfo touch1 = input.GetTouch(1); if (currentTouch.GestureType == GestureType.None) { actionStartTime = Time.realtimeSinceStartup; } touch0.StartTime = actionStartTime; if (touch0.Phase == TouchPhase.Began || touch1.Phase == TouchPhase.Began) { Pinch pinch = new Pinch { TouchInfos = new [] { touch0, touch1 }, GestureType = GestureType.None, PinchVector = touch0.Position - touch1.Position }; currentPinch = pinch; OnPinchStart?.Invoke(currentPinch); } if (touch0.Phase != TouchPhase.Stationary || touch0.Phase == TouchPhase.Moved || touch1.Phase != TouchPhase.Stationary || touch1.Phase == TouchPhase.Moved) { Pinch pinch = new Pinch { TouchInfos = new [] { touch0, touch1 }, GestureType = GestureType.Pinch, PinchVector = touch0.Position - touch1.Position }; currentPinch = pinch; OnPinch?.Invoke(currentPinch); } if (touch0.Phase == TouchPhase.Ended || touch1.Phase == TouchPhase.Ended) { Pinch pinch = new Pinch { TouchInfos = new [] { touch0, touch1 }, GestureType = GestureType.Pinch, PinchVector = touch0.Position - touch1.Position }; currentPinch = pinch; OnPinchEnd?.Invoke(currentPinch); } } }
public override void TouchesEnded(NSSet touches, UIEvent evt) { base.TouchesEnded(touches, evt); OnTouchEnd?.Invoke(); }