/// <summary> /// Given an MmResponder, extract an MmRelayNode from it's GameObject, if one is present. /// </summary> /// <param name="iMmResponder">Observed MmResponder</param> /// <returns>an MmRelayNode if one is present on the same GameObject.</returns> public static MmRelayNode GetRelayNode(IMmResponder iMmResponder) { var relayNode = ((MonoBehaviour)iMmResponder).GetComponent <MmRelayNode>(); if (relayNode != null) { return(relayNode); } else { MmLogger.LogError("Could not get MmRelayNode"); return(null); } }
/// <summary> /// Overrides MmRelayNode's Selected check to handle the FSM's current state. /// </summary> /// <param name="selectedFilter"><see cref="SelectedCheck"/></param> /// <param name="responder">Observed MmResponder.</param> /// <returns></returns> protected override bool SelectedCheck(MmSelectedFilter selectedFilter, IMmResponder responder) { return(selectedFilter == MmSelectedFilter.All || (RespondersFSM.Current != null && responder.MmGameObject == RespondersFSM.Current.Responder.MmGameObject)); }
/// <summary> /// Determine if MmResponder passes MmRelayNode active filter check using value embedded in MmMessage. /// </summary> /// <param name="activeFilter">Active filter value extracted from MmMessage.</param> /// <param name="responder">Observed MmResponder</param> /// <returns>Returns whether observed MmResponder has passed active filter check.</returns> protected virtual bool ActiveCheck(MmActiveFilter activeFilter, IMmResponder responder) { return((activeFilter == MmActiveFilter.All) || (activeFilter == MmActiveFilter.Active && responder.MmGameObject.activeInHierarchy)); }
/// <summary> /// Determine if MmResponder passes MmRelayNode selected filter check using value embedded in MmMessage. /// </summary> /// <param name="selectedFilter">Selected filter value extracted from MmMessage.</param> /// <param name="responder">Observed MmResponder</param> /// <returns>Returns whether observed MmResponder has passed selected filter check. /// In base MmRelayNode, this always returns true.</returns> protected virtual bool SelectedCheck(MmSelectedFilter selectedFilter, IMmResponder responder) { return(true); }
/// <summary> /// Determine if MmResponder passes MmRelayNode level filter check using value embedded in MmMessage. /// </summary> /// <param name="levelFilter">Level filter value extracted from MmMessage.</param> /// <param name="responder">Observed MmResponder.</param> /// <param name="responderLevel">Observed MmResponder Level.</param> /// <returns>Returns whether observed MmResponder has passed level filter check.</returns> protected virtual bool LevelCheck(MmLevelFilter levelFilter, IMmResponder responder, MmLevelFilter responderLevel) { return((levelFilter & responderLevel) > 0); }