Rasagar/Library/PackageCache/com.unity.cinemachine/Tests/Runtime/LookaheadTests.cs
2024-08-26 23:07:20 +03:00

89 lines
3.2 KiB
C#

using System.Collections;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
using Cinemachine;
namespace Tests.Runtime
{
[TestFixture]
public class LookaheadTests : CinemachineFixtureBase
{
CinemachineVirtualCamera m_VCam;
CinemachineComposer m_Composer;
CinemachineFramingTransposer m_FramingTransposer;
Transform m_Target;
[SetUp]
public override void SetUp()
{
// Camera
CreateGameObject("MainCamera", typeof(Camera), typeof(CinemachineBrain));
m_Target = CreateGameObject("Target Object").transform;
// Source vcam
m_VCam = CreateGameObject("Source CM Vcam", typeof(CinemachineVirtualCamera)).GetComponent<CinemachineVirtualCamera>();
m_VCam.Follow = m_Target;
m_VCam.LookAt = m_Target;
m_FramingTransposer = m_VCam.AddCinemachineComponent<CinemachineFramingTransposer>();
m_Composer = m_VCam.AddCinemachineComponent<CinemachineComposer>();
m_FramingTransposer.m_LookaheadSmoothing = m_Composer.m_LookaheadSmoothing = 0.3f;
m_FramingTransposer.m_LookaheadTime = m_Composer.m_LookaheadTime = 10;
base.SetUp();
}
[UnityTest]
public IEnumerator TargetsChanged()
{
Assert.That(m_VCam.FollowTargetChanged, Is.False);
Assert.That(m_VCam.LookAtTargetChanged, Is.False);
yield return null;
Assert.That(m_VCam.FollowTargetChanged, Is.False);
Assert.That(m_VCam.LookAtTargetChanged, Is.False);
var newTarget = CreateGameObject("Target Object 2").transform;
m_VCam.LookAt = newTarget;
yield return null;
Assert.That(m_VCam.FollowTargetChanged, Is.False);
Assert.That(m_VCam.LookAtTargetChanged, Is.True);
m_VCam.Follow = newTarget;
yield return null;
Assert.That(m_VCam.FollowTargetChanged, Is.True);
Assert.That(m_VCam.LookAtTargetChanged, Is.False);
m_VCam.Follow = m_Target;
m_VCam.LookAt = m_Target;
yield return null;
Assert.That(m_VCam.FollowTargetChanged, Is.True);
Assert.That(m_VCam.LookAtTargetChanged, Is.True);
}
[UnityTest]
public IEnumerator LookaheadDelta()
{
var delta = m_Composer.m_Predictor.PredictPositionDelta(m_Composer.m_LookaheadTime);
Assert.That(delta.sqrMagnitude > 0, Is.False);
delta = m_FramingTransposer.m_Predictor.PredictPositionDelta(m_FramingTransposer.m_LookaheadTime);
Assert.That(delta.sqrMagnitude > 0, Is.False);
m_Target.Translate(10, 0, 0);
yield return null;
delta = m_Composer.m_Predictor.PredictPositionDelta(m_Composer.m_LookaheadTime);
Assert.That(delta.sqrMagnitude > 0, Is.True);
delta = m_FramingTransposer.m_Predictor.PredictPositionDelta(m_FramingTransposer.m_LookaheadTime);
Assert.That(delta.sqrMagnitude > 0, Is.True);
}
}
}