From 46e835f2d6531baea061a2723d171a2f5a1abf6a Mon Sep 17 00:00:00 2001 From: Narr the Reg Date: Fri, 5 May 2023 12:29:26 -0600 Subject: yuzu: Add motion preview to controller input --- src/common/vector_math.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/common') diff --git a/src/common/vector_math.h b/src/common/vector_math.h index 0e2095c45..9a7d50abd 100644 --- a/src/common/vector_math.h +++ b/src/common/vector_math.h @@ -259,6 +259,20 @@ public: return *this; } + void RotateFromOrigin(float roll, float pitch, float yaw) { + float temp = y; + y = std::cos(roll) * y - std::sin(roll) * z; + z = std::sin(roll) * temp + std::cos(roll) * z; + + temp = x; + x = std::cosf(pitch) * x + std::sin(pitch) * z; + z = -std::sin(pitch) * temp + std::cos(pitch) * z; + + temp = x; + x = std::cos(yaw) * x - std::sin(yaw) * y; + y = std::sin(yaw) * temp + std::cos(yaw) * y; + } + [[nodiscard]] constexpr T Length2() const { return x * x + y * y + z * z; } -- cgit v1.2.3 From f017335fef95d2cecc0fcda185f0e59cc1945101 Mon Sep 17 00:00:00 2001 From: Narr the Reg Date: Fri, 5 May 2023 17:11:53 -0600 Subject: input_common: Add property to invert an axis button --- src/common/input.h | 2 ++ src/common/vector_math.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src/common') diff --git a/src/common/input.h b/src/common/input.h index 51b277c1f..66fb15f0a 100644 --- a/src/common/input.h +++ b/src/common/input.h @@ -111,6 +111,8 @@ struct AnalogProperties { float offset{}; // Invert direction of the sensor data bool inverted{}; + // Invert the state if it's converted to a button + bool inverted_button{}; // Press once to activate, press again to release bool toggle{}; }; diff --git a/src/common/vector_math.h b/src/common/vector_math.h index 9a7d50abd..b4885835d 100644 --- a/src/common/vector_math.h +++ b/src/common/vector_math.h @@ -265,7 +265,7 @@ public: z = std::sin(roll) * temp + std::cos(roll) * z; temp = x; - x = std::cosf(pitch) * x + std::sin(pitch) * z; + x = std::cos(pitch) * x + std::sin(pitch) * z; z = -std::sin(pitch) * temp + std::cos(pitch) * z; temp = x; -- cgit v1.2.3