/// <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); }
/// <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; } } }
/// <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(); } }
/// <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(); } }
/// <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."); }
/// <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())); }
/// <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); }
/// <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(); }
/// <summary> /// Calls MmOnStartComplete through MmResponder Start. /// </summary> public override void Start() { MmLogger.LogFramework(gameObject.name + " MmRelaySwitchNode Start"); base.Start(); }