@@ -15,46 +15,36 @@ public class NetworkListChangedTestComponent : NetworkBehaviour
1515
1616 public class ListChangedObject : NetworkBehaviour
1717 {
18- public static List < ListChangedObject > ClientTargetedNetworkObjects = new List < ListChangedObject > ( ) ;
19- public static ulong ClientIdToTarget ;
20-
21- public static NetworkObject GetNetworkObjectById ( ulong networkObjectId )
22- {
23- foreach ( var entry in ClientTargetedNetworkObjects )
24- {
25- if ( entry . NetworkObjectId == networkObjectId )
26- {
27- return entry . NetworkObject ;
28- }
29- }
30- return null ;
31- }
18+ public int ExpectedPreviousValue = 0 ;
19+ public int ExpectedValue = 0 ;
20+ public bool AddDone = false ;
3221
3322 public NetworkList < int > MyNetworkList = new NetworkList < int > ( ) ;
3423
3524 public override void OnNetworkSpawn ( )
3625 {
3726 MyNetworkList . OnListChanged += Changed ;
38-
39- if ( NetworkManager . LocalClientId == ClientIdToTarget )
40- {
41- ClientTargetedNetworkObjects . Add ( this ) ;
42- }
4327 base . OnNetworkSpawn ( ) ;
4428 }
4529
46- public override void OnNetworkDespawn ( )
30+ public void Changed ( NetworkListEvent < int > listEvent )
4731 {
48- if ( ClientTargetedNetworkObjects . Contains ( this ) )
32+ if ( listEvent . Type == NetworkListEvent < int > . EventType . Value )
4933 {
50- ClientTargetedNetworkObjects . Remove ( this ) ;
51- }
52- base . OnNetworkDespawn ( ) ;
53- }
34+ if ( listEvent . PreviousValue != ExpectedPreviousValue )
35+ {
36+ Debug . Log ( $ "Expected previous value mismatch { listEvent . PreviousValue } versus { ExpectedPreviousValue } ") ;
37+ Debug . Assert ( listEvent . PreviousValue == ExpectedPreviousValue ) ;
38+ }
5439
55- public void Changed ( NetworkListEvent < int > listEvent )
56- {
57- Debug . Log ( $ "listEvent.Type is { listEvent . Type } ") ;
40+ if ( listEvent . Value != ExpectedValue )
41+ {
42+ Debug . Log ( $ "Expected value mismatch { listEvent . Value } versus { ExpectedValue } ") ;
43+ Debug . Assert ( listEvent . Value == ExpectedValue ) ;
44+ }
45+
46+ AddDone = true ;
47+ }
5848 }
5949 }
6050
@@ -66,62 +56,30 @@ public class NetworkListChangedTests : NetcodeIntegrationTest
6656 private GameObject m_PrefabToSpawn ;
6757
6858 private NetworkObject m_NetSpawnedObject1 ;
69- private NetworkObject m_NetSpawnedObject2 ;
70- private NetworkObject m_NetSpawnedObject3 ;
71- private NetworkObject m_Object1OnClient0 ;
72- private NetworkObject m_Object2OnClient0 ;
73- private NetworkObject m_Object3OnClient0 ;
74-
75- protected override void OnCreatePlayerPrefab ( )
76- {
77- var networkTransform = m_PlayerPrefab . AddComponent < NetworkListChangedTestComponent > ( ) ;
78- }
7959
8060 protected override void OnServerAndClientsCreated ( )
8161 {
8262 m_PrefabToSpawn = CreateNetworkObjectPrefab ( "ListChangedObject" ) ;
8363 m_PrefabToSpawn . AddComponent < ListChangedObject > ( ) ;
8464 }
8565
86- private bool RefreshNetworkObjects ( )
87- {
88- m_Object1OnClient0 = ListChangedObject . GetNetworkObjectById ( m_NetSpawnedObject1 . NetworkObjectId ) ;
89- m_Object2OnClient0 = ListChangedObject . GetNetworkObjectById ( m_NetSpawnedObject2 . NetworkObjectId ) ;
90- m_Object3OnClient0 = ListChangedObject . GetNetworkObjectById ( m_NetSpawnedObject3 . NetworkObjectId ) ;
91- if ( m_Object1OnClient0 == null || m_Object2OnClient0 == null || m_Object3OnClient0 == null )
92- {
93- return false ;
94- }
95- Assert . True ( m_Object1OnClient0 . NetworkManagerOwner == m_ClientNetworkManagers [ 0 ] ) ;
96- Assert . True ( m_Object2OnClient0 . NetworkManagerOwner == m_ClientNetworkManagers [ 0 ] ) ;
97- Assert . True ( m_Object3OnClient0 . NetworkManagerOwner == m_ClientNetworkManagers [ 0 ] ) ;
98- return true ;
99- }
100-
101-
10266 [ UnityTest ]
10367 public IEnumerator NetworkListChangedTest ( )
10468 {
10569 m_ClientId0 = m_ClientNetworkManagers [ 0 ] . LocalClientId ;
106- ListChangedObject . ClientTargetedNetworkObjects . Clear ( ) ;
107- ListChangedObject . ClientIdToTarget = m_ClientId0 ;
10870
10971 // create 3 objects
11072 var spawnedObject1 = SpawnObject ( m_PrefabToSpawn , m_ServerNetworkManager ) ;
111- var spawnedObject2 = SpawnObject ( m_PrefabToSpawn , m_ServerNetworkManager ) ;
112- var spawnedObject3 = SpawnObject ( m_PrefabToSpawn , m_ServerNetworkManager ) ;
11373 m_NetSpawnedObject1 = spawnedObject1 . GetComponent < NetworkObject > ( ) ;
114- m_NetSpawnedObject2 = spawnedObject2 . GetComponent < NetworkObject > ( ) ;
115- m_NetSpawnedObject3 = spawnedObject3 . GetComponent < NetworkObject > ( ) ;
116-
117- // get the NetworkObject on a client instance
118- yield return WaitForConditionOrTimeOut ( RefreshNetworkObjects ) ;
119- AssertOnTimeout ( $ "Could not refresh all NetworkObjects!") ;
12074
12175 m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . MyNetworkList . Add ( 42 ) ;
76+ m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . ExpectedPreviousValue = 42 ;
77+ m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . ExpectedValue = 44 ;
12278 m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . MyNetworkList [ 0 ] = 44 ;
12379
124- // todo
80+ Debug . Assert ( m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . AddDone ) ;
81+
82+ return null ;
12583 }
12684 }
12785}
0 commit comments