fixed: wrong peerId in restored events
This commit is contained in:
@@ -4,6 +4,7 @@ namespace Ragon.Core;
|
|||||||
|
|
||||||
public class EntityEvent
|
public class EntityEvent
|
||||||
{
|
{
|
||||||
|
public ushort PeerId { get; set; }
|
||||||
public ushort EventId { get; set; }
|
public ushort EventId { get; set; }
|
||||||
public byte[] EventData { get; set; }
|
public byte[] EventData { get; set; }
|
||||||
public RagonTarget Target { set; get; }
|
public RagonTarget Target { set; get; }
|
||||||
|
|||||||
@@ -61,27 +61,16 @@ namespace Ragon.Core
|
|||||||
_players.Add(player.PeerId, player);
|
_players.Add(player.PeerId, player);
|
||||||
_allPlayers = _players.Select(p => p.Key).ToArray();
|
_allPlayers = _players.Select(p => p.Key).ToArray();
|
||||||
|
|
||||||
{
|
_serializer.Clear();
|
||||||
_serializer.Clear();
|
_serializer.WriteOperation(RagonOperation.JOIN_SUCCESS);
|
||||||
_serializer.WriteOperation(RagonOperation.JOIN_SUCCESS);
|
_serializer.WriteString(Id);
|
||||||
_serializer.WriteString(Id);
|
_serializer.WriteString(player.Id);
|
||||||
_serializer.WriteString(player.Id);
|
_serializer.WriteString(GetOwner().Id);
|
||||||
_serializer.WriteString(GetOwner().Id);
|
_serializer.WriteUShort((ushort) PlayersMin);
|
||||||
_serializer.WriteUShort((ushort) PlayersMin);
|
_serializer.WriteUShort((ushort) PlayersMax);
|
||||||
_serializer.WriteUShort((ushort) PlayersMax);
|
_serializer.WriteString(Map);
|
||||||
|
var sendData = _serializer.ToArray();
|
||||||
var sendData = _serializer.ToArray();
|
Send(player.PeerId, sendData, DeliveryType.Reliable);
|
||||||
Send(player.PeerId, sendData, DeliveryType.Reliable);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
_serializer.Clear();
|
|
||||||
_serializer.WriteOperation(RagonOperation.LOAD_SCENE);
|
|
||||||
_serializer.WriteString(Map);
|
|
||||||
|
|
||||||
var sendData = _serializer.ToArray();
|
|
||||||
Send(player.PeerId, sendData, DeliveryType.Reliable);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemovePlayer(uint peerId)
|
public void RemovePlayer(uint peerId)
|
||||||
@@ -246,15 +235,16 @@ namespace Ragon.Core
|
|||||||
_serializer.Clear();
|
_serializer.Clear();
|
||||||
_serializer.WriteOperation(RagonOperation.REPLICATE_ENTITY_EVENT);
|
_serializer.WriteOperation(RagonOperation.REPLICATE_ENTITY_EVENT);
|
||||||
_serializer.WriteUShort(bufferedEvent.EventId);
|
_serializer.WriteUShort(bufferedEvent.EventId);
|
||||||
_serializer.WriteUShort(peerId);
|
_serializer.WriteUShort(bufferedEvent.PeerId);
|
||||||
_serializer.WriteByte((byte) RagonReplicationMode.Server);
|
_serializer.WriteByte((byte) RagonReplicationMode.Server);
|
||||||
_serializer.WriteUShort(value.EntityId);
|
_serializer.WriteUShort(value.EntityId);
|
||||||
|
|
||||||
ReadOnlySpan<byte> data = bufferedEvent.EventData.AsSpan();
|
ReadOnlySpan<byte> data = bufferedEvent.EventData.AsSpan();
|
||||||
_serializer.WriteData(ref data);
|
_serializer.WriteData(ref data);
|
||||||
|
|
||||||
|
_logger.Trace($"[{peerId}] Restored buffered event {bufferedEvent.EventId}");
|
||||||
var sendData = _serializer.ToArray();
|
var sendData = _serializer.ToArray();
|
||||||
SendEvent(value, bufferedEvent.Target, sendData);
|
Send(peerId, sendData, DeliveryType.Reliable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -347,6 +337,7 @@ namespace Ragon.Core
|
|||||||
EventData = payload.ToArray(),
|
EventData = payload.ToArray(),
|
||||||
Target = targetMode,
|
Target = targetMode,
|
||||||
EventId = eventId,
|
EventId = eventId,
|
||||||
|
PeerId = peerId,
|
||||||
};
|
};
|
||||||
ent.BufferedEvents.Add(bufferedEvent);
|
ent.BufferedEvents.Add(bufferedEvent);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user