/// <summary> /// Given an MmRelayNode, add it as parent to this /// instance's MmRoutingTable. /// </summary> /// <param name="parent">MmRelayNode to add as a parent.</param> public virtual void AddParent(MmRelayNode parent) { if (!MmParentList.Contains(parent)) { MmParentList.Add(parent); MmAddToRoutingTable(parent, MmLevelFilter.Parent); } }
protected void OnEnable() { var mxmBehavior = (MmResponder)target; _myRelayNode = mxmBehavior.GetComponent <MmRelayNode>(); if (_myRelayNode == null || _myRelayNode == target) { return; } myListItem = _myRelayNode.MmAddToRoutingTable(mxmBehavior, mxmBehavior.name); }
//TODO: Test this again /// <summary> /// FSM control method: Jump to State, using MmRoutingTableItem Responder reference. /// </summary> /// <param name="newState">Name of target state.</param> public virtual void JumpTo(MmRelayNode newState) { RespondersFSM.JumpTo(RoutingTable[newState]); }
/// <summary> /// Process a message and send it to the associated object. /// </summary> /// <param name="photonEvent">Photon RaiseEvent message data</param> public virtual void ReceivedMessage(EventData photonEvent) { short eventCode = (short)photonEvent.Code; if (eventCode != 1) { return; } MmMessageType mmMessageType = (MmMessageType)(eventCode); object[] data = (object[])photonEvent.CustomData; MmMessage msg = new MmMessage(); msg.Deserialize(data); try { switch (msg.MmMessageType) { case MmMessageType.MmVoid: MmRelayNode.MmInvoke(msg); break; case MmMessageType.MmInt: MmMessageInt msgInt = new MmMessageInt(); msgInt.Deserialize(data); MmRelayNode.MmInvoke(msgInt); break; case MmMessageType.MmBool: MmMessageBool msgBool = new MmMessageBool(); msgBool.Deserialize(data); MmRelayNode.MmInvoke(msgBool); break; case MmMessageType.MmFloat: MmMessageFloat msgFloat = new MmMessageFloat(); msgFloat.Deserialize(data); MmRelayNode.MmInvoke(msgFloat); break; case MmMessageType.MmVector3: MmMessageVector3 msgVector3 = new MmMessageVector3(); msgVector3.Deserialize(data); MmRelayNode.MmInvoke(msgVector3); break; case MmMessageType.MmVector4: MmMessageVector4 msgVector4 = new MmMessageVector4(); msgVector4.Deserialize(data); MmRelayNode.MmInvoke(msgVector4); break; case MmMessageType.MmString: MmMessageString msgString = new MmMessageString(); msgString.Deserialize(data); MmRelayNode.MmInvoke(msgString); break; case MmMessageType.MmByteArray: MmMessageByteArray msgByteArray = new MmMessageByteArray(); msgByteArray.Deserialize(data); MmRelayNode.MmInvoke(msgByteArray); break; case MmMessageType.MmTransform: MmMessageTransform msgTransform = new MmMessageTransform(); msgTransform.Deserialize(data); MmRelayNode.MmInvoke(msgTransform); break; case MmMessageType.MmTransformList: MmMessageTransformList msgTransformList = new MmMessageTransformList(); msgTransformList.Deserialize(data); MmRelayNode.MmInvoke(msgTransformList); break; case MmMessageType.MmSerializable: MmMessageSerializable msgSerializable = new MmMessageSerializable(); msgSerializable.Deserialize(data); MmRelayNode.MmInvoke(msgSerializable); break; case MmMessageType.MmGameObject: MmMessageGameObject msgGameObject = new MmMessageGameObject(); msgGameObject.Deserialize(data); MmRelayNode.MmInvoke(msgGameObject); break; default: Debug.Log(eventCode); throw new ArgumentOutOfRangeException(); } } catch (Exception e) { MmLogger.LogError(e.Message); } }