ServerEntityEventManager doesn't process received events until the character inputs of the client for the corresponding frame have been processed (fixes character movement lagging behind EntityEvents at the servers side)

+ split character networking logic into a separate file, characters drop items at the position of their collider instead of hands
This commit is contained in:
Regalis
2017-02-09 18:56:28 +02:00
parent 1f16bef01c
commit 52bf73722f
29 changed files with 959 additions and 827 deletions
+5 -5
View File
@@ -1733,7 +1733,7 @@ namespace Barotrauma
}
}
public void ClientRead(ServerNetObject type, NetIncomingMessage msg, float sendingTime)
public void ClientRead(ServerNetObject type, NetBuffer msg, float sendingTime)
{
if (type == ServerNetObject.ENTITY_POSITION)
{
@@ -1822,7 +1822,7 @@ namespace Barotrauma
}
}
public void ServerRead(ClientNetObject type, NetIncomingMessage msg, Client c)
public void ServerRead(ClientNetObject type, NetBuffer msg, Client c)
{
NetEntityEvent.Type eventType =
(NetEntityEvent.Type)msg.ReadRangedInteger(0, Enum.GetValues(typeof(NetEntityEvent.Type)).Length - 1);
@@ -1898,7 +1898,7 @@ namespace Barotrauma
}
}
private void ReadPropertyChange(NetIncomingMessage msg)
private void ReadPropertyChange(NetBuffer msg)
{
var allProperties = GetProperties<InGameEditable>();
if (allProperties.Count == 0) return;
@@ -1965,7 +1965,7 @@ namespace Barotrauma
if (Name == "ID Card") msg.Write(Tags);
}
public static Item ReadSpawnData(NetIncomingMessage msg, bool spawn = true)
public static Item ReadSpawnData(NetBuffer msg, bool spawn = true)
{
if (GameMain.Server != null) return null;
@@ -2090,7 +2090,7 @@ namespace Barotrauma
lastSentPos = SimPosition;
}
public void ClientReadPosition(ServerNetObject type, NetIncomingMessage msg, float sendingTime)
public void ClientReadPosition(ServerNetObject type, NetBuffer msg, float sendingTime)
{
body.TargetPosition = new Vector2(