/*
 * 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 ArCore::ArSessionArCore

namespace OpenVulkano::AR::ArCore
{
	class ArSessionArCore : public ArSession
	{
	public:
		[[nodiscard]] static std::shared_ptr<ArSession> 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_CORE; }

	protected:
		~ArSessionArCore() override = default;
	};
}