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