private void Update() { _previousState = _currentState; _currentState = GamePad.GetState(PlayerIndex.One, GamePadDeadZone.IndependentAxes); // Go to sleep if no controller is detected if (!_currentState.IsConnected) { _previousState = _currentState; enabled = false; // Need to use invoke because coroutines don't run on disabled objects InvokeRepeating(nameof(TryWakeUp), 4f, 4f); } else { CursorEmulator.OnUpdate(); // Simulate right click for cancelling out of menus // Ideal would be hooking Input.GetMouseKeyDown but it requires a detour if (GetButtonDown(state => state.Buttons.B)) { CursorEmulator.RightDown(); CursorEmulator.RightUp(); } } }
public static float CustomGetAxis(string axisName) { if (!CursorEmulator.EmulatingCursor()) { switch (axisName) { case "Mouse X": var x = GamepadWhisperer.CurrentState.ThumbSticks.Right.X; if (Mathf.Abs(x) > 0.01f) { return(x * Mathf.Abs(x)); } break; case "Mouse Y": var y = GamepadWhisperer.CurrentState.ThumbSticks.Right.Y; if (Mathf.Abs(y) > 0.01f) { return(y * Mathf.Abs(y)); } break; case "Mouse ScrollWheel": var ltVal = GamepadWhisperer.CurrentState.Triggers.Left; var rtVal = GamepadWhisperer.CurrentState.Triggers.Right; if (ltVal > 0.01f || rtVal > 0.01f) { return((-ltVal + rtVal) * 0.01f); } break; } } return(Input.GetAxis(axisName)); }
public static bool RightStickDown() { if (CursorEmulator.EmulatingCursor()) { return(false); } return(Mathf.Approximately(_previousState.ThumbSticks.Right.X, 0f) && Mathf.Approximately(_previousState.ThumbSticks.Right.Y, 0f) && (!Mathf.Approximately(_currentState.ThumbSticks.Right.X, 0f) || !Mathf.Approximately(_currentState.ThumbSticks.Right.Y, 0f))); }
public static bool isViewPlayerHook(ref bool __result) { if (_disabled) { return(true); } if (GamepadWhisperer.GetButtonDown(state => state.Buttons.RightStick) && !CursorEmulator.EmulatingCursor()) { __result = true; return(false); } return(true); }
private static bool OnProcessCameraControls(BaseCameraControl_Ver2 cameraControl) { if (CursorEmulator.EmulatingCursor()) { return(false); } const float xRotSpeed = 1.3f; const float yRotSpeed = 0.8f; const float moveSpeed = 0.03f; // todo expose? const float speedMultiplier = 1f; var stick = GamepadWhisperer.CurrentState.ThumbSticks.Right; var axis = stick.X * Mathf.Abs(stick.X); var axis2 = stick.Y * Mathf.Abs(stick.Y); if (Mathf.Abs(axis2) < 0.01f && Mathf.Abs(axis) < 0.01f) { return(false); } var ltVal = GamepadWhisperer.CurrentState.Triggers.Left; var rtVal = GamepadWhisperer.CurrentState.Triggers.Right; var ltPressed = ltVal > 0.3; var rtPressed = rtVal > 0.3; var cameraData = (BaseCameraControl_Ver2.CameraData)_camDatField.GetValue(cameraControl); if (!ltPressed && !rtPressed) { var y = axis * xRotSpeed * speedMultiplier; var x = -1 * axis2 * yRotSpeed * speedMultiplier; cameraData.Rot.y = (cameraData.Rot.y + y) % 360f; cameraData.Rot.x = (cameraData.Rot.x + x) % 360f; } else if (!rtPressed) { cameraData.Pos.y = cameraData.Pos.y + axis2 * moveSpeed * speedMultiplier; cameraData.Dir.z = cameraData.Dir.z - axis * moveSpeed * speedMultiplier; cameraData.Dir.z = Mathf.Min(0f, cameraData.Dir.z); } else if (!ltPressed) { var zero = new Vector3(axis * moveSpeed * speedMultiplier, 0, axis2 * moveSpeed * speedMultiplier); var transBase = (Transform)_transBaseField.GetValue(cameraControl); if (transBase != null) { cameraData.Pos = cameraData.Pos + transBase.InverseTransformDirection(cameraControl.transform.TransformDirection(zero)); } else { cameraData.Pos = cameraData.Pos + cameraControl.transform.TransformDirection(zero); } } else { return(false); } _camDatField.SetValue(cameraControl, cameraData); return(true); }
public static void BackLogButtonCancel(ref KeyInput.Data __result) { if (_disabled) { return; } if (GamepadWhisperer.GetButtonDown(state => state.Buttons.B) || GamepadWhisperer.GetButtonDown(state => state.Buttons.RightStick) && !CursorEmulator.EmulatingCursor()) { __result.isKey = true; } }