12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #if CHRONOS_PLAYMAKER
- using HutongGames.PlayMaker;
- namespace Chronos.PlayMaker
- {
- [ActionCategory("Physics (Chronos)")]
- [Tooltip("Tests if a Game Object's Rigid Body is Kinematic.")]
- public class IsKinematic : ChronosComponentAction<Timeline>
- {
- [RequiredField]
- [CheckForComponent(typeof(Timeline))]
- public FsmOwnerDefault gameObject;
- public FsmEvent trueEvent;
- public FsmEvent falseEvent;
- [UIHint(UIHint.Variable)]
- public FsmBool store;
- public bool everyFrame;
- public override void Reset()
- {
- gameObject = null;
- trueEvent = null;
- falseEvent = null;
- store = null;
- everyFrame = false;
- }
- public override void OnEnter()
- {
- DoIsKinematic();
- if (!everyFrame)
- {
- Finish();
- }
- }
- public override void OnUpdate()
- {
- DoIsKinematic();
- }
- private void DoIsKinematic()
- {
- var go = Fsm.GetOwnerDefaultTarget(gameObject);
- if (UpdateCache(go))
- {
- var isKinematic = timeline.rigidbody.isKinematic;
- store.Value = isKinematic;
- Fsm.Event(isKinematic ? trueEvent : falseEvent);
- }
- }
- }
- }
- #endif
|