示例#1
0
        public void SendEvent(ExternalEvent evt)
        {
            if (stateChanging)
            {
                throw new Exception($"FSM '{base.name}' is trying to send external event {evt.Target}.{evt.Event} during a state change to {currentState.Name}");
            }
            switch (evt.Target)
            {
            case "parent":
                sendEventToParent(evt.Event);
                break;

            case "ancestors":
                sendEventToAncestors(evt.Event);
                break;

            case "siblings":
                sendEventToSiblings(evt.Event);
                break;

            case "children":
                sendEventToChildren(evt.Event);
                break;

            case "descendants":
                sendEventToDescendants(evt.Event);
                break;

            default:
                context.SendEvent(evt);
                break;
            }
        }
示例#2
0
        private static void tweakerSendEvent([NamedToggleValue(typeof(StateMachineContextNameGenerator), 0u)] string contextName, [NamedToggleValue(typeof(StateMachineNameGenerator), 0u)] string targetString, string eventString)
        {
            StateMachineContext stateMachineContext = null;

            StateMachineContext[] array = UnityEngine.Object.FindObjectsOfType <StateMachineContext>();
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i].name == contextName)
                {
                    stateMachineContext = array[i];
                    break;
                }
            }
            if (stateMachineContext != null)
            {
                if (stateMachineContext.ContainsStateMachine(targetString))
                {
                    stateMachineContext.SendEvent(new ExternalEvent(targetString, eventString));
                    return;
                }
                Log.LogErrorFormatted(typeof(StateMachineContext), "StateMachineContext {0} does not contain StateMachine {1}", contextName, targetString);
            }
            else
            {
                Log.LogErrorFormatted(typeof(StateMachineContext), "Could not find a StateMachineContext with name {0}", contextName);
            }
        }