Example #1
0
        public override void TouchMoved(Touch touch)
        {
            if (currentTouch != touch)
            {
                return;
            }
            movedPosition = TouchManager.ScreenToWorldPoint(touch.position);
            if (lockToAxis == LockAxis.Horizontal && allowDraggingAxis == DragAxis.Horizontal)
            {
                movedPosition.y = beganPosition.y;
            }
            else if (lockToAxis == LockAxis.Vertical && allowDraggingAxis == DragAxis.Vertical)
            {
                movedPosition.x = beganPosition.x;
            }
            Vector3 vector     = movedPosition - beganPosition;
            Vector3 normalized = vector.normalized;
            float   magnitude  = vector.magnitude;

            if (allowDragging)
            {
                float num = magnitude - worldKnobRange;
                if (num < 0f)
                {
                    num = 0f;
                }
                Vector3 vector2 = num * normalized;
                if (allowDraggingAxis == DragAxis.Horizontal)
                {
                    vector2.y = 0f;
                }
                else if (allowDraggingAxis == DragAxis.Vertical)
                {
                    vector2.x = 0f;
                }
                beganPosition += vector2;
                RingPosition   = beganPosition;
            }
            movedPosition = beganPosition + Mathf.Clamp(magnitude, 0f, worldKnobRange) * normalized;
            if (lockToAxis == LockAxis.Horizontal)
            {
                movedPosition.y = beganPosition.y;
            }
            else if (lockToAxis == LockAxis.Vertical)
            {
                movedPosition.x = beganPosition.x;
            }
            if (snapAngles != 0)
            {
                movedPosition = TouchControl.SnapTo(movedPosition - beganPosition, snapAngles) + beganPosition;
            }
            RingPosition = beganPosition;
            KnobPosition = movedPosition;
            value        = (movedPosition - beganPosition) / worldKnobRange;
            value.x      = inputCurve.Evaluate(Utility.Abs(value.x)) * Mathf.Sign(value.x);
            value.y      = inputCurve.Evaluate(Utility.Abs(value.y)) * Mathf.Sign(value.y);
        }
        public override void SubmitControlState(ulong updateTick, float deltaTime)
        {
            Vector3 v = TouchControl.SnapTo(currentVector, snapAngles);

            SubmitAnalogValue(target, v, 0f, 1f, updateTick, deltaTime);
            SubmitButtonState(upTarget, fireButtonTarget && nextButtonTarget == upTarget, updateTick, deltaTime);
            SubmitButtonState(downTarget, fireButtonTarget && nextButtonTarget == downTarget, updateTick, deltaTime);
            SubmitButtonState(leftTarget, fireButtonTarget && nextButtonTarget == leftTarget, updateTick, deltaTime);
            SubmitButtonState(rightTarget, fireButtonTarget && nextButtonTarget == rightTarget, updateTick, deltaTime);
            SubmitButtonState(tapTarget, fireButtonTarget && nextButtonTarget == tapTarget, updateTick, deltaTime);
            if (fireButtonTarget && nextButtonTarget != 0)
            {
                fireButtonTarget = !oneSwipePerTouch;
                lastButtonTarget = nextButtonTarget;
                nextButtonTarget = ButtonTarget.None;
            }
        }
        private ButtonTarget GetButtonTargetForVector(Vector2 vector)
        {
            Vector2 lhs = TouchControl.SnapTo(vector, SnapAngles.Four);

            if (lhs == Vector2.up)
            {
                return(upTarget);
            }
            if (lhs == Vector2.right)
            {
                return(rightTarget);
            }
            if (lhs == -Vector2.up)
            {
                return(downTarget);
            }
            if (lhs == -Vector2.right)
            {
                return(leftTarget);
            }
            return(ButtonTarget.None);
        }