OpenXRVkSystemComponent.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 <XR/XRFactory.h>
  10. #include <OpenXRVk/OpenXRVkInstance.h>
  11. #include <AzCore/Component/Component.h>
  12. namespace OpenXRVk
  13. {
  14. //! This class is the component related to the vulkan backend of XR.
  15. class SystemComponent final
  16. : public AZ::Component
  17. , public XR::Factory
  18. {
  19. public:
  20. AZ_COMPONENT(SystemComponent, "{C0ABD1CE-FD3C-48C3-8AE8-C098BCCFC604}");
  21. static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
  22. static void Reflect(AZ::ReflectContext* context);
  23. SystemComponent() = default;
  24. ~SystemComponent() = default;
  25. //////////////////////////////////////////////////////////////////////////
  26. // Component
  27. void Activate() override;
  28. void Deactivate() override;
  29. //////////////////////////////////////////////////////////////////////////
  30. ///////////////////////////////////////////////////////////////////
  31. // XR::Factory overrides
  32. //! Create OpenXRVk::Instance object
  33. XR::Ptr<XR::Instance> CreateInstance() override;
  34. //! Create OpenXRVk::Device object
  35. XR::Ptr<XR::Device> CreateDevice() override;
  36. //! Create XR::Session object.
  37. XR::Ptr<XR::Session> CreateSession() override;
  38. //! Create XR::Input object.
  39. XR::Ptr<XR::Input> CreateInput() override;
  40. //! Create XR::Space object.
  41. XR::Ptr<XR::Space> CreateSpace() override;
  42. //! Create XR::Swapchain object.
  43. XR::Ptr<XR::SwapChain> CreateSwapChain() override;
  44. //! Create XR::Swapchain::View object.
  45. XR::Ptr<XR::SwapChain::View> CreateSwapChainView() override;
  46. //! Create XR::Swapchain::Image object.
  47. XR::Ptr<XR::SwapChain::Image> CreateSwapChainImage() override;
  48. ///////////////////////////////////////////////////////////////////
  49. private:
  50. XR::Ptr<OpenXRVk::Instance> m_instance;
  51. };
  52. }