SetBaseSpeed.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #if CHRONOS_PLAYMAKER
  2. using HutongGames.PlayMaker;
  3. namespace Chronos.PlayMaker
  4. {
  5. [ActionCategory("Chronos")]
  6. [Tooltip("Sets a base speed used by a timeline.")]
  7. [HelpUrl("http://ludiq.io/chronos/documentation#Timeline")]
  8. public class SetBaseSpeed : ChronosComponentAction<Timeline>
  9. {
  10. public enum Speed
  11. {
  12. Animator,
  13. Animation,
  14. Particle,
  15. Audio,
  16. Navigation,
  17. NavigationAngular
  18. }
  19. [RequiredField]
  20. [CheckForComponent(typeof(Timeline))]
  21. public FsmOwnerDefault gameObject;
  22. public Speed setSpeed;
  23. [RequiredField]
  24. public FsmFloat value;
  25. public bool everyFrame;
  26. public override void Reset()
  27. {
  28. gameObject = null;
  29. setSpeed = Speed.Animator;
  30. value = null;
  31. everyFrame = false;
  32. }
  33. public override void OnEnter()
  34. {
  35. DoAction();
  36. if (!everyFrame)
  37. {
  38. Finish();
  39. }
  40. }
  41. public override void OnUpdate()
  42. {
  43. DoAction();
  44. }
  45. private void DoAction()
  46. {
  47. if (!UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) return;
  48. switch (setSpeed)
  49. {
  50. case Speed.Animator:
  51. timeline.animator.speed = value.Value;
  52. break;
  53. case Speed.Animation:
  54. timeline.animation.speed = value.Value;
  55. break;
  56. case Speed.Particle:
  57. timeline.particleSystem.playbackSpeed = value.Value;
  58. break;
  59. case Speed.Audio:
  60. timeline.audioSource.pitch = value.Value;
  61. break;
  62. case Speed.Navigation:
  63. timeline.navMeshAgent.speed = value.Value;
  64. break;
  65. case Speed.NavigationAngular:
  66. timeline.navMeshAgent.angularSpeed = value.Value;
  67. break;
  68. }
  69. }
  70. }
  71. }
  72. #endif