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); }
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); }