public bool DoesTargetImplementsEvent(FsmEventSetup fsmEventSetup)
        {
            string eventName = fsmEventSetup.EventString;

            if (fsmEventSetup.target == PlayMakerProxyEventTarget.BroadCastAll)
            {
                return(FsmEvent.IsEventGlobal(eventName));
            }

            if (fsmEventSetup.target == PlayMakerProxyEventTarget.FsmComponent)
            {
                return(PlayMakerUtils.DoesFsmImplementsEvent(fsmEventSetup.fsmComponent, eventName));
            }

            if (fsmEventSetup.target == PlayMakerProxyEventTarget.GameObject)
            {
                return(PlayMakerUtils.DoesGameObjectImplementsEvent(fsmEventSetup.gameObject, eventName));
            }

            if (fsmEventSetup.target == PlayMakerProxyEventTarget.Owner)
            {
                return(PlayMakerUtils.DoesGameObjectImplementsEvent(this.gameObject, eventName));
            }

            return(false);
        }
        void FirePlayMakerEvent(FsmEventSetup fsmEventSetup, FsmEventTarget fsmEventTarget, FsmEventData eventData)
        {
            if (eventData != null)
            {
                HutongGames.PlayMaker.Fsm.EventData = eventData;
            }
            fsmEventTarget.excludeSelf = false;

            if (PlayMakerCurvySceneProxy.fsm == null)
            {
                Debug.LogError("Missing 'PlayMaker Curvy' prefab in scene");
                return;
            }
            Fsm _fsm = PlayMakerCurvySceneProxy.fsm.Fsm;

            if (fsmEventSetup.debug)
            {
                Debug.Log("Fire event: " + fsmEventSetup.EventString);
            }
            _fsm.Event(fsmEventTarget, fsmEventSetup.EventString);
        }
        void setupEventTarget(FsmEventSetup fsmEventSetup, ref FsmEventTarget fsmEventTarget)
        {
            if (fsmEventTarget == null)
            {
                fsmEventTarget = new FsmEventTarget();
            }

            // BROADCAST
            if (fsmEventSetup.target == PlayMakerProxyEventTarget.BroadCastAll)
            {
                fsmEventTarget.target      = FsmEventTarget.EventTarget.BroadcastAll;
                fsmEventTarget.excludeSelf = false;
            }

            // FSM COMPONENT
            else if (fsmEventSetup.target == PlayMakerProxyEventTarget.FsmComponent)
            {
                fsmEventTarget.target       = FsmEventTarget.EventTarget.FSMComponent;
                fsmEventTarget.fsmComponent = fsmEventSetup.fsmComponent;
            }

            // GAMEOBJECT
            else if (fsmEventSetup.target == PlayMakerProxyEventTarget.GameObject)
            {
                fsmEventTarget.target                      = FsmEventTarget.EventTarget.GameObject;
                fsmEventTarget.gameObject                  = new FsmOwnerDefault();
                fsmEventTarget.gameObject.OwnerOption      = OwnerDefaultOption.SpecifyGameObject;
                fsmEventTarget.gameObject.GameObject.Value = fsmEventSetup.gameObject;
            }

            // OWNER
            else if (fsmEventSetup.target == PlayMakerProxyEventTarget.Owner)
            {
                fsmEventTarget.ResetParameters();
                fsmEventTarget.target                      = FsmEventTarget.EventTarget.GameObject;
                fsmEventTarget.gameObject                  = new FsmOwnerDefault();
                fsmEventTarget.gameObject.OwnerOption      = OwnerDefaultOption.SpecifyGameObject;
                fsmEventTarget.gameObject.GameObject.Value = this.gameObject;
            }
        }