Beispiel #1
0
    public void PlayAutomatically_WithNo_DefaultClip_HasNoEffect_OnOtherClips([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
    {
        IAnimation animation    = ComparativeTestFixture.Instantiate(type);
        var        clip         = Resources.Load <AnimationClip>("LinearX");
        var        clipInstance = Object.Instantiate <AnimationClip>(clip);

        clipInstance.legacy         = animation.usesLegacy;
        animation.playAutomatically = true;
        animation.AddClip(clipInstance, clipInstance.name);

        var newGO = Object.Instantiate <GameObject>(animation.gameObject);

        animation = newGO.GetComponent <IAnimation>();

        Assert.AreEqual(false, animation.isPlaying);
    }
        public IEnumerator State_Enabled_AfterStateEnd_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            state.enabled = true;
            yield return(new WaitForSeconds(1.1f));

            Assert.IsFalse(state.enabled);
        }
Beispiel #3
0
        public IEnumerator Rewind_ValidName_Playing_StateTime_IsZero([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation     = ComparativeTestFixture.Instantiate(type);
            var        clipX         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstanceX = Object.Instantiate <AnimationClip>(clipX);

            clipInstanceX.legacy = animation.usesLegacy;
            animation.AddClip(clipInstanceX, "ValidName");
            animation.Play("ValidName");
            yield return(new WaitForSeconds(0.5f));

            animation.Rewind("ValidName");
            IAnimationState state = animation.GetState("ValidName");

            Assert.AreEqual(0f, state.time);
        }
        public void State_Enabled_False_IsPlaying_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            animation.Play(state.name);
            state.enabled = false;
            Assert.IsFalse(animation.isPlaying);
            Assert.IsFalse(animation.IsPlaying(state.name));
        }
Beispiel #5
0
        public void Blend_DoesntChange_OtherState_Weight([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation     = ComparativeTestFixture.Instantiate(type);
            var        clipX         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance1 = Object.Instantiate <AnimationClip>(clipX);
            var        clipInstance2 = Object.Instantiate <AnimationClip>(clipX);

            clipInstance1.legacy = animation.usesLegacy;
            clipInstance2.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance1, "ToBlend");
            animation.AddClip(clipInstance2, "ToLeaveAlone");
            animation.Play("ToLeaveAlone");
            animation.Blend("ToBlend", 1f, 0f);

            Assert.AreEqual(1f, animation.GetState("ToLeaveAlone").weight);
        }
Beispiel #6
0
        public IEnumerator CrossfadedOut_Clips_AreTimeReset([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ToPlay");
            animation.AddClip(clipInstance, "ToCrossfade");
            animation.Play("ToPlay");
            animation.CrossFade("ToCrossfade", 0.1f);

            yield return(new WaitForSeconds(0.2f));

            Assert.AreEqual(0.0f, animation.GetState("ToPlay").normalizedTime);
        }
Beispiel #7
0
    public void DefaultClip_Plays_When_IsPlayingAutomatically_IsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
    {
        IAnimation animation    = ComparativeTestFixture.Instantiate(type);
        var        clip         = Resources.Load <AnimationClip>("LinearX");
        var        clipInstance = Object.Instantiate <AnimationClip>(clip);

        clipInstance.legacy         = animation.usesLegacy;
        animation.clip              = clipInstance;
        animation.playAutomatically = true;

        var newGO = Object.Instantiate <GameObject>(animation.gameObject);

        animation = newGO.GetComponent <IAnimation>();

        Assert.AreEqual(true, animation.isPlaying);
        Assert.AreEqual(true, animation.IsPlaying(animation.clip.name));
    }
        public void State_Time_SetPast_ClipEnd_Doesnt_Immediately_StopState([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            animation.Play(state.name);
            state.time = 2.0f;
            Assert.IsTrue(state.enabled, "State should be enabled");
            Assert.IsTrue(animation.IsPlaying(state.name), "State should be playing");
            Assert.IsTrue(animation.isPlaying, "Component should be playing");
        }
Beispiel #9
0
    public IEnumerator WrapMode_DoesntOverrideClipsSetting([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
    {
        IAnimation animation    = ComparativeTestFixture.Instantiate(type);
        var        clip         = Resources.Load <AnimationClip>("LinearX");
        var        clipInstance = Object.Instantiate <AnimationClip>(clip);

        clipInstance.legacy   = animation.usesLegacy;
        clipInstance.wrapMode = WrapMode.Once;

        animation.wrapMode = WrapMode.Loop;
        animation.AddClip(clipInstance, "test");
        animation.Play("test");

        yield return(new WaitForSeconds(1.2f));

        Assert.AreEqual(false, animation.isPlaying);
    }
Beispiel #10
0
    public IEnumerator Rewind_PlaysFrameZero([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
    {
        IAnimation animation     = ComparativeTestFixture.Instantiate(type);
        var        clipX         = Resources.Load <AnimationClip>("LinearX");
        var        clipInstanceX = Object.Instantiate <AnimationClip>(clipX);

        clipInstanceX.legacy = animation.usesLegacy;
        animation.AddClip(clipInstanceX, "ValidName");
        animation.Play("ValidName");
        yield return(new WaitForSeconds(0.5f));

        Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.x);
        animation.Rewind("ValidName");
        yield return(null);

        Assert.AreEqual(0f, animation.gameObject.transform.localPosition.x);
    }
Beispiel #11
0
        public IEnumerator Stop_ValidName_DoesntMoveObject([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation     = ComparativeTestFixture.Instantiate(type);
            var        clipX         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstanceX = Object.Instantiate <AnimationClip>(clipX);

            clipInstanceX.legacy = animation.usesLegacy;
            animation.AddClip(clipInstanceX, "ValidName");
            animation.Play("ValidName");

            yield return(null);

            Vector3 localPos = animation.gameObject.transform.localPosition;

            animation.Stop("ValidName");
            Assert.AreEqual(localPos, animation.gameObject.transform.localPosition);
        }
Beispiel #12
0
        public IEnumerator PlayQueue_Queueing_SameClip_AfterFirstClipIsDone_IsPlaying_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ToPlayAndPlayQueue");
            animation.Play("ToPlayAndPlayQueue");
            animation.PlayQueued("ToPlayAndPlayQueue", QueueMode.CompleteOthers);
            yield return(new WaitForSeconds(1.1f));

            Assert.IsTrue(animation.IsPlaying("ToPlayAndPlayQueue"));

            yield return(null);
        }
Beispiel #13
0
        public IEnumerator PlayQueue_WithClipPlaying_IsStatePlaying_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ToPlay");
            animation.AddClip(clipInstance, "ToPlayQueue");
            animation.Play("ToPlay");
            animation.PlayQueued("ToPlayQueue", QueueMode.CompleteOthers);

            Assert.IsFalse(animation.IsPlaying("ToPlayQueue"));

            yield return(null);
        }
        public void State_Weight_SetWeight_DoesntChange_Enable([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            state.weight = 1f;
            Assert.IsFalse(state.enabled);
            state.enabled = true;
            state.weight  = 0f;
            Assert.IsTrue(state.enabled);
        }
Beispiel #15
0
    public IEnumerator Queue_Looped_Clips_Block_QueuedAnimations([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
    {
        IAnimation animation    = ComparativeTestFixture.Instantiate(type);
        var        clip         = Resources.Load <AnimationClip>("LinearX");
        var        clipInstance = Object.Instantiate <AnimationClip>(clip);

        clipInstance.legacy   = animation.usesLegacy;
        clipInstance.wrapMode = WrapMode.Loop;

        animation.AddClip(clipInstance, "Play");
        animation.AddClip(clipInstance, "Queued");
        animation.Play("Play");
        animation.PlayQueued("Queued", QueueMode.CompleteOthers);
        yield return(new WaitForSeconds(1.1f));

        Assert.IsFalse(animation.IsPlaying("Queued"));
    }
        public void State_Time_Affects_ClipPlayback([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            state.enabled = true;
            state.weight  = 1f;
            state.time    = 0.5f;
            animation.Sample();
            Assert.AreEqual(animation.gameObject.transform.localPosition.x, state.time, "Sampling should have updated the position of the object at time 0.5");
        }
        public void RemoveClip_AnimationClip_DoesntRemoveUnrelatedClips([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clip2        = Resources.Load <AnimationClip>("LinearY");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;
            var clipInstance2 = Object.Instantiate <AnimationClip>(clip2);

            clipInstance2.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, clipInstance.name);
            animation.AddClip(clipInstance2, clipInstance2.name);
            animation.RemoveClip(clipInstance);
            Assert.AreEqual(1, animation.GetClipCount(), "Component should still have 1 connected clip after remove");
            Assert.NotNull(animation.GetState(clipInstance2.name));
        }
        public IEnumerator State_Weight_NonZero_Writes([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            state.enabled = true;
            state.weight  = 1f;
            state.time    = 0.5f; //Seek the clip so that values should be written;
            yield return(null);

            Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.x);
        }
        public void State_Speed_DoesntAffect_NormalizedTime([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy   = animation.usesLegacy;
            clipInstance.wrapMode = WrapMode.Loop;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            state.time = 0.5f;
            float normalizedTime = state.normalizedTime;

            state.speed = 10.0f;
            Assert.AreEqual(normalizedTime, state.normalizedTime);
        }
Beispiel #20
0
    public IEnumerator State_Enabled_DoesntCover_QueuedState([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
    {
        IAnimation animation    = ComparativeTestFixture.Instantiate(type);
        var        clip         = Resources.Load <AnimationClip>("LinearX");
        var        clipInstance = Object.Instantiate <AnimationClip>(clip);

        clipInstance.legacy = animation.usesLegacy;

        animation.AddClip(clipInstance, "PlayAndQueue");
        animation.Play("PlayAndQueue");
        animation.PlayQueued("PlayAndQueue", QueueMode.CompleteOthers);
        IAnimationState state = animation.GetState("PlayAndQueue");

        Assert.IsTrue(state.enabled);
        yield return(new WaitForSeconds(1.1f));

        Assert.IsFalse(state.enabled);
    }
Beispiel #21
0
        public IEnumerator Play_SameClip_StateTime_DoesntChange([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "test");
            animation.Play("test");

            yield return(null);

            float time = animation.GetState("test").time;

            animation.Play("test");
            Assert.AreEqual(time, animation.GetState("test").time);
        }
Beispiel #22
0
        public void Sample_EvaluatesAt_StateTime([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation     = ComparativeTestFixture.Instantiate(type);
            var        clipX         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstanceX = Object.Instantiate <AnimationClip>(clipX);

            clipInstanceX.legacy = animation.usesLegacy;

            animation.AddClip(clipInstanceX, "ToSample");
            IAnimationState state = animation.GetState("ToSample");

            state.enabled = true;
            state.weight  = 1f;
            state.time    = 0.5f;
            animation.Sample();

            Assert.AreEqual(0.5f, animation.gameObject.transform.localPosition.x);
        }
Beispiel #23
0
        public void Sample_DoesntChange_StateTime([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation     = ComparativeTestFixture.Instantiate(type);
            var        clipX         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstanceX = Object.Instantiate <AnimationClip>(clipX);

            clipInstanceX.legacy = animation.usesLegacy;

            animation.AddClip(clipInstanceX, "clip1");

            animation.GetState("clip1").enabled = true;
            animation.GetState("clip1").weight  = 1f;
            animation.GetState("clip1").time    = 0.5f;
            animation.Sample();

            Assert.AreEqual(0.5f, animation.gameObject.transform.localPosition.x);
            Assert.IsTrue(Mathf.Approximately(0.5f, animation.GetState("clip1").time));
        }
Beispiel #24
0
    public IEnumerator CullingMode_CullCompletely_Doesnt_Animate_InvisibleObject([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
    {
        IAnimation animation    = ComparativeTestFixture.InstantiateCube(type);
        var        clip         = Resources.Load <AnimationClip>("LinearX");
        var        clipInstance = Object.Instantiate <AnimationClip>(clip);

        clipInstance.legacy = animation.usesLegacy;

        animation.cullingMode = AnimatorCullingMode.CullCompletely;
        animation.AddClip(clipInstance, "test");
        animation.gameObject.GetComponent <MeshRenderer>().enabled = false;
        animation.Play("test");

        yield return(null);

        yield return(null);

        Assert.AreEqual(Vector3.zero, animation.gameObject.transform.localPosition);
    }
        public IEnumerator State_Time_SetPast_ClipEnd_StopsState_AfterOneFrame([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            animation.Play(state.name);
            state.time = 2.0f;
            yield return(null);

            Assert.IsFalse(state.enabled, "State should be disabled");
            Assert.IsFalse(animation.IsPlaying(state.name), "State should be disabled");
            Assert.IsFalse(animation.isPlaying, "State should be disabled");
        }
        public void State_NormalizedTime_AffectsTime([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;
            //Create event to extend clip
            var evt = new AnimationEvent();

            evt.time = 2.0f;
            clipInstance.AddEvent(evt);

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            state.normalizedTime = 0.5f;
            Assert.AreEqual(state.normalizedTime * state.length, state.time);
        }
Beispiel #27
0
    public IEnumerator IsPlaying_AfterCrossfadeDone_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
    {
        IAnimation animation    = ComparativeTestFixture.Instantiate(type);
        var        clip         = Resources.Load <AnimationClip>("LinearX");
        var        clipInstance = Object.Instantiate <AnimationClip>(clip);

        clipInstance.legacy   = animation.usesLegacy;
        clipInstance.wrapMode = WrapMode.Once;

        animation.AddClip(clipInstance, "test");
        animation.AddClip(clipInstance, "test2");
        animation.Play("test");
        yield return(new WaitForSeconds(0.2f));

        animation.CrossFade("test2", 1.5f);
        yield return(new WaitForSeconds(2.0f));

        Assert.AreEqual(false, animation.isPlaying);
    }
        public IEnumerator State_Speed_SetTo_Zero_Time_DoesntAdvance([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            state.speed   = 0f;
            state.enabled = true;
            yield return(null);

            yield return(null); //Second frame to allow Animation Component to advance time

            Assert.AreEqual(0f, state.time);
        }
        public IEnumerator State_Speed_Negative_StopsState_WhenTime_Reaches_Negative([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation    = ComparativeTestFixture.Instantiate(type);
            var        clip         = Resources.Load <AnimationClip>("LinearX");
            var        clipInstance = Object.Instantiate <AnimationClip>(clip);

            clipInstance.legacy = animation.usesLegacy;

            animation.AddClip(clipInstance, "ValidName");
            IAnimationState state = animation.GetState("ValidName");

            state.speed   = -1f;
            state.enabled = true;
            yield return(null);

            yield return(null); //Second frame to allow Animation Component to advance time

            Assert.IsFalse(state.enabled);
        }
Beispiel #30
0
        public IEnumerator CrossfadeQueue_WithClipPlaying_IsStatePlaying_AfterOriginalClipDone_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")] System.Type type)
        {
            IAnimation animation     = ComparativeTestFixture.Instantiate(type);
            var        clipX         = Resources.Load <AnimationClip>("LinearX");
            var        clipY         = Resources.Load <AnimationClip>("LinearY");
            var        clipInstanceX = Object.Instantiate <AnimationClip>(clipX);
            var        clipInstanceY = Object.Instantiate <AnimationClip>(clipY);

            clipInstanceX.legacy = animation.usesLegacy;
            clipInstanceY.legacy = animation.usesLegacy;

            animation.AddClip(clipInstanceY, "ToPlay");
            animation.AddClip(clipInstanceX, "ToCrossfade");
            animation.Play("ToPlay");
            animation.CrossFadeQueued("ToCrossfade", 0.0f, QueueMode.CompleteOthers);
            yield return(new WaitForSeconds(1.1f));

            Assert.IsTrue(animation.IsPlaying("ToCrossfade"));
        }