@@ -31,12 +31,6 @@ private class DummyNetworkBehaviour : NetworkBehaviour
31
31
private bool m_InitialOwnerOwnedBySever ;
32
32
private bool m_TargetOwnerOwnedBySever ;
33
33
34
- // TODO: [CmbServiceTests] Adapt to run with the service
35
- protected override bool UseCMBService ( )
36
- {
37
- return false ;
38
- }
39
-
40
34
public NetworkObjectOwnershipPropertiesTests ( NetworkTopologyTypes networkTopologyType ) : base ( networkTopologyType ) { }
41
35
42
36
protected override IEnumerator OnTearDown ( )
@@ -57,51 +51,29 @@ protected override void OnServerAndClientsCreated()
57
51
58
52
public enum InstanceTypes
59
53
{
60
- Server ,
61
- Client
54
+ Authority ,
55
+ NonAuthority ,
62
56
}
63
57
64
- private StringBuilder m_OwnershipPropagatedFailures = new StringBuilder ( ) ;
65
- private bool OwnershipPropagated ( )
58
+ private bool OwnershipPropagated ( StringBuilder errorLog )
66
59
{
67
60
var conditionMet = true ;
68
- m_OwnershipPropagatedFailures . Clear ( ) ;
69
- // In distributed authority mode, we will check client owner to DAHost owner with InstanceTypes.Server and client owner to client
70
- // when InstanceTypes.Client
71
- if ( m_DistributedAuthority )
61
+
62
+ foreach ( var manager in m_NetworkManagers )
72
63
{
73
- if ( ! m_ClientNetworkManagers [ 1 ] . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
74
- {
75
- conditionMet = false ;
76
- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_ClientNetworkManagers [ 1 ] . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
77
- }
78
- if ( ! m_ClientNetworkManagers [ 0 ] . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
79
- {
80
- conditionMet = false ;
81
- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_ClientNetworkManagers [ 0 ] . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
82
- }
83
- if ( ! m_ServerNetworkManager . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
64
+ if ( ! manager . SpawnManager . SpawnedObjects . TryGetValue ( m_OwnerSpawnedInstance . NetworkObjectId , out var networkObject ) )
84
65
{
85
66
conditionMet = false ;
86
- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_ServerNetworkManager . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
87
- }
88
- }
89
- else
90
- {
91
- if ( m_NextTargetOwner != m_ServerNetworkManager )
92
- {
93
- if ( ! m_NextTargetOwner . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
94
- {
95
- conditionMet = false ;
96
- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_NextTargetOwner . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
97
- }
67
+ errorLog . AppendLine ( $ "Client-{ manager . LocalClientId } has not spawned { m_OwnerSpawnedInstance . name } ") ;
68
+
98
69
}
99
- if ( ! m_ServerNetworkManager . SpawnManager . GetClientOwnedObjects ( m_NextTargetOwner . LocalClientId ) . Any ( x => x . NetworkObjectId == m_OwnerSpawnedInstance . NetworkObjectId ) )
70
+ else if ( networkObject . OwnerClientId != m_NextTargetOwner . LocalClientId )
100
71
{
101
72
conditionMet = false ;
102
- m_OwnershipPropagatedFailures . AppendLine ( $ "Client-{ m_ServerNetworkManager . LocalClientId } has no ownership entry for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
73
+ errorLog . AppendLine ( $ "Client-{ manager . LocalClientId } has incorrect ownership set for { m_OwnerSpawnedInstance . name } ({ m_OwnerSpawnedInstance . NetworkObjectId } )") ;
103
74
}
104
75
}
76
+
105
77
return conditionMet ;
106
78
}
107
79
@@ -128,19 +100,23 @@ private void ValidateOwnerShipProperties(bool targetIsOwner = false)
128
100
129
101
130
102
[ UnityTest ]
131
- public IEnumerator ValidatePropertiesWithOwnershipChanges ( [ Values ( InstanceTypes . Server , InstanceTypes . Client ) ] InstanceTypes instanceType )
103
+ public IEnumerator ValidatePropertiesWithOwnershipChanges ( [ Values ( InstanceTypes . Authority , InstanceTypes . NonAuthority ) ] InstanceTypes instanceType )
132
104
{
133
- m_NextTargetOwner = instanceType == InstanceTypes . Server ? m_ServerNetworkManager : m_ClientNetworkManagers [ 0 ] ;
134
- m_InitialOwner = instanceType == InstanceTypes . Client ? m_ServerNetworkManager : m_ClientNetworkManagers [ 0 ] ;
105
+ var authority = GetAuthorityNetworkManager ( ) ;
106
+ var firstClient = GetNonAuthorityNetworkManager ( 0 ) ;
107
+ var secondClient = GetNonAuthorityNetworkManager ( 1 ) ;
135
108
136
- // In distributed authority mode, we will check client owner to DAHost owner with InstanceTypes.Server and client owner to client
137
- // when InstanceTypes.Client
109
+ m_NextTargetOwner = instanceType == InstanceTypes . Authority ? authority : firstClient ;
110
+ m_InitialOwner = instanceType == InstanceTypes . NonAuthority ? authority : firstClient ;
111
+
112
+ // In distributed authority mode, we will check client owner to DAHost owner with InstanceTypes.Authority and client owner to client
113
+ // when InstanceTypes.NonAuthority
138
114
if ( m_DistributedAuthority )
139
115
{
140
- m_InitialOwner = m_ClientNetworkManagers [ 0 ] ;
141
- if ( instanceType == InstanceTypes . Client )
116
+ m_InitialOwner = firstClient ;
117
+ if ( instanceType == InstanceTypes . NonAuthority )
142
118
{
143
- m_NextTargetOwner = m_ClientNetworkManagers [ 1 ] ;
119
+ m_NextTargetOwner = secondClient ;
144
120
}
145
121
m_PrefabToSpawn . GetComponent < NetworkObject > ( ) . SetOwnershipStatus ( NetworkObject . OwnershipStatus . Transferable ) ;
146
122
}
@@ -174,16 +150,17 @@ public IEnumerator ValidatePropertiesWithOwnershipChanges([Values(InstanceTypes.
174
150
{
175
151
// Use the target client's instance to change ownership
176
152
m_TargetOwnerInstance . ChangeOwnership ( m_NextTargetOwner . LocalClientId ) ;
177
- if ( instanceType == InstanceTypes . Client )
153
+ if ( instanceType == InstanceTypes . NonAuthority )
178
154
{
179
- var networkManagersList = new System . Collections . Generic . List < NetworkManager > ( ) { m_ServerNetworkManager , m_ClientNetworkManagers [ 0 ] } ;
155
+ var networkManagersList = new System . Collections . Generic . List < NetworkManager > { authority , firstClient } ;
180
156
// Provide enough time for the client to receive and process the spawned message.
181
157
yield return WaitForMessageReceived < ChangeOwnershipMessage > ( networkManagersList ) ;
182
158
}
183
159
else
184
160
{
161
+ var networkManagersList = new System . Collections . Generic . List < NetworkManager > { firstClient , secondClient } ;
185
162
// Provide enough time for the client to receive and process the change in ownership message.
186
- yield return WaitForMessageReceived < ChangeOwnershipMessage > ( m_ClientNetworkManagers . ToList ( ) ) ;
163
+ yield return WaitForMessageReceived < ChangeOwnershipMessage > ( networkManagersList ) ;
187
164
}
188
165
}
189
166
else
@@ -195,7 +172,7 @@ public IEnumerator ValidatePropertiesWithOwnershipChanges([Values(InstanceTypes.
195
172
196
173
// Ensure it's the ownership tables are updated
197
174
yield return WaitForConditionOrTimeOut ( OwnershipPropagated ) ;
198
- AssertOnTimeout ( $ "Timed out waiting for ownership to propagate!\n { m_OwnershipPropagatedFailures } ") ;
175
+ AssertOnTimeout ( $ "Timed out waiting for ownership to propagate!") ;
199
176
200
177
m_SpawnedInstanceIsOwner = m_OwnerSpawnedInstance . NetworkManager == m_NextTargetOwner ;
201
178
if ( m_SpawnedInstanceIsOwner )
0 commit comments