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); } }
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)); }