@@ -39,8 +39,8 @@ public bool SyncEnabled
3939
4040 private readonly NetworkVariable < bool > _syncEnabled = new ( ) ;
4141 private readonly NetworkList < SyncedEntryDelta > _deltas = new ( ) ;
42- private readonly List < ( ConfigFile , EventHandler < SettingChangedEventArgs > ) > _configFileDelegates = new ( ) ;
43- private readonly List < ( SyncedEntryBase , EventHandler ) > _entrySyncEnabledDelegates = new ( ) ;
42+ private readonly List < ( ConfigFile , EventHandler < SettingChangedEventArgs > ) > _settingChangedListeners = new ( ) ;
43+ private readonly List < ( SyncedEntryBase , EventHandler ) > _entrySyncEnabledChangedListeners = new ( ) ;
4444
4545 [ MemberNotNull ( nameof ( EntryContainer ) ) ]
4646 private void EnsureEntryContainer ( )
@@ -49,6 +49,11 @@ private void EnsureEntryContainer()
4949 throw new InvalidOperationException ( "Entry container has not been assigned." ) ;
5050 }
5151
52+ private void Awake ( )
53+ {
54+ EnsureEntryContainer ( ) ;
55+ }
56+
5257 public override void OnNetworkSpawn ( )
5358 {
5459 EnsureEntryContainer ( ) ;
@@ -57,7 +62,8 @@ public override void OnNetworkSpawn()
5762 {
5863 _syncEnabled . Value = true ;
5964
60- foreach ( var ( syncedEntryBase , index ) in EntryContainer . Values . Select ( ( e , i ) => ( e , i ) ) )
65+ var index = 0 ;
66+ foreach ( var syncedEntryBase in EntryContainer . Values )
6167 {
6268 _deltas . Add ( syncedEntryBase . ToDelta ( ) ) ;
6369
@@ -68,14 +74,15 @@ void configFileDelegate(object sender, SettingChangedEventArgs args)
6874 }
6975 var configFile = syncedEntryBase . BoxedEntry . ConfigFile ;
7076 configFile . SettingChanged += configFileDelegate ;
71- _configFileDelegates . Add ( ( configFile , configFileDelegate ) ) ;
77+ _settingChangedListeners . Add ( ( configFile , configFileDelegate ) ) ;
7278
7379 void entrySyncEnabledDelegate ( object sender , EventArgs args )
7480 {
7581 _deltas [ index ] = syncedEntryBase . ToDelta ( ) ;
7682 }
7783 syncedEntryBase . SyncEnabledChanged += entrySyncEnabledDelegate ;
78- _entrySyncEnabledDelegates . Add ( ( syncedEntryBase , entrySyncEnabledDelegate ) ) ;
84+ _entrySyncEnabledChangedListeners . Add ( ( syncedEntryBase , entrySyncEnabledDelegate ) ) ;
85+ index ++ ;
7986 }
8087
8188 InitialSyncCompletedHandler ? . Invoke ( this , EventArgs . Empty ) ;
@@ -104,18 +111,18 @@ public override void OnNetworkDespawn()
104111
105112 if ( IsServer )
106113 {
107- foreach ( var ( configFile , configFileDelegate ) in _configFileDelegates )
114+ foreach ( var ( configFile , configFileDelegate ) in _settingChangedListeners )
108115 {
109116 configFile . SettingChanged -= configFileDelegate ;
110117 }
111118
112- foreach ( var ( syncedEntryBase , entrySyncEnabledDelegate ) in _entrySyncEnabledDelegates )
119+ foreach ( var ( syncedEntryBase , entrySyncEnabledDelegate ) in _entrySyncEnabledChangedListeners )
113120 {
114121 syncedEntryBase . SyncEnabledChanged -= entrySyncEnabledDelegate ;
115122 }
116123
117- _configFileDelegates . Clear ( ) ;
118- _entrySyncEnabledDelegates . Clear ( ) ;
124+ _settingChangedListeners . Clear ( ) ;
125+ _entrySyncEnabledChangedListeners . Clear ( ) ;
119126 // NetworkList and NetworkVariable can not be modified now because the network manager has already shut down.
120127 // See https://github.com/Unity-Technologies/com.unity.netcode.gameobjects/pull/3502
121128 // Should not be needed anyway, since this component isn't being reused between network sessions.
0 commit comments