LevelManager.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/Component/Component.h>
  10. #include <AzFramework/API/ApplicationAPI.h>
  11. #include <SimulationInterfaces/LevelManagerRequestBus.h>
  12. namespace SimulationInterfaces
  13. {
  14. class LevelManager
  15. : public AZ::Component
  16. , protected LevelManagerRequestBus::Handler
  17. , AzFramework::LevelSystemLifecycleNotificationBus::Handler
  18. {
  19. public:
  20. AZ_COMPONENT_DECL(LevelManager);
  21. static void Reflect(AZ::ReflectContext* context);
  22. static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
  23. static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
  24. static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
  25. static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
  26. LevelManager() = default;
  27. ~LevelManager() = default;
  28. protected:
  29. // AZ::Component interface implementation
  30. void Activate() override;
  31. void Deactivate() override;
  32. private:
  33. // LevelManagerRequestBus interface implementation
  34. AZ::Outcome<WorldResourcesList, FailedResult> GetAvailableWorlds(const GetWorldsRequest& request) override;
  35. AZ::Outcome<WorldResource, FailedResult> GetCurrentWorld() override;
  36. AZ::Outcome<WorldResource, FailedResult> LoadWorld(const LoadWorldRequest& request) override;
  37. AZ::Outcome<void, FailedResult> UnloadWorld() override;
  38. void ReloadLevel() override;
  39. // LevelSystemLifecycleNotificationBus implementation
  40. void OnLoadingStart(const char* levelName) override;
  41. void OnLoadingComplete(const char* levelName) override;
  42. void OnUnloadComplete(const char* levelName) override;
  43. // indicates whether action related to levels was triggered by simulation interfaces or not
  44. // if it was triggered by imgui etc, it should trigger fallback
  45. AZStd::atomic<bool> m_actionRequestedFromSimInterfaces = false;
  46. AZ::Outcome<AZStd::vector<AZStd::string>, FailedResult> GetAllAvailableLevels();
  47. bool m_isAppEditor = false;
  48. };
  49. } // namespace SimulationInterfaces