private void OnGoMessage(MessageGO message) { if (netGOs.ContainsKey(message.netID)) { netGOs[message.netID].CallOnMessageGo(message.command, message.data); } }
/// <summary> /// Отправка сообщения всем экземплярам этого объекта /// </summary> /// <param name="command">пользовательская команда</param> /// <param name="objData">объект</param> public void SendGoMessage(byte command, BaseMessage data) { MessageGO message = new MessageGO(); message.command = command; message.netID = this.netID; message.data = data.Serialize(); GalaxyApi.send.SendMessageToServer((byte)CommandType.goMessage, message, GalaxyCoreCommon.GalaxyDeliveryType.reliable); }
/// <summary> /// В этот метод приходят все входящии сообщения (мы на них подписались) /// </summary> /// <param name="code"></param> /// <param name="data"></param> private void OnGalaxyIncommingMessage(byte code, byte[] data) { switch ((CommandType)code) { case CommandType.goInstantiate: { MessageInstantiate message = MessageInstantiate.Deserialize <MessageInstantiate>(data); OnMessInstantiate?.Invoke(message); } break; case CommandType.goTransform: { MessageTransform message = MessageTransform.Deserialize <MessageTransform>(data); OnMessTransform?.Invoke(message); } break; case CommandType.goDestroy: { MessageDestroyGO message = MessageDestroyGO.Deserialize <MessageDestroyGO>(data); OnMessDestroy?.Invoke(message); } break; case CommandType.worldSync: { MessageWorldSync message = MessageWorldSync.Deserialize <MessageWorldSync>(data); OnWorldSync?.Invoke(message); } break; case CommandType.goMessage: { MessageGO message = MessageGO.Deserialize <MessageGO>(data); OnGoMessage?.Invoke(message); } break; } }