AddTorque2d.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #if CHRONOS_PLAYMAKER
  2. using HutongGames.PlayMaker;
  3. namespace Chronos.PlayMaker
  4. {
  5. [ActionCategory("Physics 2d (Chronos)")]
  6. [Tooltip("Adds a 2d torque (rotational force) to a Game Object.")]
  7. public class AddTorque2d : ChronosComponentAction<Timeline>
  8. {
  9. [RequiredField]
  10. [CheckForComponent(typeof(Timeline))]
  11. [Tooltip("The GameObject to add torque to.")]
  12. public FsmOwnerDefault gameObject;
  13. [Tooltip("Torque")]
  14. public FsmFloat torque;
  15. [Tooltip("Repeat every frame while the state is active.")]
  16. public bool everyFrame;
  17. public override void Awake()
  18. {
  19. Fsm.HandleFixedUpdate = true;
  20. }
  21. public override void Reset()
  22. {
  23. gameObject = null;
  24. torque = null;
  25. everyFrame = false;
  26. }
  27. public override void OnEnter()
  28. {
  29. DoAddTorque();
  30. if (!everyFrame)
  31. {
  32. Finish();
  33. }
  34. }
  35. public override void OnFixedUpdate()
  36. {
  37. DoAddTorque();
  38. }
  39. private void DoAddTorque()
  40. {
  41. if (!UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) return;
  42. timeline.rigidbody2D.AddTorque(torque.Value);
  43. }
  44. }
  45. }
  46. #endif