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
@@ -133,7 +133,7 @@ namespace Barotrauma.Items.Components
if (connection == connections[1]) connections[1] = null;
}
public bool Connect(Connection newConnection, bool addNode = true, bool loading = false)
public bool Connect(Connection newConnection, bool addNode = true, bool sendNetworkEvent = false)
{
for (int i = 0; i < 2; i++)
{
@@ -196,7 +196,7 @@ namespace Barotrauma.Items.Components
CleanNodes();
}
if (!loading)
if (sendNetworkEvent)
{
if (GameMain.Server != null)
{
@@ -726,7 +726,7 @@ namespace Barotrauma.Items.Components
}
}
public void ServerRead(ClientNetObject type, NetIncomingMessage msg, Client c)
public void ServerRead(ClientNetObject type, NetBuffer msg, Client c)
{
nodes.Clear();
@@ -752,7 +752,7 @@ namespace Barotrauma.Items.Components
ClientWrite(msg, extraData);
}
public void ClientRead(ServerNetObject type, NetIncomingMessage msg, float sendingTime)
public void ClientRead(ServerNetObject type, NetBuffer msg, float sendingTime)
{
nodes.Clear();