Пример #1
0
        public void Test_AddTrack()
        {
            var clip = new AnimationClip (100, "ClipName");
            var track1 = new AnimationTrack ("PropName", InterpolationType.Linear);
            var track2 = new AnimationTrack ("PropName", InterpolationType.Linear);
            var dummy = new Node ();

            clip.AddTrack (dummy, track1);
            clip.AddTrack (dummy, track2);

            Assert.AreEqual (2, clip.TrackCount);
            Assert.AreEqual (2, clip.Tracks.Count ());
            Assert.AreEqual (track1, clip.GetTrack (0).Item2);
            Assert.AreEqual (track2, clip.GetTrack (1).Item2);
        }
Пример #2
0
        public void Test_WeakReferenceTrack()
        {
            var target = new MyTarget ();
            var track = new AnimationTrack ("Speed", InterpolationType.Linear);
            track.AddKeyframe (0, 100.0f);
            track.AddKeyframe (100, 100.0f);

            var clip = new AnimationClip (100, "Clip");
            clip.AddTrack (target, track);

            var anim = new AnimationController ();
            anim.AddClip (clip);

            // ターゲットの解放
            target = null;
            GC.Collect ();

            Assert.AreEqual (1, clip.TrackCount);
            Assert.AreEqual (false, clip.GetTrack (0).Item1.IsAlive);

            // 解放済みのターゲットを含むアニメーションの実行。
            // エラーが起きてはならない
            anim.OnAnimate (0, 0);
        }