LookaheadTests.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System.Collections;
  2. using NUnit.Framework;
  3. using UnityEngine;
  4. using UnityEngine.TestTools;
  5. using Cinemachine;
  6. namespace Tests.Runtime
  7. {
  8. [TestFixture]
  9. public class LookaheadTests : CinemachineFixtureBase
  10. {
  11. CinemachineVirtualCamera m_VCam;
  12. CinemachineComposer m_Composer;
  13. CinemachineFramingTransposer m_FramingTransposer;
  14. Transform m_Target;
  15. [SetUp]
  16. public override void SetUp()
  17. {
  18. // Camera
  19. CreateGameObject("MainCamera", typeof(Camera), typeof(CinemachineBrain));
  20. m_Target = CreateGameObject("Target Object").transform;
  21. // Source vcam
  22. m_VCam = CreateGameObject("Source CM Vcam", typeof(CinemachineVirtualCamera)).GetComponent<CinemachineVirtualCamera>();
  23. m_VCam.Follow = m_Target;
  24. m_VCam.LookAt = m_Target;
  25. m_FramingTransposer = m_VCam.AddCinemachineComponent<CinemachineFramingTransposer>();
  26. m_Composer = m_VCam.AddCinemachineComponent<CinemachineComposer>();
  27. m_FramingTransposer.m_LookaheadSmoothing = m_Composer.m_LookaheadSmoothing = 0.3f;
  28. m_FramingTransposer.m_LookaheadTime = m_Composer.m_LookaheadTime = 10;
  29. base.SetUp();
  30. }
  31. [UnityTest]
  32. public IEnumerator TargetsChanged()
  33. {
  34. Assert.That(m_VCam.FollowTargetChanged, Is.False);
  35. Assert.That(m_VCam.LookAtTargetChanged, Is.False);
  36. yield return null;
  37. Assert.That(m_VCam.FollowTargetChanged, Is.False);
  38. Assert.That(m_VCam.LookAtTargetChanged, Is.False);
  39. var newTarget = CreateGameObject("Target Object 2").transform;
  40. m_VCam.LookAt = newTarget;
  41. yield return null;
  42. Assert.That(m_VCam.FollowTargetChanged, Is.False);
  43. Assert.That(m_VCam.LookAtTargetChanged, Is.True);
  44. m_VCam.Follow = newTarget;
  45. yield return null;
  46. Assert.That(m_VCam.FollowTargetChanged, Is.True);
  47. Assert.That(m_VCam.LookAtTargetChanged, Is.False);
  48. m_VCam.Follow = m_Target;
  49. m_VCam.LookAt = m_Target;
  50. yield return null;
  51. Assert.That(m_VCam.FollowTargetChanged, Is.True);
  52. Assert.That(m_VCam.LookAtTargetChanged, Is.True);
  53. }
  54. [UnityTest]
  55. public IEnumerator LookaheadDelta()
  56. {
  57. var delta = m_Composer.m_Predictor.PredictPositionDelta(m_Composer.m_LookaheadTime);
  58. Assert.That(delta.sqrMagnitude > 0, Is.False);
  59. delta = m_FramingTransposer.m_Predictor.PredictPositionDelta(m_FramingTransposer.m_LookaheadTime);
  60. Assert.That(delta.sqrMagnitude > 0, Is.False);
  61. m_Target.Translate(10, 0, 0);
  62. yield return null;
  63. delta = m_Composer.m_Predictor.PredictPositionDelta(m_Composer.m_LookaheadTime);
  64. Assert.That(delta.sqrMagnitude > 0, Is.True);
  65. delta = m_FramingTransposer.m_Predictor.PredictPositionDelta(m_FramingTransposer.m_LookaheadTime);
  66. Assert.That(delta.sqrMagnitude > 0, Is.True);
  67. }
  68. }
  69. }