public void QueueEvent(ushort typeId, bool reliable, NetworkEventGenerator generator) { if (m_Connection == null) { return; } var e = NetworkEvent.Serialize(typeId, reliable, m_EventTypesOut, generator); m_Connection.QueueEvent(e); e.Release(); }
public unsafe static NetworkEvent Serialize(ushort typeId, bool reliable, Dictionary <ushort, NetworkEventType> eventTypes, NetworkEventGenerator generator) { bool generateSchema = false; NetworkEventType type; if (!eventTypes.TryGetValue(typeId, out type)) { generateSchema = true; type = new NetworkEventType() { typeId = typeId, schema = new NetworkSchema(NetworkConfig.firstEventTypeSchemaId + typeId) }; eventTypes.Add(typeId, type); } var result = Create(type, reliable); result.sequence = ++s_Sequence; if (NetworkConfig.netDebug.IntValue > 0) GameDebug.Log("Serializing event " + ((GameNetworkEvents.EventType)result.type.typeId) + " in seq no: " + result.sequence); fixed(uint *data = result.data) { NetworkWriter writer = new NetworkWriter(data, result.data.Length, type.schema, generateSchema); generator(ref writer); writer.Flush(); } return(result); }