public IEnumerator WhenCompassEnabledCameraIsRotated() { yield return(LoadScene()); var comparer = new QuaternionEqualityComparer(10e-6f); var defaultQuaternion = Quaternion.Euler(0, 0, 0); yield return(new WaitUntil(() => Math.Abs(Input.compass.trueHeading) > 0)); Assert.That(_mainCamera.transform.rotation, Is.Not.EqualTo(defaultQuaternion).Using(comparer)); }
public void MatrixDecomposeTest() { // Corner case matrix (90°/0°/45° rotation with -1/-1/-1 scale) var m = new Matrix4x4( new Vector4( -0.7071067811865474f, 0f, -0.7071067811865477f, 0f ), new Vector4( 0.7071067811865477f, 0f, -0.7071067811865474f, 0f ), new Vector4( 0f, 1f, 0f, 0f ), new Vector4( 0f, 0f, 0f, 1f ) ); var m2 = new float4x4( m.m00, m.m01, m.m02, m.m03, m.m10, m.m11, m.m12, m.m13, m.m20, m.m21, m.m22, m.m23, m.m30, m.m31, m.m32, m.m33 ); Profiler.BeginSample("Matrix4x4.DecomposeUnity"); if (m.ValidTRS()) { Vector3 t1 = new Vector3(m.m03, m.m13, m.m23); Quaternion r1 = m.rotation; Vector3 s1 = m.lossyScale; } Profiler.EndSample(); Profiler.BeginSample("Matrix4x4.DecomposeCustom"); m.Decompose(out var t, out var r, out var s); Profiler.EndSample(); var comparer3 = new Vector3EqualityComparer(10e-6f); var comparer4 = new QuaternionEqualityComparer(10e-6f); Assert.That(t, Is.EqualTo(new Vector3(0, 0, 0)).Using(comparer3)); Assert.That(r, Is.EqualTo(new Quaternion(0.65328151f, -0.270598054f, 0.270598054f, 0.65328151f)).Using(comparer4)); Assert.That(s, Is.EqualTo(new Vector3(-.99999994f, -.99999994f, -1)).Using(comparer3)); Profiler.BeginSample("float4x4.Decompose"); m2.Decompose(out var t3, out var r3, out var s3); Profiler.EndSample(); Assert.That((Vector3)t3, Is.EqualTo(new Vector3(0, 0, 0)).Using(comparer3)); Assert.That((Quaternion) new quaternion(r3), Is.EqualTo(new Quaternion(0.65328151f, -0.270598054f, 0.270598054f, 0.65328151f)).Using(comparer4)); Assert.That((Vector3)s3, Is.EqualTo(new Vector3(-.99999994f, -.99999994f, -1)).Using(comparer3)); }