示例#1
0
    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();
    }
示例#2
0
    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);
    }