Esempio n. 1
0
 private async void onTouchAction(ITouch touch, TouchMotionAction action)
 {
     if (_FirstTouch == null && action == TouchMotionAction.Down)
     {
         _FirstTouch      = touch;
         previousTouchPos = touch.Position;
     }
     if (touch != _FirstTouch)
     {
         return;
     }
     if (action == TouchMotionAction.Move)
     {
         Vector2 speed = (touch.Position - previousTouchPos) * _SpeedFactor;
         previousTouchPos = touch.Position;
         IConnectionManager controllerManager = DependencyService.Get <IConnectionManager>();
         IConnection        connection        = controllerManager.ControllerConnection;
         if (connection != null && connection.ConnectionEstablishState == ConnectionEstablishState.Succeeded)
         {
             RemoteXControlMessage data = new RemoteXControlMessage((int)DataType.TouchMouseSpeed, new float[] { speed.x, speed.y });
             await connection.SendAsync(data.Bytes);
         }
     }
     else if (action == TouchMotionAction.Up)
     {
         if (touch == _FirstTouch)
         {
             _FirstTouch = null;
         }
     }
 }
Esempio n. 2
0
    /// <summary>
    /// Checks if wire touch connects with another wire.
    /// </summary>
    private void CheckConnectWithWire()
    {
        if (m_wireTouch == null)
        {
            return;
        }
        // Check if touch that selected this wire connects with another wire on the opposite side of the screen
        RaycastHit2D[] hits = Physics2D.RaycastAll(Camera.main.ScreenToWorldPoint(m_wireTouch.Position), Vector2.zero);
        foreach (RaycastHit2D hit in hits)
        {
            if (hit.transform == null)
            {
                continue;
            }

            // Skip checking this wire
            if (hit.transform == this.transform)
            {
                continue;
            }

            Wire otherWire = hit.transform.GetComponent <Wire>();
            if (otherWire == null)
            {
                continue;
            }

            // If other wire is the same type as this wire, connect the two
            if (otherWire.GetWireType() == m_wireType)
            {
                SetConnected();
                otherWire.SetConnected();

                // Play plug-in sound
                Locator.GetSoundSystem().PlayOneShot(SoundInfo.SFXID.WIRE_PLUGIN);

                ResetConnectGuide();

                m_sceneMaster.NotifyWireConnect(this, otherWire);
            }
            // Else, game over
            else
            {
                // Play zap sound
                Locator.GetSoundSystem().PlayOneShot(SoundInfo.SFXID.WIRE_ZAP);

                // Replace connect guide with electric bolt
                ReplaceGuideWithBolt();

                m_sceneMaster.NotifyWireMismatch();
            }

            m_wireTouch = null;

            // Stop connect sound
            m_connectSound.Stop();

            break;
        }
    }
Esempio n. 3
0
        protected override void ProcessOneTouch(ITouch touch)
        {
            switch (touch.phase)
            {
            case TouchPhase.Began:
                currentGesture = processGesture(touch, currentGesture);
                break;

            case TouchPhase.Ended:
            case TouchPhase.Canceled:
                currentGesture = new CustomizerGestureModel();
                break;

            case TouchPhase.Moved:
                switch (currentGesture.TouchDownStartArea)
                {
                case AreaTouchedEnum.INVENTORY_BUTTON:
                    if (checkButtonDrag(touch.deltaPosition) && currentGesture.IsEquippable)
                    {
                        InventoryContext.EventBus.DispatchEvent(new InventoryDragEvents.DragInventoryButton(currentGesture));
                    }
                    break;

                case AreaTouchedEnum.PENGUIN_PREVIEW_ROTATION_AREA:
                    InventoryContext.EventBus.DispatchEvent(new InventoryDragEvents.RotatePenguinPreview(currentGesture));
                    break;
                }
                break;

            case TouchPhase.Stationary:
                break;
            }
        }
        private PointerEventData GetTouchScriptPointerEventData(ITouch input, out bool pressed, out bool released)
        {
            PointerEventData pointerData;
            bool             created = GetPointerData(input.Id, out pointerData, true);

            pointerData.Reset();

            // are tags the way to go here?
            pressed  = created || beganDummieIDs.Contains(input.Id);
            released = endedDummieIDs.Contains(input.Id);

            if (created)
            {
                pointerData.position = input.Position;
            }
            if (pressed)
            {
                pointerData.delta = Vector2.zero;
            }
            else
            {
                pointerData.delta = input.Position - pointerData.position;
            }
            //use input.PreviousPosition instead of pointerData.position?
            pointerData.position = input.Position;
            pointerData.button   = PointerEventData.InputButton.Left;
            eventSystem.RaycastAll(pointerData, m_RaycastResultCache);
            var raycast = FindFirstRaycast(m_RaycastResultCache);

            pointerData.pointerCurrentRaycast = raycast;
            m_RaycastResultCache.Clear();
            return(pointerData);
        }
