ServerEntityEventManager doesn't prevent creating a duplicate event if the previous one has already been sent to someone, handling exceptions in WriteEvent
This commit is contained in:
@@ -30,7 +30,16 @@ namespace Barotrauma.Networking
|
|||||||
{
|
{
|
||||||
//write into a temporary buffer so we can write the length before the actual data
|
//write into a temporary buffer so we can write the length before the actual data
|
||||||
NetBuffer tempBuffer = new NetBuffer();
|
NetBuffer tempBuffer = new NetBuffer();
|
||||||
WriteEvent(tempBuffer, e, recipient);
|
try
|
||||||
|
{
|
||||||
|
WriteEvent(tempBuffer, e, recipient);
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
DebugConsole.ThrowError("Failed to write an event for the entity \""+e.Entity+"\"", exception);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
Debug.Assert(
|
Debug.Assert(
|
||||||
tempBuffer.LengthBytes < 128,
|
tempBuffer.LengthBytes < 128,
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ namespace Barotrauma.Networking
|
|||||||
{
|
{
|
||||||
//we already have an identical event that's waiting to be sent
|
//we already have an identical event that's waiting to be sent
|
||||||
// -> no need to add a new one
|
// -> no need to add a new one
|
||||||
if (events[i].IsDuplicate(newEvent)) return;
|
if (events[i].IsDuplicate(newEvent) && !events[i].Sent) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ID++;
|
ID++;
|
||||||
|
|||||||
Reference in New Issue
Block a user