示例#1
0
        /// <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();
        }
示例#2
0
        /// <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();
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
        /// <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));
            }
        }
示例#5
0
 /// <summary>
 /// Callback called after associated MmRelaySwitchNode awoken.
 /// </summary>
 public virtual void OnMmSwitchNodeAwakeCompleteCallback()
 {
     MmLogger.LogResponder("OnMmSwitchNodeAwakeComplete invoked");
 }