/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #pragma once #include "AR/ArSession.hpp" // Define the class of the native AR session to be used #define NATIVE_AR_SESSION_CLASS ArKit::ArSessionArKit namespace OpenVulkano::AR::ArKit { /** * This is just a helper intermediate class. * The ArKit implementation is in ArSessionArKitInternal. * This is done to prevent the leakage of any objective c or ArKit classes into the ArSession.cpp translation unit. */ class ArSessionArKit : public ArSession { public: [[nodiscard]] static std::shared_ptr Create(const ArSessionConfig& config); [[nodiscard]] static bool IsAvailable(); [[nodiscard]] static const ArSessionCapabilities& GetCapabilities(); [[nodiscard]] ArSessionType GetSessionType() final { return ArSessionType::NATIVE; } [[nodiscard]] ArType GetArType() final { return ArType::AR_KIT; } protected: ArSessionArKit(); ~ArSessionArKit() override = default; }; }