Ejemplo n.º 1
0
        public void Serialize(MessagesToSend messages, SerializedMessagesToSend serializedMessages, CommandMetaData commandMetaData)
        {
            var storage = messages.GetWorldCommandStorage();

            SerializeCreateEntityRequests(storage, serializedMessages, commandMetaData);
            SerializeDeleteEntityRequests(storage, serializedMessages, commandMetaData);
            SerializeReserveEntityIdsRequests(storage, serializedMessages, commandMetaData);
            SerializeEntityQueryRequests(storage, serializedMessages, commandMetaData);
        }
        private void SerializeMessages()
        {
            // Block until a new message is available to serialize.
            while (messagesToSerialize.TryTake(out var messagesToSend, -1))
            {
                // If adding is complete then there is no reason to deserialize the message.
                if (messagesToSerialize.IsAddingCompleted)
                {
                    return;
                }

                SerializedMessagesToSend serialized = serializedMessagesToSendPool.Rent();
                CommandMetaData          metaData   = commandMetaDataManager.GetEmptyMetaDataStorage();

                // Serialize the messages and add them to the queue to be sent
                serialized.SerializeFrom(messagesToSend, metaData);
                messagesToSend.Clear();
                messagesToSendPool.Return(messagesToSend);
                serializedMessages.Enqueue(serialized);
            }
        }
Ejemplo n.º 3
0
        private void SerializeCreateEntityRequests(WorldCommandsToSendStorage storage, SerializedMessagesToSend serializedMessages, CommandMetaData commandMetaData)
        {
            var requests = storage.GetCreateEntityResponses();

            for (var i = 0; i < requests.Count; ++i)
            {
                ref readonly var request = ref requests[i];
 public void ReturnSerializedMessageContainer(SerializedMessagesToSend serializedMessagesToSend)
 {
     serializedMessagesToSendPool.Return(serializedMessagesToSend);
 }
 public bool TryDequeueSerializedMessages(out SerializedMessagesToSend serializedMessagesToSend)
 {
     return(serializedMessages.TryDequeue(out serializedMessagesToSend));
 }