Esempio n. 5
0
 private CustomizerGestureModel processGesture(ITouch touch, CustomizerGestureModel gestureModel)
 {
     gestureModel.TouchDownStartPos = touch.position;
     if (isOverUI(touch))
     {
         if (EventSystem.current.currentSelectedGameObject != null)
         {
             EquipmentIcon component = EventSystem.current.currentSelectedGameObject.GetComponent <EquipmentIcon>();
             if (component != null)
             {
                 gestureModel.TouchDownStartArea = AreaTouchedEnum.INVENTORY_BUTTON;
                 gestureModel.DragIconTexture    = component.GetIcon() as Texture2D;
                 gestureModel.ItemId             = component.EquipmentId;
                 gestureModel.IsEquippable       = component.IsEquippable;
             }
         }
     }
     else if (isTouchBlockedByUIControls(touch))
     {
         gestureModel.TouchDownStartArea = AreaTouchedEnum.CLICK_BLOCKING_UI;
     }
     else
     {
         gestureModel.TouchDownStartArea = AreaTouchedEnum.PENGUIN_PREVIEW_ROTATION_AREA;
     }
     return(gestureModel);
 }
Esempio n. 6
0
 private void InputTouchMoved(ITouch point)
 {
     if (TouchMoved != null)
     {
         TouchMoved(new TouchInfo(GetTouchPosition(point.Position), null));
     }
 }
Esempio n. 7
0
    /// <summary>
    /// Raises the wire press event.
    /// </summary>
    private void OnWirePress(object sender, System.EventArgs e)
    {
        // Process only one touch per wire
        if (m_isGuideActive)
        {
            return;
        }
        m_isGuideActive = true;

        // Lazy init
        if (m_connectGuide == null)
        {
            m_connectGuide = CreateConnectGuide();
        }

        // Play connect sound
        if (m_connectSound == null)
        {
            m_connectSound = Locator.GetSoundSystem().PlaySound(SoundInfo.SFXID.WIRE_CONNECT);
        }
        else
        {
            m_connectSound.Play();
        }

        // Find and store a reference to the touch
        foreach (ITouch touch in m_pressGesture.ActiveTouches)
        {
            if (m_pressGesture.HasTouch(touch))
            {
                m_wireTouch = touch;
                break;
            }
        }
    }
 private void DestroyTool(ITouch touch)
 {
     if (_touchIDToolMap.ContainsKey(touch.Id))
     {
         GameObject.Destroy(_touchIDToolMap[touch.Id]);
         _touchIDToolMap.Remove(touch.Id);
     }
 }
Esempio n. 9
0
        /// <inheritdoc />
        public override bool ShouldReceiveTouch(ITouch touch)
        {
            if (!IgnoreChildren) return base.ShouldReceiveTouch(touch);
            if (!base.ShouldReceiveTouch(touch)) return false;

            if (touch.Target != cachedTransform) return false;
            return true;
        }
Esempio n. 10
0
 private void InputTouchEnded(ITouch point)
 {
     if (TouchUpClicked != null)
     {
         var touchPosition = GetTouchPosition(point.Position);
         TouchUpClicked(new TouchInfo(touchPosition, GetRaycastHitByCamera(touchPosition).transform));
     }
 }
Esempio n. 11
0
    public static bool isTouchInsideRect(Rect position)
    {
        ITouch iTouch = ServiceLocator.getITouch();

        Rect acc = new Rect(getClipRect().position + position.position, position.size);

        return(acc.Contains(iTouch.getTouchPosition()));
    }
