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; } }
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); } }