Submarine position syncing

This commit is contained in:
Regalis
2016-10-25 20:50:47 +03:00
parent 62dd055e8d
commit df9f89e383
5 changed files with 25 additions and 11 deletions

View File

@@ -121,7 +121,7 @@ namespace Barotrauma.Networking
config.SimulatedLoss = 0.05f;
config.SimulatedDuplicatesChance = 0.05f;
config.SimulatedMinimumLatency = 0.1f;
config.SimulatedRandomLatency = 0.2f;
config.SimulatedRandomLatency = 0.05f;
#endif
config.DisableMessageType(NetIncomingMessageType.DebugMessage | NetIncomingMessageType.WarningMessage | NetIncomingMessageType.Receipt
@@ -706,19 +706,19 @@ namespace Barotrauma.Networking
case ServerNetObject.SYNC_IDS:
lastSentChatMsgID = inc.ReadUInt32();
break;
case ServerNetObject.CHARACTER_POSITION:
case ServerNetObject.ENTITY_POSITION:
UInt16 id = inc.ReadUInt16();
byte msgLength = inc.ReadByte();
var character = Entity.FindEntityByID(id) as Character;
if (character == null)
var entity = Entity.FindEntityByID(id) as IServerSerializable;
if (entity == null)
{
//skip through the rest of the message
inc.Position += msgLength * 8;
}
else
{
character.ClientRead(inc, sendingTime);
entity.ClientRead(inc, sendingTime);
}
inc.ReadPadBits();

View File

@@ -69,7 +69,7 @@ namespace Barotrauma.Networking
#if DEBUG
config.SimulatedLoss = 0.05f;
config.SimulatedRandomLatency = 0.2f;
config.SimulatedRandomLatency = 0.05f;
config.SimulatedDuplicatesChance = 0.05f;
config.SimulatedMinimumLatency = 0.1f;
#endif
@@ -664,11 +664,22 @@ namespace Barotrauma.Networking
{
if (character is AICharacter) continue;
outmsg.Write((byte)ServerNetObject.CHARACTER_POSITION);
outmsg.Write((byte)ServerNetObject.ENTITY_POSITION);
character.ServerWrite(outmsg, c);
outmsg.WritePadBits();
}
foreach (Submarine sub in Submarine.Loaded)
{
//if docked to a sub with a smaller ID, don't send an update
// (= update is only sent for the docked sub that has the smallest ID, doesn't matter if it's the main sub or a shuttle)
if (sub.DockedTo.Any(s => s.ID < sub.ID)) continue;
outmsg.Write((byte)ServerNetObject.ENTITY_POSITION);
sub.ServerWrite(outmsg, c);
outmsg.WritePadBits();
}
outmsg.Write((byte)ServerNetObject.END_OF_MESSAGE);
server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.Unreliable);
}

View File

@@ -44,7 +44,7 @@ namespace Barotrauma.Networking
SYNC_IDS,
CHAT_MESSAGE,
VOTE,
CHARACTER_POSITION,
ENTITY_POSITION,
ITEM_STATE,
ENTITY_SPAWN,