/// <summary> /// Assign Global enter/exit Delegates for the MmRelaySwitchNode's FSM. /// </summary> public override void Start() { MmLogger.LogResponder("MmSwitchResponder Start"); // Assign default responder for transitioning between MmRelayNodes MmRelaySwitchNode.RespondersFSM.GlobalExit += delegate { MmLogger.LogApplication("MmRelaySwitchNode GlobalExit"); MmRelaySwitchNode.Current.MmInvoke(MmMethod.SetActive, false, new MmMetadataBlock(MmLevelFilterHelper.Default, MmActiveFilter.All, default(MmSelectedFilter), MmNetworkFilter.Local)); }; MmRelaySwitchNode.RespondersFSM.GlobalEnter += delegate { MmLogger.LogApplication("MmRelaySwitchNode GlobalEnter"); MmRelaySwitchNode.Current.MmInvoke(MmMethod.SetActive, true, new MmMetadataBlock(MmLevelFilterHelper.Default, MmActiveFilter.All, default(MmSelectedFilter), MmNetworkFilter.Local)); }; base.Start(); }
/// <summary> /// Auto-grabs the MmRelaySwitchNode. Also assigns/invokes /// Awake callbacks. /// </summary> public override void Awake() { MmLogger.LogResponder("MmSwitchResponder Awake"); MmRelaySwitchNode = GetComponent <MmRelaySwitchNode>(); //This is to avoid the situation where the MmRelaySwitchNode is started // before this script is. if (MmRelaySwitchNode.Initialized) { OnMmSwitchNodeAwakeCompleteCallback(); } else { MmRelaySwitchNode.MmRegisterAwakeCompleteCallback(OnMmSwitchNodeAwakeCompleteCallback); } MmRelaySwitchNode.MmRegisterStartCompleteCallback(OnMmNodeSwitchStartCompleteCallback); if (MmRelaySwitchNode.MmNetworkResponder == null || MmRelaySwitchNode.MmNetworkResponder.IsActiveAndEnabled) { MmRegisterStartCompleteCallback(MmSwitchSetup); } else { MmRelaySwitchNode.MmNetworkResponder.MmRegisterStartCompleteCallback(MmSwitchSetup); } base.Awake(); }
/// <summary> /// Callback called after associated MmRelaySwitchNode started. /// </summary> public virtual void OnMmNodeSwitchStartCompleteCallback() { MmLogger.LogResponder("OnMmNodeSwitchStartComplete invoked"); if (MmRelaySwitchNode.RoutingTable.Count == 0) { MmLogger.LogResponder("No MmRelayNodes in RespondersFSM on: " + gameObject.name); } }
/// <summary> /// This is called when the MmNetworkResponder is started /// Important Note: this will only trigger locally. The reason for this is that /// the following code needs to execute on every instance of the MmRelayNode across the network /// Thus, in order to avoid triggering the message each time a client connects, we just trigger the message locally. /// </summary> public virtual void MmSwitchSetup() { MmLogger.LogResponder(gameObject.name + " MmSwitchSetup Invoked."); MmRelaySwitchNode.MmInvoke(MmMethod.Initialize, new MmMetadataBlock(MmLevelFilter.Child, MmActiveFilter.All, default(MmSelectedFilter), MmNetworkFilter.Local)); MmRelaySwitchNode.MmInvoke(MmMethod.SetActive, false, new MmMetadataBlock(MmLevelFilter.Child, MmActiveFilter.All, default(MmSelectedFilter), MmNetworkFilter.Local)); if (InitialState != "") { MmLogger.LogResponder(gameObject.name + " attempting to jump to: " + InitialState); MmRelaySwitchNode.MmInvoke(MmMethod.Switch, MmRelaySwitchNode.RoutingTable[InitialState].Name, new MmMetadataBlock(MmLevelFilter.Self, MmActiveFilter.All, default(MmSelectedFilter), MmNetworkFilter.Local)); } }
/// <summary> /// Callback called after associated MmRelaySwitchNode awoken. /// </summary> public virtual void OnMmSwitchNodeAwakeCompleteCallback() { MmLogger.LogResponder("OnMmSwitchNodeAwakeComplete invoked"); }