IsKinematic.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #if CHRONOS_PLAYMAKER
  2. using HutongGames.PlayMaker;
  3. namespace Chronos.PlayMaker
  4. {
  5. [ActionCategory("Physics (Chronos)")]
  6. [Tooltip("Tests if a Game Object's Rigid Body is Kinematic.")]
  7. public class IsKinematic : ChronosComponentAction<Timeline>
  8. {
  9. [RequiredField]
  10. [CheckForComponent(typeof(Timeline))]
  11. public FsmOwnerDefault gameObject;
  12. public FsmEvent trueEvent;
  13. public FsmEvent falseEvent;
  14. [UIHint(UIHint.Variable)]
  15. public FsmBool store;
  16. public bool everyFrame;
  17. public override void Reset()
  18. {
  19. gameObject = null;
  20. trueEvent = null;
  21. falseEvent = null;
  22. store = null;
  23. everyFrame = false;
  24. }
  25. public override void OnEnter()
  26. {
  27. DoIsKinematic();
  28. if (!everyFrame)
  29. {
  30. Finish();
  31. }
  32. }
  33. public override void OnUpdate()
  34. {
  35. DoIsKinematic();
  36. }
  37. private void DoIsKinematic()
  38. {
  39. var go = Fsm.GetOwnerDefaultTarget(gameObject);
  40. if (UpdateCache(go))
  41. {
  42. var isKinematic = timeline.rigidbody.isKinematic;
  43. store.Value = isKinematic;
  44. Fsm.Event(isKinematic ? trueEvent : falseEvent);
  45. }
  46. }
  47. }
  48. }
  49. #endif