@@ -15,46 +15,36 @@ public class NetworkListChangedTestComponent : NetworkBehaviour
15
15
16
16
public class ListChangedObject : NetworkBehaviour
17
17
{
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 ;
32
21
33
22
public NetworkList < int > MyNetworkList = new NetworkList < int > ( ) ;
34
23
35
24
public override void OnNetworkSpawn ( )
36
25
{
37
26
MyNetworkList . OnListChanged += Changed ;
38
-
39
- if ( NetworkManager . LocalClientId == ClientIdToTarget )
40
- {
41
- ClientTargetedNetworkObjects . Add ( this ) ;
42
- }
43
27
base . OnNetworkSpawn ( ) ;
44
28
}
45
29
46
- public override void OnNetworkDespawn ( )
30
+ public void Changed ( NetworkListEvent < int > listEvent )
47
31
{
48
- if ( ClientTargetedNetworkObjects . Contains ( this ) )
32
+ if ( listEvent . Type == NetworkListEvent < int > . EventType . Value )
49
33
{
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
+ }
54
39
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
+ }
58
48
}
59
49
}
60
50
@@ -66,62 +56,30 @@ public class NetworkListChangedTests : NetcodeIntegrationTest
66
56
private GameObject m_PrefabToSpawn ;
67
57
68
58
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
- }
79
59
80
60
protected override void OnServerAndClientsCreated ( )
81
61
{
82
62
m_PrefabToSpawn = CreateNetworkObjectPrefab ( "ListChangedObject" ) ;
83
63
m_PrefabToSpawn . AddComponent < ListChangedObject > ( ) ;
84
64
}
85
65
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
-
102
66
[ UnityTest ]
103
67
public IEnumerator NetworkListChangedTest ( )
104
68
{
105
69
m_ClientId0 = m_ClientNetworkManagers [ 0 ] . LocalClientId ;
106
- ListChangedObject . ClientTargetedNetworkObjects . Clear ( ) ;
107
- ListChangedObject . ClientIdToTarget = m_ClientId0 ;
108
70
109
71
// create 3 objects
110
72
var spawnedObject1 = SpawnObject ( m_PrefabToSpawn , m_ServerNetworkManager ) ;
111
- var spawnedObject2 = SpawnObject ( m_PrefabToSpawn , m_ServerNetworkManager ) ;
112
- var spawnedObject3 = SpawnObject ( m_PrefabToSpawn , m_ServerNetworkManager ) ;
113
73
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!") ;
120
74
121
75
m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . MyNetworkList . Add ( 42 ) ;
76
+ m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . ExpectedPreviousValue = 42 ;
77
+ m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . ExpectedValue = 44 ;
122
78
m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . MyNetworkList [ 0 ] = 44 ;
123
79
124
- // todo
80
+ Debug . Assert ( m_NetSpawnedObject1 . GetComponent < ListChangedObject > ( ) . AddDone ) ;
81
+
82
+ return null ;
125
83
}
126
84
}
127
85
}
0 commit comments