public bool TryFindHandler(TTrigger trigger, out ATriggerBehaviour handler) { return( TryFindLocalHandler(trigger, out handler) || (Superstate != null && Superstate.TryFindHandler(trigger, out handler)) ); }
public void AddTriggerBehaviour(ATriggerBehaviour aTriggerBehaviour) { ICollection <ATriggerBehaviour> allowed; if (_triggerBehaviours.TryGetValue(aTriggerBehaviour.Trigger, out allowed)) { allowed = new List <ATriggerBehaviour>(); _triggerBehaviours.Add(aTriggerBehaviour.Trigger, allowed); } allowed.Add(aTriggerBehaviour); }
bool TryFindLocalHandler(TTrigger trigger, out ATriggerBehaviour handler) { ICollection <ATriggerBehaviour> possible; if (!_triggerBehaviours.TryGetValue(trigger, out possible)) { handler = null; return(false); } var actual = possible.Where(at => at.IsGuardConditionMet).ToArray(); if (actual.Count() > 1) { throw new InvalidOperationException( string.Format(RStateRepresentationResources.MultipleTransitionsPermitted, trigger, _state)); } handler = actual.FirstOrDefault(); return(handler != null); }