@@ -497,11 +497,9 @@ public static bool IsEnabled
497497 set
498498 {
499499 var instance = Get ( ) ;
500- if ( ! value && instance . isEnabled )
501- {
502- DisconnectAll ( ) ;
503- }
504- instance . isEnabled = value ;
500+ if ( ! instance )
501+ return ;
502+ instance . SetPresenceEnabled ( value ) ;
505503 }
506504 }
507505
@@ -511,7 +509,7 @@ public static bool IsEnabled
511509 public static bool AutoConnectEnabled
512510 {
513511 get => Get ( ) ? . autoConnectEnabled ?? false ;
514- set { var instance = Get ( ) ; if ( instance != null ) instance . autoConnectEnabled = value ; }
512+ set { var instance = Get ( ) ; if ( instance != null ) instance . SetAutoConnectEnabled ( value ) ; }
515513 }
516514
517515 /// <summary>
@@ -546,25 +544,6 @@ public static IEnumerable<string> ActiveClientUlids
546544
547545 #region Public Methods
548546
549- /// <summary>
550- /// Connect presence using player data directly (used by event handlers to avoid StateData lookup issues)
551- /// </summary>
552- private static void ConnectPresenceWithPlayerData ( LootLockerPlayerData playerData , LootLockerPresenceCallback onComplete = null )
553- {
554- var instance = Get ( ) ;
555-
556- // Create and initialize the client
557- var client = instance . CreateAndInitializePresenceClient ( playerData ) ;
558- if ( client == null )
559- {
560- onComplete ? . Invoke ( false , "Failed to create or initialize presence client" ) ;
561- return ;
562- }
563-
564- // Connect the client
565- instance . ConnectExistingPresenceClient ( playerData . ULID , client , onComplete ) ;
566- }
567-
568547 /// <summary>
569548 /// Connect presence for a specific player session
570549 /// </summary>
@@ -970,6 +949,38 @@ public static string GetLastSentStatus(string playerUlid = null)
970949
971950 #region Private Helper Methods
972951
952+ private void SetPresenceEnabled ( bool enabled )
953+ {
954+ bool changingState = isEnabled != enabled ;
955+ isEnabled = enabled ;
956+ if ( changingState && enabled && autoConnectEnabled )
957+ {
958+ SubscribeToSessionEvents ( ) ;
959+ StartCoroutine ( AutoConnectExistingSessions ( ) ) ;
960+ }
961+ else if ( changingState && ! enabled )
962+ {
963+ UnsubscribeFromSessionEvents ( ) ;
964+ DisconnectAllInternal ( ) ;
965+ }
966+ }
967+
968+ private void SetAutoConnectEnabled ( bool enabled )
969+ {
970+ bool changingState = autoConnectEnabled != enabled ;
971+ autoConnectEnabled = enabled ;
972+ if ( changingState && enabled )
973+ {
974+ SubscribeToSessionEvents ( ) ;
975+ StartCoroutine ( AutoConnectExistingSessions ( ) ) ;
976+ }
977+ else if ( changingState && ! enabled )
978+ {
979+ UnsubscribeFromSessionEvents ( ) ;
980+ DisconnectAllInternal ( ) ;
981+ }
982+ }
983+
973984 /// <summary>
974985 /// Handle client state changes for automatic cleanup
975986 /// </summary>
0 commit comments