Ejemplo n.º 1
0
        /// <summary>
        /// Registers callbacks for OnStart & gets handle to
        /// MmSwitchResponder attached to the same GameObject.
        /// </summary>
        public virtual void Awake()
        {
            MmLogger.LogFramework("MmTestManager Awake");

            _rootSwitchResponder = GetComponent <MmSwitchResponder>();
            _rootSwitchResponder.MmRegisterStartCompleteCallback(TestSetup);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Iterates through RoutingTable list and assigns
        /// this MmRelayNode as a parent to child MmResponders.
        /// </summary>
        public void RefreshParents()
        {
            MmLogger.LogFramework("Refreshing parents on MmRelayNode: " + gameObject.name);

            foreach (var child in RoutingTable.Where(x => x.Level == MmLevelFilter.Child))
            {
                var childNode = child.Responder.GetRelayNode();
                childNode.AddParent(this);
                childNode.RefreshParents();
            }

            //Optimize later
            foreach (var parent in MmParentList)
            {
                //bool foundItem = RoutingTable.Select ((x) => x.Responder).Any (responder => responder == parent);
                MmRoutingTableItem foundItem = RoutingTable.First(x => x.Responder == parent);
                if (foundItem == null)
                {
                    MmAddToRoutingTable(parent, MmLevelFilter.Parent);
                }
                else
                {
                    foundItem.Level = MmLevelFilter.Parent;
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Attempts to register the this responder with the
        /// MmNetworkManager.
        /// Also calls the post-start callback.
        /// </summary>
        public virtual void Start()
        {
            MmLogger.LogFramework(gameObject.name + ": Network Responder Started");

            if (MmStart != null)
            {
                MmStart();
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Awake gets the MmRelayNode, if one is present.
        /// Also calls the post-awake callback.
        /// </summary>
        public virtual void Awake()
        {
            MmLogger.LogFramework(gameObject.name + ": Network Responder Awake");

            MmRelayNode = GetComponent <MmRelayNode>();

            if (MmAwake != null)
            {
                MmAwake();
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Grab attached MmNetworkResponder, if present.
        /// Detect and refresh parents.
        /// Instantiate any cloneable MmResponders.
        /// </summary>
        public override void Awake()
        {
            MmNetworkResponder = GetComponent <IMmNetworkResponder>();

            InitializeNode();

            InstantiateSubResponders();

            base.Awake();

            MmLogger.LogFramework(gameObject.name + " MmRelayNode Awake called.");
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Calls MmOnStartComplete through MmResponder Start.
        /// </summary>
        public override void Start()
        {
            base.Start();

            MmLogger.LogFramework(gameObject.name + " MmRelayNode Start called.");

            //Show all items currently in the RoutingTable list.
            //Debug.Log(gameObject.name + " MmRelayNode start called. With " +
            //    RoutingTable.Count +
            //    " items in the MmResponder List: " +
            //    String.Join("\n", RoutingTable.GetMmNames(MmRoutingTable.ListFilter.All,
            //    MmLevelFilterHelper.SelfAndBidirectional).ToArray()));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Method serializes message and sends it to server.
        /// </summary>
        /// <param name="msgType">Type of message. This specifies
        /// the type of the payload. This is important in
        /// networked scenarios, when proper deseriaization into
        /// the correct type requires knowing what was
        /// used to serialize the object originally.
        /// </param>
        /// <param name="msg">The message to send.
        /// This utilises UNET's MessageBase so it is
        /// Auto [de]serialized by UNET.
        /// This also allows us to send messages that are not
        /// part of Mercury XM</param>
        public virtual void MmSendMessageToServer(short msgType, MessageBase msg)
        {
            if (MmNetworkManager.Instance.NetworkClient == null)
            {
                MmLogger.LogFramework("No client present on host");
                return;
            }

            NetworkWriter writer = new NetworkWriter();

            writer.StartMessage(msgType);
            msg.Serialize(writer);
            writer.FinishMessage();

            MmNetworkManager.Instance.NetworkClient.SendWriter(writer, Channels.DefaultReliable);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Converts the standard MmRoutingTable into a FSM.
        /// Calls MmOnAwakeComplete through MmResponder Awake.
        /// </summary>
        public override void Awake()
        {
            MmLogger.LogFramework(gameObject.name + " MmRelaySwitchNode Awake");

            try
            {
                RespondersFSM =
                    new FiniteStateMachine <MmRoutingTableItem>("RespondersFSM",
                                                                RoutingTable.Where(x => x.Responder is MmRelayNode && x.Level == MmLevelFilter.Child).ToList());
            }
            catch
            {
                MmLogger.LogError(gameObject.name + ": Failed bulding FSM. Missing Node?");
            }

            base.Awake();
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Calls MmOnStartComplete through MmResponder Start.
        /// </summary>
        public override void Start()
        {
            MmLogger.LogFramework(gameObject.name + " MmRelaySwitchNode Start");

            base.Start();
        }