QSBNetworkBehaviour: SendInitialState

This commit is contained in:
JohnCorby 2022-02-03 16:43:50 -08:00
parent 7d0ae8fcec
commit c571d3eba7
2 changed files with 38 additions and 0 deletions

View File

@ -57,6 +57,33 @@ namespace QSB.Utility
}
}
public void SendInitialState(uint to)
{
if (!isClient)
{
return;
}
if (!hasAuthority)
{
return;
}
if (!NetworkClient.ready)
{
return;
}
_lastSendTime = NetworkTime.localTime;
using var writer = NetworkWriterPool.GetWriter();
Serialize(writer);
UpdatePrevData();
var data = writer.ToArraySegment();
CmdSendInitialData(to, data);
}
[Command(channel = Channels.Reliable, requiresAuthority = true)]
private void CmdSendDataReliable(ArraySegment<byte> data) => RpcSendDataReliable(data);
@ -69,6 +96,12 @@ namespace QSB.Utility
[ClientRpc(channel = Channels.Unreliable, includeOwner = false)]
private void RpcSendDataUnreliable(ArraySegment<byte> data) => OnData(data);
[Command(channel = Channels.Reliable, requiresAuthority = true)]
private void CmdSendInitialData(uint to, ArraySegment<byte> data) => TargetSendInitialData(to.GetNetworkConnection(), data);
[TargetRpc(channel = Channels.Reliable)]
private void TargetSendInitialData(NetworkConnection target, ArraySegment<byte> data) => OnData(data);
private void OnData(ArraySegment<byte> data)
{
using var reader = NetworkReaderPool.GetReader(data);

View File

@ -31,6 +31,11 @@ namespace QSB.WorldSync
{
worldObject.SendInitialState(to);
}
foreach (var qsbNetworkBehaviour in QSBWorldSync.GetUnityObjects<QSBNetworkBehaviour>())
{
qsbNetworkBehaviour.SendInitialState(to);
}
}
}
}