public IEnumerator CamInputControl() { // MDebug.Log(" Cam Input Start"); inputEnabled = true; startDragPos = M_Math.GetInputPos(); while (inputEnabled && (Input.touchCount > 0 || Input.GetMouseButton(0) || Input.GetAxis("Mouse ScrollWheel") != 0)) { Vector3 mousePos = M_Math.GetInputPos(); if (Input.touchCount > 1 || Input.GetAxis("Mouse ScrollWheel") != 0) { StartCoroutine(Zooming()); yield break; } if ((startDragPos - mousePos).magnitude > 0.5f) { StartCoroutine(Pan()); yield break; } yield return(null); } }
IEnumerator Pan() { drag = true; startDragPos = M_Math.GetInputPos(); while (inputEnabled && (Input.touchCount == 1 || Input.GetMouseButton(0))) { Vector3 mousePos = M_Math.GetInputPos(); Vector3 delta = mousePos - startDragPos; smoothMove = delta * Time.deltaTime * 10; transform.position = transform.position - smoothMove; yield return(null); } StartCoroutine(DelayedStopDrag()); if (inputEnabled && (Input.touchCount == 2)) { smoothMove *= 0.2f; StartCoroutine(Zooming()); } yield break; }
IEnumerator WaitForInput() { _waitingForInput = true; Vector3 startDragPos = M_Math.GetInputPos(); // MDebug.Log("Wait for input"); while (CanStartInput() && (startDragPos - M_Math.GetInputPos()).magnitude < PanThreshold) { yield return(null); } if (CanStartInput()) { StartCoroutine("DoPan"); } _waitingForInput = false; }
IEnumerator DoPan() { Active = true; Vector3 startDragPos = M_Math.GetInputPos(); MDebug.Log("^cameraDOPAN"); while (CanStartInput()) { Vector3 mousePos = M_Math.GetInputPos(); Vector3 delta = mousePos - startDragPos; Debug.DrawRay(startDragPos, delta, Color.green); smoothMove = -Vector3.ClampMagnitude(delta * Time.fixedDeltaTime * 10, delta.magnitude); AttemptMove(smoothMove); yield return(null); } yield return(StartCoroutine(M_Math.DelayForFrames(frames_delay))); Active = false; yield break; }