// Copyright 2020-2024 CesiumGS, Inc. and Contributors #pragma once #include "UObject/WeakObjectPtrTemplates.h" #include class UCesiumIonServer; class CesiumIonSession; DECLARE_MULTICAST_DELEGATE(FCesiumIonServerChanged); class CESIUMEDITOR_API CesiumIonServerManager { public: CesiumIonServerManager() noexcept; ~CesiumIonServerManager() noexcept; void Initialize(); void ResumeAll(); std::shared_ptr GetSession(UCesiumIonServer* Server); std::shared_ptr GetCurrentSession(); const TArray>& GetServerList(); void RefreshServerList(); UCesiumIonServer* GetCurrentServer(); void SetCurrentServer(UCesiumIonServer* pServer); FCesiumIonServerChanged ServerListChanged; FCesiumIonServerChanged CurrentServerChanged; private: void OnAssetAdded(const FAssetData& asset); void OnAssetRemoved(const FAssetData& asset); void OnAssetUpdated(const FAssetData& asset); struct ServerSession { TWeakObjectPtr Server; std::shared_ptr Session; }; TArray _sessions; TArray> _servers; };