public void CreatePose_ExtractsCorrectPose(int frame, int expectedFrame) { using (var pose = ClipTransformations.CreatePose(FullAnimationClip, frame)) { Assert.That(pose.Value.SampleRate, Is.EqualTo(FullAnimationClip.Value.SampleRate)); Assert.That(pose.Value.Duration, Is.EqualTo(0)); Assert.That(pose.Value.Bindings.CurveCount, Is.EqualTo(FullAnimationClip.Value.Bindings.CurveCount)); Assert.That(pose.Value.Samples.Length, Is.EqualTo(FullAnimationClip.Value.Bindings.CurveCount)); Assert.That(AreEqual(ref pose.Value.Bindings.TranslationBindings, ref FullAnimationClip.Value.Bindings.TranslationBindings)); Assert.That(AreEqual(ref pose.Value.Samples, ref FullAnimationClip.Value.Samples, expectedFrame * pose.Value.Bindings.CurveCount)); } }
public void Clone_CreatesExactDuplicate() { using (var clone = ClipTransformations.Clone(FullAnimationClip)) { Assert.That(clone.Value.SampleRate, Is.EqualTo(FullAnimationClip.Value.SampleRate)); Assert.That(clone.Value.Duration, Is.EqualTo(FullAnimationClip.Value.Duration)); Assert.That(clone.Value.Bindings.CurveCount, Is.EqualTo(FullAnimationClip.Value.Bindings.CurveCount)); Assert.That(AreEqual(ref clone.Value.Bindings.TranslationBindings, ref FullAnimationClip.Value.Bindings.TranslationBindings)); Assert.That(AreEqual(ref clone.Value.Bindings.RotationBindings, ref FullAnimationClip.Value.Bindings.RotationBindings)); Assert.That(AreEqual(ref clone.Value.Bindings.ScaleBindings, ref FullAnimationClip.Value.Bindings.ScaleBindings)); Assert.That(AreEqual(ref clone.Value.Bindings.FloatBindings, ref FullAnimationClip.Value.Bindings.FloatBindings)); Assert.That(AreEqual(ref clone.Value.Bindings.IntBindings, ref FullAnimationClip.Value.Bindings.IntBindings)); Assert.That(AreEqual(ref clone.Value.Samples, ref FullAnimationClip.Value.Samples)); } }
private void Reverse_InversesClipEvaluation(BlobAssetReference <Clip> clip) { var evaluationTimes = Enumerable.Range(0, clip.Value.FrameCount + 1).Select(x => x / clip.Value.SampleRate).ToArray(); var reverseTimes = evaluationTimes.Select(x => clip.Value.Duration - x).ToArray(); using (var reverseClip = ClipTransformations.Reverse(clip)) { Assert.That(reverseClip.Value.SampleRate, Is.EqualTo(clip.Value.SampleRate)); Assert.That(reverseClip.Value.Duration, Is.EqualTo(clip.Value.Duration)); Assert.That(reverseClip.Value.Bindings.CurveCount, Is.EqualTo(clip.Value.Bindings.CurveCount)); Assert.That(AreEqual(ref reverseClip.Value.Bindings.TranslationBindings, ref clip.Value.Bindings.TranslationBindings)); Assert.That(AreEqual(ref reverseClip.Value.Bindings.RotationBindings, ref clip.Value.Bindings.RotationBindings)); Assert.That(AreEqual(ref reverseClip.Value.Bindings.ScaleBindings, ref clip.Value.Bindings.ScaleBindings)); // Evaluate for (var bone = 0; bone < clip.Value.Bindings.TranslationBindings.Length; bone++) { EvaluateClip(clip, bone, reverseTimes, out float3[] expPos, out quaternion[] expRot, out float3[] expScale);