Esempio n. 12
0
    protected override LayerHitResult beginTouch(ITouch touch, out ITouchHit hit)
    {
        hit = null;
        if (enabled == false || gameObject.activeInHierarchy == false) return LayerHitResult.Miss;

        var result = movie.BeginTouch(touch.Id, touch.Position.x, touch.Position.y);
        return (LayerHitResult)result;
    }
Esempio n. 13
0
 public bool ShouldReceiveTouch(Gesture gesture, ITouch touch)
 {
     if (touch.Tags.HasTag("Mouse"))
     {
         return(false);
     }
     return(true);
 }
 private void DestroyTool(ITouch touch)
 {
     if (_touchIDToolMap.ContainsKey(touch.Id))
     {
         GameObject.Destroy(_touchIDToolMap[touch.Id]);
         _touchIDToolMap.Remove(touch.Id);
     }
 }
Esempio n. 15
0
 /// <summary>
 /// Specifies if gesture can receive this specific touch point.
 /// </summary>
 /// <param name="touch">The touch.</param>
 /// <returns><c>true</c> if this touch should be received by the gesture; otherwise, <c>false</c>.</returns>
 public virtual bool ShouldReceiveTouch(ITouch touch)
 {
     if (Delegate == null)
     {
         return(true);
     }
     return(Delegate.ShouldReceiveTouch(this, touch));
 }
Esempio n. 16
0
        /// <inheritdoc />
        public bool Equals(ITouch other)
        {
            if (other == null)
            {
                return(false);
            }

            return(Id == other.Id);
        }
Esempio n. 17
0
 /// <summary>
 /// Raises the release event.
 /// </summary>
 /// <param name="sender">Sender.</param>
 /// <param name="e">E.</param>
 protected void OnObjectRelease(object sender, System.EventArgs e)
 {
     if (m_unpressedSprite != null)
     {
         m_spriteRenderer.sprite = m_unpressedSprite;
     }
     m_activeTouch = null;
     m_isPressed   = false;
 }
 private void onDragEnd(ITouch touch)
 {
     dragContainer.Hide();
     if (touch.position.y > (float)Screen.height * mainCamera.rect.y)
     {
         CustomizationContext.EventBus.DispatchEvent(new CustomizerUIEvents.SelectTemplate(templateData, dragContainer.GetSprite()));
     }
     CustomizationContext.EventBus.DispatchEvent(default(CustomizerDragEvents.GestureComplete));
 }
Esempio n. 19
0
        private void updateObjectProperties(ITouch touch, TuioObject obj)
        {
            var props = touch.Properties;

            props["Angle"]                = obj.Angle;
            props["ObjectId"]             = obj.ClassId;
            props["RotationVelocity"]     = obj.RotationVelocity;
            props["RotationAcceleration"] = obj.RotationAcceleration;
        }
Esempio n. 20
0
        /// <summary>Removes a point from cluster.</summary>
        /// <param name="point">A point.</param>
        public void RemovePoint(ITouch point)
        {
            if (!points.Contains(point))
            {
                return;
            }

            points.Remove(point);
            markDirty();
        }
Esempio n. 21
0
        /// <summary>Adds a point to cluster.</summary>
        /// <param name="point">A point.</param>
        public void AddPoint(ITouch point)
        {
            if (points.Contains(point))
            {
                return;
            }

            points.Add(point);
            markDirty();
        }
Esempio n. 22
0
        public static ITouch fromTouch(Touch touch)
        {
            ITouch result = default(ITouch);

            result.phase         = touch.phase;
            result.position      = touch.position;
            result.deltaPosition = touch.deltaPosition;
            result.tapCount      = touch.tapCount;
            return(result);
        }
 public DoubleFlick(ITouch touch1, ITouch touch2)
     : base(2)
 {
     this.gestureTouches.Add(touch1);
     this.gestureTouches.Add(touch2);
     if (touch1.SystemTouch.State == TouchLocationState.Released)
         Direction = touch1.Positions.Delta;
     else
         Direction = touch2.Positions.Delta;
 }
Esempio n. 24
0
    private void InputTouchBegin(ITouch point)
    {
        var touchPosition      = GetTouchPosition(point.Position);
        var raycastHitByCamera = GetRaycastHitByCamera(touchPosition);

        if (TouchDownClicked != null /*&& raycastHitByCamera.transform != null*/)
        {
            TouchDownClicked(new TouchInfo(touchPosition, raycastHitByCamera.transform));
        }
    }
