public void SetMousePosition(int x, int y) { MouseSmoothX.Clear(); MouseSmoothY.Clear(); if (SoftwareMouse) { MousePosition.x = x; MousePosition.y = y; } else { ProMouse.Instance.SetCursorPosition(x, y); } mSetMousePositionThisFrame = true; }
public void LateUpdate() { if (mSetMousePositionThisFrame) { mSetMousePositionThisFrame = false; return; } //see if the mouse is moving this frame if (Input.GetAxis("mouse x") != 0f || Input.GetAxis("mouse y") != 0f) { MouseSmoothX.Clear(); MouseSmoothY.Clear(); ControllerDrivenMouseMovement = false; } else if (Profile.Get.CurrentPreferences.Controls.UseControllerMouse && !SuspendCursorControllerMovement) { //if it's not moving, our controller drives the mouse ControllerDrivenMouseMovement = true; if (RawMouseAxisX != 0f || RawMouseAxisY != 0f) { int mouseX = 0; int mouseY = 0; if (SoftwareMouse) { mouseX = (int)MousePosition.x + (int)(RawMouseAxisX * ControllerMouseSensitivity * Screen.width); mouseY = (int)MousePosition.y + (int)(RawMouseAxisY * ControllerMouseSensitivity * Screen.height); } else { mouseX = (int)Input.mousePosition.x + (int)(RawMouseAxisX * ControllerMouseSensitivity * Screen.width); mouseY = (int)Input.mousePosition.y + (int)(RawMouseAxisY * ControllerMouseSensitivity * Screen.height); } MouseSmoothX.Add(mouseX); MouseSmoothY.Add(mouseY); if (MouseSmoothX.Count > ControllerMouseSmoothSteps) { MouseSmoothX.RemoveAt(0); } if (MouseSmoothY.Count > ControllerMouseSmoothSteps) { MouseSmoothY.RemoveAt(0); } mouseX = 0; for (int i = 0; i < MouseSmoothX.Count; i++) { mouseX += MouseSmoothX [i]; } mouseY = 0; for (int i = 0; i < MouseSmoothY.Count; i++) { mouseY += MouseSmoothY [i]; } mouseX = mouseX / MouseSmoothX.Count; mouseY = mouseY / MouseSmoothY.Count; //Debug.Log("Mouse x: " + mouseX.ToString()); //Debug.Log("Mouse y: " + mouseY.ToString()); if (SoftwareMouse) { //TODO what exactly? } else { ProMouse.Instance.SetCursorPosition(mouseX, mouseY); } } } }