Example #1
0
        public IEnumerator TrailGetsLongerDuringRace()
        {
            yield return(Given.Scene(this, "MainScene"));

            var tron = Find.SingleObjectById("Tron");
            var originalTronBackBorder = GeometryUtils.GetBackBorder(tron);

            var tronTransform = tron.transform;

            tronTransform.GetComponent <Tron>().StartRace();
            var tronMoved = new ObjectMovedPredicate(tronTransform, 0.5f);
            var waiter    = new WaitUntilOrTimeout(tronMoved.HasMoved, 2.0f);

            yield return(waiter);

            waiter.AssertTimeoutWasNotReached("move of Tron");

            var currentTronBackBorder = GeometryUtils.GetBackBorder(tron);
            var trail = Find.SingleObjectById("Trail");
            // still at same back position
            var trailBackBorder = GeometryUtils.GetBackBorder(trail);

            var comparer = new Vector3EqualityComparer(0.0001f);

            Assert.That(trailBackBorder, Is.EqualTo(originalTronBackBorder).Using(comparer), "trailBackBorder");
            var trailFrontBorder = GeometryUtils.GetFrontBorder(trail);

            Assert.That(trailFrontBorder, Is.EqualTo(currentTronBackBorder).Using(comparer), "trailFrontBorder");
        }
        public void GenerateMesh_OnLine_ReturnsCorrectVertices()
        {
            var geometry = new Geometry()
            {
                geometryKind = GeometryKind.Line,
                startPose    = new RigidTransform(quaternion.identity, float3.zero),
                length       = 0.4f,
                sRoad        = 0f
            };

            var wd2 = RoadNetworkMesher.RoadWidth * .5f;
            // NOTE: The expected values here vary with respect to the const values in RoadNetworkMesher
            var verticesExpected = new[]
            {
                new Vector3(-wd2, 0, 0),
                new Vector3(wd2, 0, 0),
                new Vector3(-wd2, 0, 0.3f),
                new Vector3(wd2, 0, 0.3f),
                new Vector3(-wd2, 0, 0.4f),
                new Vector3(wd2, 0, 0.4f)
            };

            var mesh           = RoadNetworkMesher.BuildMeshForGeometry(geometry, 3);
            var verticesActual = mesh.vertices;

            Assert.AreEqual(verticesExpected.Length, verticesActual.Length);
            // It is ok for the generated vertices to be slightly off from the exact values we expect
            var laxVectorComparer = new Vector3EqualityComparer(0.1f);

            foreach (var vertex in verticesExpected)
            {
                Assert.IsTrue(verticesActual.Contains(vertex, laxVectorComparer));
            }
        }
Example #3
0
    void Update()
    {
        Vector3EqualityComparer comparer = new Vector3EqualityComparer();

        if (isClone && Vector3.Equals(transform.position, imitated.transform.position))
        {
            if (CubeHelper.GetEntityInPosition(imitated.transform.position + Vector3.down) is Cube)
            {
                Clone(CubeHelper.GetEntityInPosition(imitated.transform.position + Vector3.down));
            }
            else
            {
                UnClone();
            }
        }
    }
Example #4
0
        public void InverseTransformPoint()
        {
            var foo = new GameObject("foo");
            var bar = new GameObject("bar");

            foo.transform.position = Vector3.one;
            foo.transform.rotation = Quaternion.Euler(new Vector3(0, 180, 0));

            var inv1 = foo.transform.InverseTransformPoint(bar.transform.position);
            var inv2 = Matrix4x4.TRS(foo.transform.position, foo.transform.rotation, foo.transform.lossyScale)
                       .inverse
                       .MultiplyPoint3x4(bar.transform.position);

            var comparer = new Vector3EqualityComparer(10e-6f);

            Assert.That(inv1, Is.EqualTo(inv2).Using(comparer));
        }
Example #5
0
        public IEnumerator BoundaryPoints()
        {
            AddExtension(MockRuntime.XR_UNITY_mock_test);

            base.InitializeAndStart();

            yield return(null);

            Assert.IsTrue(base.IsRunning <XRInputSubsystem>(), "Input subsystem failed to properly start!");

            MockRuntime.SetReferenceSpaceBounds(XrReferenceSpaceType.Stage, new Vector2 {
                x = 1.0f, y = 3.0f
            });

            yield return(null);

            var input = Loader.GetLoadedSubsystem <XRInputSubsystem>();

            Assert.That(() => input, Is.Not.Null);

            input.TrySetTrackingOriginMode(TrackingOriginModeFlags.Floor);

            yield return(null);

            var points = new List <Vector3>();

            Assert.IsTrue(input.TryGetBoundaryPoints(points), "Failed to get boundary points!");
            Assert.That(() => points.Count, Is.EqualTo(4), "Incorrect number of boundary points received!");

            var comparer = new Vector3EqualityComparer(10e-6f);

            Assert.That(points[0], Is.EqualTo(new Vector3 {
                x = -1.0f, y = 0.0f, z = -3.0f
            }).Using(comparer));
            Assert.That(points[1], Is.EqualTo(new Vector3 {
                x = -1.0f, y = 0.0f, z = 3.0f
            }).Using(comparer));
            Assert.That(points[2], Is.EqualTo(new Vector3 {
                x = 1.0f, y = 0.0f, z = 3.0f
            }).Using(comparer));
            Assert.That(points[3], Is.EqualTo(new Vector3 {
                x = 1.0f, y = 0.0f, z = -3.0f
            }).Using(comparer));
        }
    public IEnumerator ball_moves_3_units_per_second()
    {
        var ball = CreateTestBall();

        try
        {
            yield return(WaitForFixedTime(1f));

            // Allow for 1 frame of error.
            var equalityComparer = new Vector3EqualityComparer(0.01f);

            Assert.That(
                ball.transform.position,
                Is.EqualTo(new Vector3(0f, 3f)).Using(equalityComparer)
                );
        }
        finally
        {
            Object.Destroy(ball);
        }
    }
Example #7
0
        public void InverseTransformPointLookRotation()
        {
            var comparer = new Vector3EqualityComparer(10e-6f);

            var foo = new GameObject("foo");
            var bar = new GameObject("bar");

            bar.transform.position = Vector3.right;             // (1, 0, 0)
            foo.transform.rotation = Quaternion.LookRotation(bar.transform.position);

            Assert.That(bar.transform.position, Is.EqualTo(new Vector3(1, 0, 0)).Using(comparer));
            Assert.That(foo.transform.rotation * Vector3.forward, Is.EqualTo(bar.transform.position).Using(comparer));

            var inv1 = foo.transform.InverseTransformPoint(bar.transform.position);
            var inv2 = Matrix4x4.TRS(
                foo.transform.position,
                foo.transform.rotation,
                foo.transform.lossyScale)
                       .inverse
                       .MultiplyPoint3x4(bar.transform.position);

            Assert.That(inv1, Is.EqualTo(inv2).Using(comparer));
        }
Example #8
0
 void Update()
 {
     Vector3EqualityComparer comparer = new Vector3EqualityComparer();
     if (isClone && Vector3.Equals(transform.position,imitated.transform.position)) {
         if (CubeHelper.GetEntityInPosition(imitated.transform.position + Vector3.down) is Cube)
         {
             Clone(CubeHelper.GetEntityInPosition(imitated.transform.position + Vector3.down));
         }
         else
         {
             UnClone();
         }
     }
 }
Example #9
0
        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));
        }