Esempio n. 25
0
 public void touchEnd(ITouch touch)
 {
     ITouch dummy;
     if (!dummies.TryGetValue(touch.Id, out dummy)) return;
     dummies.Remove(touch.Id);
     GameObject testBox;
     if (!boxes.TryGetValue(touch.Id, out testBox)) return;
     Destroy (boxes[touch.Id]);
     boxes.Remove(touch.Id);
 }
Esempio n. 26
0
        public ITouch GetTouch(int touchIndex)
        {
            ITouch retVal = null;

            if (_gameEngineInterface.Input.TouchCount > touchIndex)
            {
                retVal = _gameEngineInterface.Input.GetTouch(touchIndex);
            }

            return(retVal);
        }
Esempio n. 27
0
        private void updateBlobProperties(ITouch touch, TuioBlob blob)
        {
            var props = touch.Properties;

            props["Angle"]                = blob.Angle;
            props["Width"]                = blob.Width;
            props["Height"]               = blob.Height;
            props["Area"]                 = blob.Area;
            props["RotationVelocity"]     = blob.RotationVelocity;
            props["RotationAcceleration"] = blob.RotationAcceleration;
        }
Esempio n. 28
0
 public void AddOne(ITouch touch)
 {
     if (!caliPoints.ContainsKey(touch.Id))
     {
         var position = GetComponent<Camera> ().ScreenToWorldPoint (new Vector3 (touch.Position.x, touch.Position.y, 1));
         var newTouch = Instantiate (indicator, position, Quaternion.identity) as GameObject;
         newTouch.name = "Indicator";
         newTouch.tag = "Cali";
         caliPoints.Add (touch.Id, newTouch);
     }
 }
Esempio n. 29
0
        protected void processBegan(ITouch touch)
        {
            PointerEventData pointerEvent;

            getPointerData(touch.Id, out pointerEvent, true);

            pointerEvent.position         = touch.Position;
            pointerEvent.button           = PointerEventData.InputButton.Left;
            pointerEvent.eligibleForClick = true;
            pointerEvent.delta            = Vector2.zero;
            pointerEvent.dragging         = false;
            pointerEvent.useDragThreshold = true;
            pointerEvent.pressPosition    = pointerEvent.position;

            raycastPointer(pointerEvent);
            pointerEvent.pointerPressRaycast = pointerEvent.pointerCurrentRaycast;
            var currentOverGo = pointerEvent.pointerCurrentRaycast.gameObject;

            deselectIfSelectionChanged(currentOverGo, pointerEvent);

            if (pointerEvent.pointerEnter != currentOverGo)
            {
                // send a pointer enter to the touched element if it isn't the one to select...
                HandlePointerExitAndEnter(pointerEvent, currentOverGo);
                pointerEvent.pointerEnter = currentOverGo;
            }

            // search for the control that will receive the press
            // if we can't find a press handler set the press
            // handler to be what would receive a click.
            var newPressed = ExecuteEvents.ExecuteHierarchy(currentOverGo, pointerEvent,
                                                            ExecuteEvents.pointerDownHandler);

            // didnt find a press handler... search for a click handler
            if (newPressed == null)
            {
                newPressed = ExecuteEvents.GetEventHandler <IPointerClickHandler>(currentOverGo);
            }

            // TODO: double-tap
            pointerEvent.clickCount      = 1;
            pointerEvent.pointerPress    = newPressed;
            pointerEvent.rawPointerPress = currentOverGo;
            pointerEvent.clickTime       = Time.unscaledTime;

            // Save the drag handler as well
            pointerEvent.pointerDrag = ExecuteEvents.GetEventHandler <IDragHandler>(currentOverGo);

            if (pointerEvent.pointerDrag != null)
            {
                ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.initializePotentialDrag);
            }
        }
Esempio n. 30
0
    protected override LayerHitResult beginTouch(ITouch touch, out ITouchHit hit)
    {
        hit = null;
        if (enabled == false || gameObject.activeInHierarchy == false)
        {
            return(LayerHitResult.Miss);
        }

        var result = movie.BeginTouch(touch.Id, touch.Position.x, touch.Position.y);

        return((LayerHitResult)result);
    }
