Skip to content

Commit fe577ca

Browse files
test
This is Emma's test added to the NetworkShowHideTests.
1 parent 6172c88 commit fe577ca

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

com.unity.netcode.gameobjects/Tests/Runtime/NetworkShowHideTests.cs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,5 +753,88 @@ public IEnumerator NetworkShowHideAroundListModify()
753753
Compare(ShowHideObject.ObjectsPerClientId[0].MyList, ShowHideObject.ObjectsPerClientId[2].MyList);
754754
}
755755
}
756+
757+
private GameObject m_OwnershipObject;
758+
private NetworkObject m_OwnershipNetworkObject;
759+
private NetworkManager m_NewOwner;
760+
private ulong m_ObjectId;
761+
762+
763+
private bool AllObjectsSpawnedOnClients()
764+
{
765+
foreach (var networkManager in m_NetworkManagers)
766+
{
767+
if (!networkManager.SpawnManager.SpawnedObjects.ContainsKey(m_OwnershipNetworkObject.NetworkObjectId))
768+
{
769+
return false;
770+
}
771+
}
772+
return true;
773+
}
774+
775+
private bool ObjectHiddenOnNonAuthorityClients()
776+
{
777+
foreach (var networkManager in m_NetworkManagers)
778+
{
779+
if (networkManager.LocalClientId == m_OwnershipNetworkObject.OwnerClientId)
780+
{
781+
continue;
782+
}
783+
if (networkManager.SpawnManager.SpawnedObjects.ContainsKey(m_OwnershipNetworkObject.NetworkObjectId))
784+
{
785+
return false;
786+
}
787+
}
788+
return true;
789+
}
790+
791+
private bool OwnershipHasChanged()
792+
{
793+
if (!m_NewOwner.SpawnManager.SpawnedObjects.ContainsKey(m_ObjectId))
794+
{
795+
return false;
796+
}
797+
return m_NewOwner.SpawnManager.SpawnedObjects[m_ObjectId].OwnerClientId == m_NewOwner.LocalClientId;
798+
}
799+
800+
801+
[UnityTest]
802+
public IEnumerator NetworkShowWithChangeOwnershipTest()
803+
{
804+
var authority = GetAuthorityNetworkManager();
805+
806+
m_OwnershipObject = SpawnObject(m_PrefabToSpawn, authority);
807+
m_OwnershipNetworkObject = m_OwnershipObject.GetComponent<NetworkObject>();
808+
809+
yield return WaitForConditionOrTimeOut(AllObjectsSpawnedOnClients);
810+
AssertOnTimeout("Timed out waiting for all clients to spawn the ownership object!");
811+
812+
VerboseDebug($"Hiding object {m_OwnershipNetworkObject.NetworkObjectId} on all clients");
813+
foreach (var client in m_NetworkManagers)
814+
{
815+
if (client == authority)
816+
{
817+
continue;
818+
}
819+
m_OwnershipNetworkObject.NetworkHide(client.LocalClientId);
820+
}
821+
822+
yield return WaitForConditionOrTimeOut(ObjectHiddenOnNonAuthorityClients);
823+
AssertOnTimeout("Timed out waiting for all clients to hide the ownership object!");
824+
825+
m_NewOwner = GetNonAuthorityNetworkManager();
826+
Assert.AreNotEqual(m_OwnershipNetworkObject.OwnerClientId, m_NewOwner.LocalClientId, $"Client-{m_NewOwner.LocalClientId} should not have ownership of object {m_OwnershipNetworkObject.NetworkObjectId}!");
827+
Assert.False(m_NewOwner.SpawnManager.SpawnedObjects.ContainsKey(m_OwnershipNetworkObject.NetworkObjectId), $"Client-{m_NewOwner.LocalClientId} should not have object {m_OwnershipNetworkObject.NetworkObjectId} spawned!");
828+
829+
// Run NetworkShow and ChangeOwnership directly after one-another
830+
VerboseDebug($"Calling {nameof(NetworkObject.NetworkShow)} on object {m_OwnershipNetworkObject.NetworkObjectId} for client {m_NewOwner.LocalClientId}");
831+
m_OwnershipNetworkObject.NetworkShow(m_NewOwner.LocalClientId);
832+
VerboseDebug($"Calling {nameof(NetworkObject.ChangeOwnership)} on object {m_OwnershipNetworkObject.NetworkObjectId} for client {m_NewOwner.LocalClientId}");
833+
m_OwnershipNetworkObject.ChangeOwnership(m_NewOwner.LocalClientId);
834+
m_ObjectId = m_OwnershipNetworkObject.NetworkObjectId;
835+
yield return WaitForConditionOrTimeOut(OwnershipHasChanged);
836+
AssertOnTimeout($"Timed out waiting for clients-{m_NewOwner.LocalClientId} to gain ownership of object {m_OwnershipNetworkObject.NetworkObjectId}!");
837+
VerboseDebug($"Client {m_NewOwner.LocalClientId} now owns object {m_OwnershipNetworkObject.NetworkObjectId}!");
838+
}
756839
}
757840
}

0 commit comments

Comments
 (0)