Files
OpenVulkano/openVulkanoCpp/AR/Provider/ArKit/ArSessionArKit.mm
2025-01-08 15:50:10 +01:00

45 lines
1.2 KiB
Plaintext

/*
* 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/.
*/
#include "ArSessionArKit.h"
#include "ArSessionArKitInternal.h"
namespace OpenVulkano::AR::ArKit
{
namespace
{
ArSessionCapabilities QueryNativeCapabilities()
{
bool supportsDepth = [ARWorldTrackingConfiguration supportsFrameSemantics:ARFrameSemanticSceneDepth];
ArSessionCapabilities capabilities(ArType::AR_KIT, ArSessionType::NATIVE, true, supportsDepth, true, true, true);
return capabilities;
}
}
std::shared_ptr<ArSession> ArSessionArKit::Create(const ArSessionConfig& config) try
{
return std::dynamic_pointer_cast<ArSession>(std::make_shared<ArSessionArKitInternal>(config));
}
catch (NSException* e)
{
throw std::runtime_error(e.description.cString);
}
bool ArSessionArKit::IsAvailable()
{
return true;
}
const ArSessionCapabilities& ArSessionArKit::GetCapabilities()
{
static ArSessionCapabilities capabilities = QueryNativeCapabilities();
return capabilities;
}
ArSessionArKit::ArSessionArKit() : ArSession({ ArType::AR_KIT, ArDepthFormat::METER_FP32, { 0, 2 }, { 1920, 1440 }, 60 })
{}
}