Esempio n. 31
0
        private IEnumerator wait(ITouch touch)
        {
            // WaitForSeconds is affected by time scale!
            var targetTime = Time.unscaledTime + TimeToPress;

            while (targetTime > Time.unscaledTime)
            {
                yield return(null);
            }

            SuccessfulTouchIDs.Add(touch.Id);
            setState(GestureState.Changed);
        }
    public void FollowTouch(ITouch touch)
    {
        var disposable = touch.ObserveEveryValueChanged(t => t.Position)
                .Subscribe(
                    newPos =>
                    {
                        Vector2 pos = Camera.main.ScreenToWorldPoint(new Vector3(newPos.x, newPos.y, 0.0f));
                        this.transform.position = new Vector3(pos.x, pos.y, 0.0f);
                    }
                );

        _disposables.Add(disposable);
    }
Esempio n. 33
0
    public static bool didTapInsideRect(Rect position)
    {
        ITouch iTouch = ServiceLocator.getITouch();

        if (iTouch.checkTap())
        {
            return(isTouchInsideRect(position));
        }
        else
        {
            return(false);
        }
    }
    public void FollowTouch(ITouch touch)
    {
        var disposable = touch.ObserveEveryValueChanged(t => t.Position)
                         .Subscribe(
            newPos =>
        {
            Vector2 pos             = Camera.main.ScreenToWorldPoint(new Vector3(newPos.x, newPos.y, 0.0f));
            this.transform.position = new Vector3(pos.x, pos.y, 0.0f);
        }
            );

        _disposables.Add(disposable);
    }
Esempio n. 35
0
 public void touchMoved(ITouch touch)
 {
     ITouch dummy;
     if (!dummies.TryGetValue(touch.Id, out dummy)) return;
     var position = gameObject.GetComponent<Camera>().ScreenToWorldPoint(new Vector3(touch.Position.x, touch.Position.y, 1f));
     var thisBox = boxes[touch.Id];
     thisBox.transform.position = position;
     //		if (touch.Type == "2dblb")
     //		{
     //			thisBox.transform.localScale = new Vector3 (touch.Size.x , touch.Size.y, 1f);
     //			var angle = touch.Angle * 360f / (2 * Mathf.PI);
     //			thisBox.transform.localRotation =   Quaternion.Euler (0f,0f, - angle);
     //		}
 }
Esempio n. 36
0
    public void touchBegin(ITouch touch)
    {
        ITouch dummy;
        if (dummies.TryGetValue(touch.Id, out dummy)) return;
        dummies.Add(touch.Id, touch);
        var position = gameObject.GetComponent<Camera>().ScreenToWorldPoint(new Vector3(touch.Position.x, touch.Position.y, 1f));

        var newBox = Instantiate (box, position, Quaternion.identity) as GameObject;
        //		if (touch.Type == "2dblb")
        //		{
        //			newBox.transform.localScale = new Vector3 (touch.Size.x , touch.Size.y, 1f);
        //			var angle = touch.Angle * 360f / (2 * Mathf.PI);
        //			newBox.transform.localRotation =   Quaternion.Euler (0f,0f,angle);
        //		}
        boxes.Add (touch.Id, newBox);
    }
Esempio n. 37
0
    protected override void ProcessOneTouch(ITouch touch)
    {
        switch (touch.phase)
        {
        case TouchPhase.Stationary:
            break;

        case TouchPhase.Ended:
        case TouchPhase.Canceled:
            InventoryContext.EventBus.DispatchEvent(default(InventoryDragEvents.GestureComplete));
            break;

        case TouchPhase.Moved:
            onDrag(touch.position);
            break;
        }
    }
    protected override void ProcessOneTouch(ITouch touch)
    {
        switch (touch.phase)
        {
        case TouchPhase.Stationary:
            break;

        case TouchPhase.Moved:
            onDrag(touch.position);
            break;

        case TouchPhase.Ended:
        case TouchPhase.Canceled:
            onDragEnd(touch);
            break;
        }
    }
