Example #1
0
        public void EvaluateRumble_ListenerAtCenter_FullStrength()
        {
            var rumbleAsset = ScriptableObject.CreateInstance <RumbleAsset>();

            rumbleAsset.Lifetime = 1.0f;
            var expectedForceFeedback = new ForceFeedbackIntensities(1.0f, 0.7f);
            var expectedScreenShake   = new ScreenShakeIntensities(Vector2.one, 5);

            rumbleAsset.Intensity = new RumbleIntensity(expectedForceFeedback, expectedScreenShake);

            CreateAndInitializeRumbleSource(rumbleAsset, 10.0f);

            var rumble = rumbleSource.EvaluateRumble(rumbleSource.transform.position);

            Assert.That(rumble.ForceFeedback, Is.EqualTo(expectedForceFeedback));
            Assert.That(rumble.ScreenShake, Is.EqualTo(expectedScreenShake));
        }
Example #2
0
        public void EvaluateRumble_ListenerOutOfRange_ZeroRumble()
        {
            var rumbleAsset = ScriptableObject.CreateInstance <RumbleAsset>();

            rumbleAsset.Lifetime = 1.0f;
            var expectedForceFeedback = new ForceFeedbackIntensities(1.0f, 0.7f);
            var expectedScreenShake   = new ScreenShakeIntensities(Vector2.one, 5);

            rumbleAsset.Intensity = new RumbleIntensity(expectedForceFeedback, expectedScreenShake);
            float sourceRadius = DefaultRadius;

            CreateAndInitializeRumbleSource(rumbleAsset, sourceRadius);

            var atEdgeOfRadius = rumbleSource.transform.position + Vector3.one.normalized * (sourceRadius + .01f);
            var rumble         = rumbleSource.EvaluateRumble(atEdgeOfRadius);

            Assert.That(rumble.ForceFeedback, Is.EqualTo(ForceFeedbackIntensities.Zero));
            Assert.That(rumble.ScreenShake, Is.EqualTo(new ScreenShakeIntensities(Vector2.zero, 5)));
        }
Example #3
0
        public void EvaluateRumble_ListenerHalfwayLinearFalloff_HalfRumble()
        {
            var rumbleAsset = ScriptableObject.CreateInstance <RumbleAsset>();

            rumbleAsset.Lifetime  = 1.0f;
            rumbleAsset.Intensity = new RumbleIntensity(
                new ForceFeedbackIntensities(1.0f, 0.7f),
                new ScreenShakeIntensities(Vector2.one, 5));
            rumbleAsset.CurveDistanceModulator = new CurveDistanceModulator(
                AnimationCurve.Linear(0.0f, 1.0f, 1.0f, 0.0f));
            float sourceRadius = DefaultRadius;

            CreateAndInitializeRumbleSource(rumbleAsset, sourceRadius);

            var expectedForceFeedback = new ForceFeedbackIntensities(0.5f, 0.35f);
            var expectedScreenShake   = new ScreenShakeIntensities(new Vector2(0.5f, 0.5f), 5);
            var halfRadiusFromSource  = rumbleSource.transform.position + Vector3.one.normalized * sourceRadius * 0.5f;
            var rumble = rumbleSource.EvaluateRumble(halfRadiusFromSource);

            Assert.That(rumble.ForceFeedback, Is.EqualTo(expectedForceFeedback));
            Assert.That(rumble.ScreenShake, Is.EqualTo(expectedScreenShake));
        }