void OnRotationRecognized(TKRotationRecognizer rotationRecognizer) { wasTwoFinger = true; if (selectedTouchCollider) { selectedTouchCollider.sticker.Rotate(Vector3.up, rotationRecognizer.deltaRotation * 2.0f); manipulating = true; } }
internal override void touchesMoved(List <TKTouch> touches) { if ((base.state == TKGestureRecognizerState.RecognizedAndStillRecognizing) || (base.state == TKGestureRecognizerState.Began)) { float current = TKRotationRecognizer.angleBetweenPoints(this.targetPosition, base._trackingTouches[0].position); base.deltaRotation = Mathf.DeltaAngle(current, base._previousRotation); base._previousRotation = current; base.state = TKGestureRecognizerState.RecognizedAndStillRecognizing; } }
private void OnRotation(TKRotationRecognizer recognizer) { var delta = recognizer.deltaRotation; var handler = OnRotationHandler; if (handler == null) { return; } handler(delta); }
internal override bool touchesBegan(List <TKTouch> touches) { if (base.state == TKGestureRecognizerState.Possible) { base._trackingTouches.Add(touches[0]); base.deltaRotation = 0f; base._previousRotation = TKRotationRecognizer.angleBetweenPoints(this.targetPosition, base._trackingTouches[0].position); base.state = TKGestureRecognizerState.Began; } return(false); }
private bool _hasActiveSimulatedTouch; // are we currently simulating multitouch with active touches (mouse is down)? /// <summary> /// returns true if mouse input should be processed as touch input. it will be true when the Unity Remote is not active. /// </summary> private bool shouldProcessMouseInput() { // check to see if the Unity Remote is active if (!_isUnityRemoteActive && Input.touchCount > 0) { Debug.LogWarning("disabling mouse input because we detected a Unity Remote connected"); _isUnityRemoteActive = true; } // if Unity remote is not active and alt is being held down we are simulating multitouch if (!_isUnityRemoteActive && (Input.GetKey(KeyCode.LeftAlt) || Input.GetKeyUp(KeyCode.LeftAlt))) { // record our start position when alt is pressed if (Input.GetKeyDown(KeyCode.LeftAlt)) { _simulatedMultitouchStartPosition = Input.mousePosition; _isSimulatingMultitouch = true; } else if (Input.GetKeyUp(KeyCode.LeftAlt)) { _hasActiveSimulatedTouch = false; _isSimulatingMultitouch = false; } else { // a mouse down now results in two touches being created. first we setup the position of the touches based on the original point when alt was pressed var radius = Vector3.Distance(Input.mousePosition, _simulatedMultitouchStartPosition); var angle = TKRotationRecognizer.angleBetweenPoints(_simulatedMultitouchStartPosition, Input.mousePosition); angle = Mathf.Deg2Rad * angle; var opposite = Mathf.Sin(angle) * radius; var adjacent = Mathf.Cos(angle) * radius; _simulatedMousePosition = new Vector3(_simulatedMultitouchStartPosition.x - adjacent, _simulatedMultitouchStartPosition.y - opposite); // if we get a mouse down event its time to populate the touches if (Input.GetMouseButtonUp(0) || Input.GetMouseButton(0)) { _hasActiveSimulatedTouch = true; _liveTouches.Add(_touchCache[0].populateFromMouse()); _liveTouches.Add(_touchCache[1].populateFromMouseAtPosition(_simulatedMousePosition)); } else { _hasActiveSimulatedTouch = false; } } } return(!_isUnityRemoteActive); }
public TouchKitInputSystem() { panRecognizer = new TKPanRecognizer(); pinchRecognizer = new TKPinchRecognizer(); rotationRecognizer = new TKRotationRecognizer(); panRecognizer.gestureRecognizedEvent += OnPan; pinchRecognizer.gestureRecognizedEvent += OnPinch; rotationRecognizer.gestureRecognizedEvent += OnRotation; TouchKit.addGestureRecognizer(panRecognizer); TouchKit.addGestureRecognizer(pinchRecognizer); TouchKit.addGestureRecognizer(rotationRecognizer); }
private void Start() { foreach (OnlineMapsMarker3D marker in markers3D.Where(m => !m.inited)) { marker.control = this; marker.Init(transform); } UpdateMarkers3D(); var recognizer = new TKRotationRecognizer(); recognizer.gestureRecognizedEvent += (r) => { cameraRotation.y -= recognizer.deltaRotation * cameraSpeed.x; Debug.Log("rotation recognizer fired: " + r); }; TouchKit.addGestureRecognizer(recognizer); }
private void OnEnable() { rotationRecognizer = new TKRotationRecognizer(); rotationRecognizer.gestureRecognizedEvent += (r) => { float rotaionValue = -(r.deltaRotation * 2.0f); if (rotationX) { transform.Rotate(rotaionValue, 0, 0); } else if (rotationY) { transform.Rotate(0, rotaionValue, 0); } else if (rotationZ) { transform.Rotate(0, 0, rotaionValue); } }; TouchKit.addGestureRecognizer(rotationRecognizer); }
void Start() { Application.targetFrameRate = 60; currentStickerParent = futureWorldStickerParent; currentStickerPicker = futureWorldStickerPicker; currentPostProcessVolume = normalPostProcessVolume; currentOverlay = futureWorldOverlay; screenCenter = new Vector3(Screen.width / 2, Screen.height / 2, 0); var pinchRecognizer = new TKPinchRecognizer(); pinchRecognizer.gestureRecognizedEvent += OnPinchRecognized; pinchRecognizer.gestureCompleteEvent += OnGestureComplete; TouchKit.addGestureRecognizer(pinchRecognizer); var rotationRecognizer = new TKRotationRecognizer(); rotationRecognizer.gestureRecognizedEvent += OnRotationRecognized; TouchKit.addGestureRecognizer(rotationRecognizer); var tapRecognizer = new TKTapRecognizer(); tapRecognizer.gestureRecognizedEvent += OnTapRecognized; TouchKit.addGestureRecognizer(tapRecognizer); SetupShowMainTableTweens(); }
private Vector2 _scrollPosition; // for the scroll view void OnGUI() { GUI.skin.button.padding = new RectOffset(10, 10, 20, 20); GUI.skin.button.fixedWidth = 250; GUILayout.BeginArea(new Rect(Screen.width - GUI.skin.button.fixedWidth - 20, 0, GUI.skin.button.fixedWidth + 20, Screen.height)); _scrollPosition = GUILayout.BeginScrollView(_scrollPosition, GUILayout.Width(GUI.skin.button.fixedWidth + 20), GUILayout.Height(Screen.height)); if (GUILayout.Button("Add Curve Recognizer")) { var recognizer = new TKCurveRecognizer(); recognizer.gestureRecognizedEvent += (r) => { cube.Rotate(Vector3.back, recognizer.deltaRotation); Debug.Log("curve recognizer fired: " + r); }; recognizer.gestureCompleteEvent += (r) => { Debug.Log("curve completed."); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Add Tap Recognizer")) { var recognizer = new TKTapRecognizer(); // we can limit recognition to a specific Rect, in this case the bottom-left corner of the screen recognizer.boundaryFrame = new TKRect(0, 0, 50f, 50f); // we can also set the number of touches required for the gesture if (Application.platform == RuntimePlatform.IPhonePlayer) { recognizer.numberOfTouchesRequired = 2; } recognizer.gestureRecognizedEvent += (r) => { Debug.Log("tap recognizer fired: " + r); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Add Long Press Recognizer")) { var recognizer = new TKLongPressRecognizer(); recognizer.gestureRecognizedEvent += (r) => { Debug.Log("long press recognizer fired: " + r); }; recognizer.gestureCompleteEvent += (r) => { Debug.Log("long press recognizer finished: " + r); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Add Pan Recognizer")) { var recognizer = new TKPanRecognizer(); // when using in conjunction with a pinch or rotation recognizer setting the min touches to 2 smoothes movement greatly if (Application.platform == RuntimePlatform.IPhonePlayer) { recognizer.minimumNumberOfTouches = 2; } recognizer.gestureRecognizedEvent += (r) => { Camera.main.transform.position -= new Vector3(recognizer.deltaTranslation.x, recognizer.deltaTranslation.y) / 100; Debug.Log("pan recognizer fired: " + r); }; // continuous gestures have a complete event so that we know when they are done recognizing recognizer.gestureCompleteEvent += r => { Debug.Log("pan gesture complete"); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Add Horizontal Swipe Recognizer")) { var recognizer = new TKSwipeRecognizer(TKSwipeDirection.Horizontal); recognizer.gestureRecognizedEvent += (r) => { Debug.Log("swipe recognizer fired: " + r); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Add Pinch Recognizer")) { var recognizer = new TKPinchRecognizer(); recognizer.gestureRecognizedEvent += (r) => { cube.transform.localScale += Vector3.one * recognizer.deltaScale; Debug.Log("pinch recognizer fired: " + r); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Add Rotation Recognizer")) { var recognizer = new TKRotationRecognizer(); recognizer.gestureRecognizedEvent += (r) => { cube.Rotate(Vector3.back, recognizer.deltaRotation); Debug.Log("rotation recognizer fired: " + r); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Add Button Recognizer")) { var recognizer = new TKButtonRecognizer(new TKRect(5f, 145f, 80f, 30f), 10f); recognizer.zIndex = 1; recognizer.onSelectedEvent += (r) => { Debug.Log("button recognizer selected: " + r); }; recognizer.onDeselectedEvent += (r) => { Debug.Log("button recognizer deselected: " + r); }; recognizer.onTouchUpInsideEvent += (r) => { Debug.Log("button recognizer touch up inside: " + r); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Add One Finger Rotation Recognizer")) { var recognizer = new TKOneFingerRotationRecognizer(); recognizer.targetPosition = Camera.main.WorldToScreenPoint(cube.position); recognizer.gestureRecognizedEvent += (r) => { cube.Rotate(Vector3.back, recognizer.deltaRotation); Debug.Log("one finger rotation recognizer fired: " + r); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Add Any Touch Recognizer")) { var recognizer = new TKAnyTouchRecognizer(new TKRect(10, 10, 80, 50)); recognizer.zIndex = 1; recognizer.onEnteredEvent += (r) => { Debug.Log("any touch entered: " + r); }; recognizer.onExitedEvent += (r) => { Debug.Log("any touch exited: " + r); }; TouchKit.addGestureRecognizer(recognizer); } if (GUILayout.Button("Remove All Recognizers")) { TouchKit.removeAllGestureRecognizers(); } GUILayout.EndScrollView(); GUILayout.EndArea(); }
private Vector2 _scrollPosition; // for the scroll view #endregion Fields #region Methods void OnGUI() { GUI.skin.button.padding = new RectOffset( 10, 10, 20, 20 ); GUI.skin.button.fixedWidth = 250; GUILayout.BeginArea( new Rect( Screen.width - GUI.skin.button.fixedWidth - 20, 0, GUI.skin.button.fixedWidth + 20, Screen.height ) ); _scrollPosition = GUILayout.BeginScrollView( _scrollPosition, GUILayout.Width( GUI.skin.button.fixedWidth + 20 ), GUILayout.Height( Screen.height ) ); if( GUILayout.Button( "Add Tap Recognizer" ) ) { var recognizer = new TKTapRecognizer(); // we can limit recognition to a specific Rect, in this case the bottom-left corner of the screen recognizer.boundaryFrame = new TKRect( 0, 0, 50f, 50f ); // we can also set the number of touches required for the gesture if( Application.platform == RuntimePlatform.IPhonePlayer ) recognizer.numberOfTouchesRequired = 2; recognizer.gestureRecognizedEvent += ( r ) => { Debug.Log( "tap recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Long Press Recognizer" ) ) { var recognizer = new TKLongPressRecognizer(); recognizer.gestureRecognizedEvent += ( r ) => { Debug.Log( "long press recognizer fired: " + r ); }; recognizer.gestureCompleteEvent += ( r ) => { Debug.Log( "long press recognizer finished: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Pan Recognizer" ) ) { var recognizer = new TKPanRecognizer(); // when using in conjunction with a pinch or rotation recognizer setting the min touches to 2 smoothes movement greatly if( Application.platform == RuntimePlatform.IPhonePlayer ) recognizer.minimumNumberOfTouches = 2; recognizer.gestureRecognizedEvent += ( r ) => { Camera.main.transform.position -= new Vector3( recognizer.deltaTranslation.x, recognizer.deltaTranslation.y ) / 100; Debug.Log( "pan recognizer fired: " + r ); }; // continuous gestures have a complete event so that we know when they are done recognizing recognizer.gestureCompleteEvent += r => { Debug.Log( "pan gesture complete" ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add TouchPad Recognizer" ) ) { var recognizer = new TKTouchPadRecognizer( new TKRect( 0f, 50f, 80f, 50f ) ); recognizer.inputCurve = touchPadInputCurve; recognizer.gestureRecognizedEvent += ( r ) => { //Camera.main.transform.position -= new Vector3( recognizer.deltaTranslation.x, recognizer.deltaTranslation.y ) / 100; Debug.Log( "touchpad recognizer fired: " + r ); }; // continuous gestures have a complete event so that we know when they are done recognizing recognizer.gestureCompleteEvent += r => { Debug.Log( "touchpad gesture complete" ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Horizontal Swipe Recognizer" ) ) { var recognizer = new TKSwipeRecognizer(); recognizer.gestureRecognizedEvent += ( r ) => { Debug.Log( "swipe recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Top-Right Swipe Recognizer" ) ) { var recognizer = new TKAngleSwipeRecognizer(); recognizer.addAngleRecogizedEvents ( (TKAngleSwipeRecognizer r) => { Debug.Log( "Top-Right angle swipe fired " + r ); }, new Vector2(1,1), 45); recognizer.gestureRecognizedEvent += r => { // You can also do ordinary event, which fires at any angle // Debug.Log( "angle swipe recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Pinch Recognizer" ) ) { var recognizer = new TKPinchRecognizer(); recognizer.gestureRecognizedEvent += ( r ) => { cube.transform.localScale += Vector3.one * recognizer.deltaScale; Debug.Log( "pinch recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Rotation Recognizer" ) ) { var recognizer = new TKRotationRecognizer(); recognizer.gestureRecognizedEvent += ( r ) => { cube.Rotate( Vector3.back, recognizer.deltaRotation ); Debug.Log( "rotation recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Button Recognizer" ) ) { var recognizer = new TKButtonRecognizer( new TKRect( 5f, 145f, 80f, 30f ), 10f ); recognizer.zIndex = 1; recognizer.onSelectedEvent += ( r ) => { Debug.Log( "button recognizer selected: " + r ); }; recognizer.onDeselectedEvent += ( r ) => { Debug.Log( "button recognizer deselected: " + r ); }; recognizer.onTouchUpInsideEvent += ( r ) => { Debug.Log( "button recognizer touch up inside: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add One Finger Rotation Recognizer" ) ) { var recognizer = new TKOneFingerRotationRecognizer(); recognizer.targetPosition = Camera.main.WorldToScreenPoint( cube.position ); recognizer.gestureRecognizedEvent += ( r ) => { cube.Rotate( Vector3.back, recognizer.deltaRotation ); Debug.Log( "one finger rotation recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Any Touch Recognizer" ) ) { var recognizer = new TKAnyTouchRecognizer( new TKRect( 10, 10, 80, 50 ) ); recognizer.zIndex = 1; recognizer.onEnteredEvent += ( r ) => { Debug.Log( "any touch entered: " + r ); }; recognizer.onExitedEvent += ( r ) => { Debug.Log( "any touch exited: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Curve Recognizer" ) ) { var recognizer = new TKCurveRecognizer(); recognizer.gestureRecognizedEvent += ( r ) => { cube.Rotate( Vector3.back, recognizer.deltaRotation ); Debug.Log( "curve recognizer fired: " + r ); }; recognizer.gestureCompleteEvent += ( r ) => { Debug.Log( "curve completed."); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Remove All Recognizers" ) ) { TouchKit.removeAllGestureRecognizers(); } GUILayout.EndScrollView(); GUILayout.EndArea(); }
private Vector2 _scrollPosition; // for the scroll view #endregion Fields #region Methods void OnGUI() { //GUI.matrix = Matrix4x4.Scale( new Vector3( 1.5f, 1.5f, 1.5f ) ); GUI.skin.button.padding = new RectOffset( 10, 10, 20, 20 ); GUI.skin.button.fixedWidth = 250; GUILayout.BeginArea( new Rect( Screen.width - GUI.skin.button.fixedWidth - 20, 0, GUI.skin.button.fixedWidth + 20, Screen.height ) ); _scrollPosition = GUILayout.BeginScrollView( _scrollPosition, GUILayout.Width( GUI.skin.button.fixedWidth + 20 ), GUILayout.Height( Screen.height ) ); if( GUILayout.Button( "Add Tap Recognizer" ) ) { var recognizer = new TKTapRecognizer(); // we can limit recognition to a specific Rect, in this case the bottom-left corner of the screen recognizer.boundaryFrame = new TKRect( 50, 50, 400, 400 ); // we can also set the number of touches required for the gesture if( Application.platform == RuntimePlatform.IPhonePlayer ) recognizer.numberOfTouchesRequired = 2; recognizer.gestureRecognizedEvent += ( r ) => { Debug.Log( "tap recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Long Press Recognizer" ) ) { var recognizer = new TKLongPressRecognizer(); recognizer.gestureRecognizedEvent += ( r ) => { Debug.Log( "long press recognizer fired: " + r ); }; recognizer.gestureCompleteEvent += ( r ) => { Debug.Log( "long press recognizer finished: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Pan Recognizer" ) ) { var recognizer = new TKPanRecognizer(); // when using in conjunction with a pinch or rotation recognizer setting the min touches to 2 smoothes movement greatly if( Application.platform == RuntimePlatform.IPhonePlayer ) recognizer.minimumNumberOfTouches = 2; recognizer.gestureRecognizedEvent += ( r ) => { Camera.mainCamera.transform.position -= new Vector3( recognizer.deltaTranslation.x, recognizer.deltaTranslation.y ) / 100; Debug.Log( "pan recognizer fired: " + r ); }; // continuous gestures have a complete event so that we know when they are done recognizing recognizer.gestureCompleteEvent += r => { Debug.Log( "pan gesture complete" ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Horizontal Swipe Recognizer" ) ) { var recognizer = new TKSwipeRecognizer( TKSwipeDirection.Horizontal ); recognizer.gestureRecognizedEvent += ( r ) => { Debug.Log( "swipe recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Pinch Recognizer" ) ) { var recognizer = new TKPinchRecognizer(); recognizer.gestureRecognizedEvent += ( r ) => { cube.transform.localScale += Vector3.one * recognizer.deltaScale; Debug.Log( "pinch recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Rotation Recognizer" ) ) { var recognizer = new TKRotationRecognizer(); recognizer.gestureRecognizedEvent += ( r ) => { cube.Rotate( Vector3.back, recognizer.deltaRotation ); Debug.Log( "rotation recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add Button Recognizer" ) ) { var recognizer = new TKButtonRecognizer( new TKRect( 300, 30, 278, 90 ), 20 ); recognizer.zIndex = 1; recognizer.onSelectedEvent += ( r ) => { Debug.Log( "button recognizer selected: " + r ); }; recognizer.onDeselectedEvent += ( r ) => { Debug.Log( "button recognizer deselected: " + r ); }; recognizer.onTouchUpInsideEvent += ( r ) => { Debug.Log( "button recognizer touch up inside: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Add One Finger Rotation Recognizer" ) ) { var recognizer = new TKOneFingerRotationRecognizer(); recognizer.targetPosition = Camera.mainCamera.WorldToScreenPoint( cube.position ); recognizer.gestureRecognizedEvent += ( r ) => { cube.Rotate( Vector3.back, recognizer.deltaRotation ); Debug.Log( "one finger rotation recognizer fired: " + r ); }; TouchKit.addGestureRecognizer( recognizer ); } if( GUILayout.Button( "Remove All Recognizers" ) ) { TouchKit.removeAllGestureRecognizers(); } GUILayout.EndScrollView(); GUILayout.EndArea(); }
void rotatePaddle(TKRotationRecognizer r) { rotatePaddle(-r.deltaRotation); }
void setupGestures() { this.panner = new TKPanRecognizer(); this.rotater = new TKRotationRecognizer(); this.tapper = new TKTapRecognizer(); // when using in conjunction with a pinch or rotation recognizer setting the min touches to 2 smoothes movement greatly if (Application.platform == RuntimePlatform.IPhonePlayer) { this.panner.minimumNumberOfTouches = 2; } this.panner.gestureRecognizedEvent += this.movePaddle; this.rotater.gestureRecognizedEvent += this.rotatePaddle; this.tapper.gestureRecognizedEvent += this.startBallEvent; TouchKit.addGestureRecognizer(this.panner); TouchKit.addGestureRecognizer(this.rotater); TouchKit.addGestureRecognizer(this.tapper); }