1010using LabExtended . Utilities ;
1111using LabExtended . Extensions ;
1212
13+ using LabExtended . Patches . Functions . Players ;
14+
15+ using Mirror ;
16+
1317using PlayerRoles ;
18+ using PlayerRoles . FirstPersonControl . NetworkMessages ;
1419
1520namespace LabExtended . Patches . Events . Player ;
1621
@@ -68,14 +73,8 @@ changingArgs.NewRole is RoleTypeId.Spectator &&
6873 __instance . InitializeNewRole ( newRole , reason , spawnFlags ) ;
6974
7075 beforeSendAction ? . InvokeSafe ( __instance . CurrentRole ) ;
71-
72- if ( RoleSync . IsEnabled )
73- RoleSync . Internal_Resync ( player ) ;
74- else
75- __instance . SendNewRoleInfo ( ) ;
76-
77- if ( PositionSync . IsEnabled )
78- PositionSync . Internal_Reset ( player ) ;
76+
77+ SendNewRoleInfo ( player ) ;
7978
8079 PlayerEvents . OnChangedRole ( new PlayerChangedRoleEventArgs ( player . ReferenceHub ,
8180 curRole ? . RoleTypeId ?? RoleTypeId . None ,
@@ -90,4 +89,29 @@ changingArgs.NewRole is RoleTypeId.Spectator &&
9089 return true ;
9190 }
9291 }
92+
93+ private static void SendNewRoleInfo ( ExPlayer player )
94+ {
95+ for ( var x = 0 ; x < ExPlayer . AllCount ; x ++ )
96+ {
97+ var receiver = ExPlayer . AllPlayers [ x ] ;
98+
99+ if ( receiver ? . ReferenceHub == null ) continue ;
100+ if ( receiver . ReferenceHub . isLocalPlayer ) continue ;
101+
102+ var visibleRole = FpcServerPositionDistributor . GetVisibleRole ( receiver . ReferenceHub , player . ReferenceHub ) ;
103+
104+ using var writer = NetworkWriterPool . Get ( ) ;
105+
106+ var baseRoleEvent = FpcServerPositionDistributor . InvokeRoleSyncEvent ( player . ReferenceHub , receiver . ReferenceHub , visibleRole , writer ) ;
107+ var roleEvent = PlayerPositionSyncPatch . InvokeEvent ( player , receiver , visibleRole , writer ) ;
108+
109+ if ( baseRoleEvent != null ) visibleRole = baseRoleEvent . Value ;
110+ if ( roleEvent != null ) visibleRole = roleEvent . Value ;
111+
112+ receiver . ReferenceHub . connectionToClient . Send ( new RoleSyncInfo ( player . ReferenceHub , visibleRole , receiver . ReferenceHub , writer ) , 0 ) ;
113+
114+ player . ReferenceHub . roleManager . PreviouslySentRole [ receiver . ReferenceHub . netId ] = visibleRole ;
115+ }
116+ }
93117}
0 commit comments