12345678910111213141516171819202122232425262728293031323334 |
- using System.ComponentModel;
- using UnityEngine.InputSystem.LowLevel;
-
- namespace UnityEngine.InputSystem.Processors
- {
- [DesignTimeVisible(false)]
- internal class CompensateRotationProcessor : InputProcessor<Quaternion>
- {
- public override Quaternion Process(Quaternion value, InputControl control)
- {
- if (!InputSystem.settings.compensateForScreenOrientation)
- return value;
-
- const float kSqrtOfTwo = 1.4142135623731f;
- var q = Quaternion.identity;
-
- switch (InputRuntime.s_Instance.screenOrientation)
- {
- case ScreenOrientation.PortraitUpsideDown: q = new Quaternion(0.0f, 0.0f, 1.0f /*sin(pi/2)*/, 0.0f /*cos(pi/2)*/); break;
- case ScreenOrientation.LandscapeLeft: q = new Quaternion(0.0f, 0.0f, kSqrtOfTwo * 0.5f /*sin(pi/4)*/, -kSqrtOfTwo * 0.5f /*cos(pi/4)*/); break;
- case ScreenOrientation.LandscapeRight: q = new Quaternion(0.0f, 0.0f, -kSqrtOfTwo * 0.5f /*sin(3pi/4)*/, -kSqrtOfTwo * 0.5f /*cos(3pi/4)*/); break;
- }
-
- return value * q;
- }
-
- public override string ToString()
- {
- return "CompensateRotation()";
- }
-
- public override CachingPolicy cachingPolicy => CachingPolicy.EvaluateOnEveryRead;
- }
- }
|