Esempio n. 39
0
        /// <inheritdoc />
        public override bool ShouldReceiveTouch(ITouch touch)
        {
            if (!IgnoreChildren)
            {
                return(base.ShouldReceiveTouch(touch));
            }
            if (!base.ShouldReceiveTouch(touch))
            {
                return(false);
            }

            if (touch.Target != cachedTransform)
            {
                return(false);
            }
            return(true);
        }
    private void HandleTags(ITouch touch)
    {
        Tags tags = touch.Tags;

        if (tags.Count > 0)
        {
            Debug.Log (string.Format ("Tag detected: {0}", tags));

            foreach (string tag in tags.TagList)
            {
                // Check whether this tag should be ignored e.g. Mouse etc.
                if (_ignoredTagNames.Contains (tag))
                {
                    Debug.Log (string.Format ("Ignoring tag: {0}", tag));
                    continue;
                }

                Vector3 worldPosition = Camera.main.ScreenToWorldPoint (new Vector3 (touch.Position.x,
                                                                                     touch.Position.y,
                                                                                     0.0f));

                // Check whether this tag is a tool tag
                if (_tagNameToToolDict.ContainsKey (tag))
                {
                    Debug.Log (string.Format ("Instantiating tool with tag: {0}", tag));
                    GameObject tool = (GameObject)Instantiate (_tagNameToToolDict [tag], worldPosition, Quaternion.identity);

                    IToolController controller = tool.GetComponent<IToolController>();

                    if (controller != null)
                    {
                        _touchIDToolMap.Add(touch.Id, tool);
                        controller.FollowTouch(touch);
                    }

                }
                // If nothing else, search for Tweets with the tag
                else
                {
                    Debug.Log (string.Format ("Instantiating tweets with tag: {0}", tag));
                    TweetManager.Instance.CreateTweets (tag, worldPosition);
                }
            }
        }
    }
Esempio n. 41
0
 public void Calibrate(ITouch touch)
 {
     var upperRightCorner = GetComponent<Camera> ().ScreenToWorldPoint (new Vector3 (Screen.width, Screen.height, 4f));
     var lowerLeftCorner = GetComponent<Camera> ().ScreenToWorldPoint (new Vector3 (0, 0, 4f));
     var indicatorPosition = GetComponent<Camera> ().ScreenToWorldPoint (new Vector3 (touch.Position.x, touch.Position.y, 4f));
     var upRightQuat = OVRManager.display.GetHeadPose ().orientation;
     var h_ur = upRightQuat.y * Mathf.PI;// * 180f;
     var v_ur = 1.86f - upRightQuat.x * Mathf.PI;// * 180f;
     var surfaceHeight = GameObject.Find ("TouchSurface").transform.position.y;
     var eyePosition = GameObject.Find ("CenterEyeAnchor").transform.position;
     var eyeHeight = eyePosition.y - surfaceHeight;
     var x_pos = eyeHeight * Mathf.Tan(h_ur);
     var y_pos = eyeHeight * Mathf.Tan(v_ur);
     var position = new Vector3 ();
     position.x = x_pos;
     position.z = y_pos;
     position.y = surfaceHeight;
     if (indicatorPosition.x >= upperRightCorner.x - 0.5f && indicatorPosition.y >= upperRightCorner.y - 0.5f)// && !rSet)
     {
         upRight = position;
         rSet = true;
         if (lSet)
         {
             isCalibrated = true;
             DoCalibration();
         }
     }
     else if (indicatorPosition.x <= lowerLeftCorner.x + 0.5f && indicatorPosition.y >= upperRightCorner.y - 0.5f)// && !lSet)
     {
         lowerLeft = position;
         yesOrNo = true;
         lSet = true;
         lowLeftQuat = OVRManager.display.GetHeadPose ().orientation;
         if (rSet)
         {
             isCalibrated = true;
             DoCalibration ();
         }
     }
     else
         RemoveOne (touch);
 }
Esempio n. 42
0
        /// <summary>Adds a point to cluster.</summary>
        /// <param name="point">A point.</param>
        public void AddPoint(ITouch point)
        {
            if (points.Contains(point)) return;

            points.Add(point);
            markDirty();
        }
