Implement INetworkObject::OnNetworkSync and make INetworkObject just virtual

This commit is contained in:
Wiktor Kocielski
2023-05-26 08:19:32 +03:00
parent 90d633fb2d
commit a21abaac84
2 changed files with 20 additions and 7 deletions

View File

@@ -111,6 +111,7 @@ struct NetworkReplicatedObject
uint8 Spawned : 1;
DataContainer<uint32> TargetClientIds;
INetworkObject* AsNetworkObject;
bool NetworkObjectSync = false;
NetworkReplicatedObject()
{
@@ -637,7 +638,14 @@ void InvokeObjectReplication(NetworkReplicatedObject& item, uint32 ownerFrame, b
}
if (item.AsNetworkObject)
{
item.AsNetworkObject->OnNetworkDeserialize();
if (!item.NetworkObjectSync)
{
item.AsNetworkObject->OnNetworkSync();
item.NetworkObjectSync = true;
}
}
// Speed up replication of client-owned objects to other clients from server to reduce lag (data has to go from client to server and then to other clients)
if (NetworkManager::IsServer())