@@ -86,11 +86,15 @@ void CesiumIonServerManager::Initialize() {
86
86
}
87
87
88
88
void CesiumIonServerManager::ResumeAll () {
89
- const TArray<TObjectPtr<UCesiumIonServer>>& servers = this ->GetServerList ();
90
- for (const TObjectPtr<UCesiumIonServer>& pServer : servers) {
91
- std::shared_ptr<CesiumIonSession> pSession = this ->GetSession (pServer);
92
- pSession->resume ();
93
- pSession->refreshProfileIfNeeded ();
89
+ const TArray<TWeakObjectPtr<UCesiumIonServer>>& servers =
90
+ this ->GetServerList ();
91
+ for (const TWeakObjectPtr<UCesiumIonServer>& pWeakServer : servers) {
92
+ UCesiumIonServer* pServer = pWeakServer.Get ();
93
+ if (pServer) {
94
+ std::shared_ptr<CesiumIonSession> pSession = this ->GetSession (pServer);
95
+ pSession->resume ();
96
+ pSession->refreshProfileIfNeeded ();
97
+ }
94
98
}
95
99
}
96
100
@@ -122,7 +126,7 @@ std::shared_ptr<CesiumIonSession> CesiumIonServerManager::GetCurrentSession() {
122
126
return this ->GetSession (this ->GetCurrentServer ());
123
127
}
124
128
125
- const TArray<TObjectPtr <UCesiumIonServer>>&
129
+ const TArray<TWeakObjectPtr <UCesiumIonServer>>&
126
130
CesiumIonServerManager::GetServerList () {
127
131
this ->RefreshServerList ();
128
132
return this ->_servers ;
@@ -191,12 +195,13 @@ void CesiumIonServerManager::OnAssetRemoved(const FAssetData& asset) {
191
195
UCesiumIonServer* pServer = Cast<UCesiumIonServer>(asset.GetAsset ());
192
196
if (pServer && this ->GetCurrentServer () == pServer) {
193
197
// Current server is being removed, so select a different one.
194
- TObjectPtr<UCesiumIonServer>* ppNewServer = this ->_servers .FindByPredicate (
195
- [pServer](const TObjectPtr<UCesiumIonServer>& pCandidate) {
196
- return pCandidate != pServer;
197
- });
198
+ TWeakObjectPtr<UCesiumIonServer>* ppNewServer =
199
+ this ->_servers .FindByPredicate (
200
+ [pServer](const TWeakObjectPtr<UCesiumIonServer>& pCandidate) {
201
+ return pCandidate.Get () != pServer;
202
+ });
198
203
if (ppNewServer != nullptr ) {
199
- this ->SetCurrentServer (* ppNewServer);
204
+ this ->SetCurrentServer (ppNewServer-> Get () );
200
205
} else {
201
206
this ->SetCurrentServer (nullptr );
202
207
}
0 commit comments