Esempio n. 43
0
        private void processMove(ITouch touch)
        {
            PointerEventData pointerEvent;
            getPointerData(touch.Id, out pointerEvent, true);

            pointerEvent.position = touch.Position;
            pointerEvent.delta = touch.Position - touch.PreviousPosition;

            raycastPointer(pointerEvent);

            var targetGO = pointerEvent.pointerCurrentRaycast.gameObject;
            HandlePointerExitAndEnter(pointerEvent, targetGO);

            bool moving = pointerEvent.IsPointerMoving();

            if (moving && pointerEvent.pointerDrag != null
                && !pointerEvent.dragging
                && shouldStartDrag(pointerEvent.pressPosition, pointerEvent.position, eventSystem.pixelDragThreshold, pointerEvent.useDragThreshold))
            {
                ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.beginDragHandler);
                pointerEvent.dragging = true;
            }

            // Drag notification
            if (pointerEvent.dragging && moving && pointerEvent.pointerDrag != null)
            {
                // Before doing drag we should cancel any pointer down state
                // And clear selection!
                if (pointerEvent.pointerPress != pointerEvent.pointerDrag)
                {
                    ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerUpHandler);

                    pointerEvent.eligibleForClick = false;
                    pointerEvent.pointerPress = null;
                    pointerEvent.rawPointerPress = null;
                }
                ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.dragHandler);
            }
        }
Esempio n. 44
0
        private void processEnded(ITouch touch)
        {
            PointerEventData pointerEvent;
            getPointerData(touch.Id, out pointerEvent, true);

            pointerEvent.position = touch.Position;
            pointerEvent.delta = Vector2.zero;

            raycastPointer(pointerEvent);
            var currentOverGo = pointerEvent.pointerCurrentRaycast.gameObject;

            ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerUpHandler);

            // see if we mouse up on the same element that we clicked on...
            var pointerUpHandler = ExecuteEvents.GetEventHandler<IPointerClickHandler>(currentOverGo);

            // PointerClick and Drop events
            if (pointerEvent.pointerPress == pointerUpHandler && pointerEvent.eligibleForClick)
            {
                ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerClickHandler);
            }
            else if (pointerEvent.pointerDrag != null)
            {
                ExecuteEvents.ExecuteHierarchy(currentOverGo, pointerEvent, ExecuteEvents.dropHandler);
            }

            pointerEvent.eligibleForClick = false;
            pointerEvent.pointerPress = null;
            pointerEvent.rawPointerPress = null;

            if (pointerEvent.pointerDrag != null && pointerEvent.dragging)
                ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.endDragHandler);

            pointerEvent.dragging = false;
            pointerEvent.pointerDrag = null;

            // send exit events as we need to simulate this on touch up on touch device
            ExecuteEvents.ExecuteHierarchy(pointerEvent.pointerEnter, pointerEvent, ExecuteEvents.pointerExitHandler);
            pointerEvent.pointerEnter = null;

            removePointerData(pointerEvent);
        }
Esempio n. 45
0
        protected void processBegan(ITouch touch)
        {
            PointerEventData pointerEvent;
            getPointerData(touch.Id, out pointerEvent, true);

            pointerEvent.position = touch.Position;
            pointerEvent.button = PointerEventData.InputButton.Left;
            pointerEvent.eligibleForClick = true;
            pointerEvent.delta = Vector2.zero;
            pointerEvent.dragging = false;
            pointerEvent.useDragThreshold = true;
            pointerEvent.pressPosition = pointerEvent.position;

            raycastPointer(pointerEvent);
            pointerEvent.pointerPressRaycast = pointerEvent.pointerCurrentRaycast;
            var currentOverGo = pointerEvent.pointerCurrentRaycast.gameObject;

            deselectIfSelectionChanged(currentOverGo, pointerEvent);

            if (pointerEvent.pointerEnter != currentOverGo)
            {
                // send a pointer enter to the touched element if it isn't the one to select...
                HandlePointerExitAndEnter(pointerEvent, currentOverGo);
                pointerEvent.pointerEnter = currentOverGo;
            }

            // search for the control that will receive the press
            // if we can't find a press handler set the press
            // handler to be what would receive a click.
            var newPressed = ExecuteEvents.ExecuteHierarchy(currentOverGo, pointerEvent, ExecuteEvents.pointerDownHandler);

            // didnt find a press handler... search for a click handler
            if (newPressed == null)
                newPressed = ExecuteEvents.GetEventHandler<IPointerClickHandler>(currentOverGo);

            // TODO: double-tap
            pointerEvent.clickCount = 1;
            pointerEvent.pointerPress = newPressed;
            pointerEvent.rawPointerPress = currentOverGo;
            pointerEvent.clickTime = Time.unscaledTime;

            // Save the drag handler as well
            pointerEvent.pointerDrag = ExecuteEvents.GetEventHandler<IDragHandler>(currentOverGo);

            if (pointerEvent.pointerDrag != null)
                ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.initializePotentialDrag);
        }
