// Copyright (c) Meta Platforms, Inc. and affiliates. #include "OculusXRColocation.h" #include "OculusXRColocationModule.h" #include "OculusXRColocationTypes.h" #include "OculusXRColocationUtil.h" #include "OculusXRAsyncRequestSystem.h" #include "OculusXRHMDModule.h" namespace OculusXRColocation { TSharedPtr FColocation::DiscoverSessionsAsync(const FDiscoverSessionsRequest::FCompleteDelegate& OnComplete, const FOculusXRColocationSessionFoundDelegate& OnSessionFound) { auto request = OculusXR::FAsyncRequestSystem::CreateRequest(); request->BindOnComplete(OnComplete); request->BindOnSessionFound(OnSessionFound); request->Execute(); return request; } EColocationResult FColocation::StopDiscoverSessions(TSharedPtr Request) { uint64 requestId = Request->GetRequestId().Id; ovrpResult result = FOculusXRHMDModule::GetPluginWrapper().StopColocationDiscovery(&requestId); UE_LOG(LogOculusXRColocation, Log, TEXT("Stopping colocation session discovery. RequestID: %llu, Launch async result: %d"), Request->GetRequestId().Id, result); EColocationResult colocationResult = GetResult(result); if (colocationResult != EColocationResult::Success) { UE_LOG(LogOculusXRColocation, Warning, TEXT("Failed to stop local group discovery.")); } return colocationResult; } TSharedPtr FColocation::StartSessionAdvertisementAsync(const TArray& SessionData, const FStartSessionAdvertisementRequest::FCompleteDelegate& OnComplete) { auto request = OculusXR::FAsyncRequestSystem::CreateRequest(SessionData); request->BindOnComplete(OnComplete); request->Execute(); return request; } TSharedPtr FColocation::StopSessionAdvertisementAsync(const FStopSessionAdvertisementRequest::FCompleteDelegate& OnComplete) { auto request = OculusXR::FAsyncRequestSystem::CreateRequest(); request->BindOnComplete(OnComplete); request->Execute(); return request; } } // namespace OculusXRColocation