Esempio n. 46
0
 private void updateDummy(ITouch dummy)
 {
     dummies[dummy.Id] = dummy;
 }
Esempio n. 47
0
        private void updateObjectProperties(ITouch touch, TuioObject obj)
        {
            var props = touch.Properties;

            props["Angle"] = obj.Angle;
            props["ObjectId"] = obj.ClassId;
            props["RotationVelocity"] = obj.RotationVelocity;
            props["RotationAcceleration"] = obj.RotationAcceleration;
        }
 public Tap(ITouch tap)
     : base(1)
 {
     this.gestureTouches.Add(tap);
 }
Esempio n. 49
0
        /// <summary>Removes a point from cluster.</summary>
        /// <param name="point">A point.</param>
        public void RemovePoint(ITouch point)
        {
            if (!points.Contains(point)) return;

            points.Remove(point);
            markDirty();
        }
Esempio n. 50
0
 /// <inheritdoc />
 protected override bool shouldCacheTouchPosition(ITouch value)
 {
     // Points must be over target when released
     return GetTargetHitResult(value.Position);
 }
Esempio n. 51
0
 /// <summary>
 /// Should the gesture cache this touch to use it later in calculation of <see cref="ScreenPosition"/>.
 /// </summary>
 /// <param name="value">Touch to cache.</param>
 /// <returns><c>true</c> if touch should be cached; <c>false</c> otherwise.</returns>
 protected virtual bool shouldCacheTouchPosition(ITouch value)
 {
     return true;
 }
Esempio n. 52
0
 /// <summary>
 /// Specifies if gesture can receive this specific touch point.
 /// </summary>
 /// <param name="touch">The touch.</param>
 /// <returns><c>true</c> if this touch should be received by the gesture; otherwise, <c>false</c>.</returns>
 public virtual bool ShouldReceiveTouch(ITouch touch)
 {
     if (Delegate == null) return true;
     return Delegate.ShouldReceiveTouch(this, touch);
 }
Esempio n. 53
0
 /// <summary>
 /// Determines whether gesture controls a touch point.
 /// </summary>
 /// <param name="touch">The touch.</param>
 /// <returns>
 ///   <c>true</c> if gesture controls the touch point; otherwise, <c>false</c>.
 /// </returns>
 public bool HasTouch(ITouch touch)
 {
     return activeTouches.Contains(touch);
 }
Esempio n. 54
0
        /// <inheritdoc />
        public bool Equals(ITouch other)
        {
            if (other == null)
                return false;

            return Id == other.Id;
        }
Esempio n. 55
0
        private IEnumerator wait(ITouch touch)
        {
            // WaitForSeconds is affected by time scale!
            var targetTime = Time.unscaledTime + TimeToPress;
            while (targetTime > Time.unscaledTime) yield return null;

            SuccessfulTouchIDs.Add(touch.Id);
            setState(GestureState.Changed);
        }
 private void removeDebugFigureForTouch(ITouch touch)
 {
     GLDebug.RemoveFigure(TouchManager.DEBUG_GL_TOUCH + touch.Id);
 }
 public FreeDrag(ITouch drag)
     : base(1)
 {
     this.gestureTouches.Add(drag);
 }
 private void addDebugFigureForTouch(ITouch touch)
 {
     GLDebug.DrawSquareScreenSpace(TouchManager.DEBUG_GL_TOUCH + touch.Id, touch.Position, 0, debugTouchSize, GLDebug.MULTIPLY, float.PositiveInfinity);
 }
Esempio n. 59
0
 public DoubleDrag(ITouch touch1, ITouch touch2)
     : base(2)
 {
     this.gestureTouches.Add(touch1);
     this.gestureTouches.Add(touch2);
 }
Esempio n. 60
0
        private void updateBlobProperties(ITouch touch, TuioBlob blob)
        {
            var props = touch.Properties;

            props["Angle"] = blob.Angle;
            props["Width"] = blob.Width;
            props["Height"] = blob.Height;
            props["Area"] = blob.Area;
            props["RotationVelocity"] = blob.RotationVelocity;
            props["RotationAcceleration"] = blob.RotationAcceleration;
        }