43 lines
1.5 KiB
C++
43 lines
1.5 KiB
C++
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
|
|
#pragma once
|
|
|
|
#include "OculusXRColocationSession.h"
|
|
#include "OculusXRColocationRequests.h"
|
|
#include <Engine/World.h>
|
|
#include <Subsystems/GameInstanceSubsystem.h>
|
|
|
|
#include "OculusXRColocationSubsystem.generated.h"
|
|
|
|
UCLASS()
|
|
class OCULUSXRCOLOCATION_API UOculusXRColocationSubsystem : public UGameInstanceSubsystem
|
|
{
|
|
GENERATED_BODY()
|
|
public:
|
|
static UOculusXRColocationSubsystem* Get();
|
|
|
|
UOculusXRColocationSubsystem();
|
|
|
|
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
|
|
virtual void Deinitialize() override;
|
|
|
|
void AssignLocalColocationSessionData(const FOculusXRUUID& Uuid, const TArray<uint8>& Data);
|
|
void ClearLocalColocationSession();
|
|
bool HasLocalColocationSession() const;
|
|
const FOculusXRColocationSession& GetLocalSession() const;
|
|
|
|
void SetDiscoveryRequest(TSharedPtr<OculusXRColocation::FDiscoverSessionsRequest> Request);
|
|
void ClearDiscoveryRequest();
|
|
TSharedPtr<OculusXRColocation::FDiscoverSessionsRequest> GetDiscoveryRequest() const;
|
|
|
|
private:
|
|
void OnColocationAdvertisementStart(FOculusXRUInt64 RequestId, FOculusXRUUID Uuid, EColocationResult Result);
|
|
void OnColocationAdvertisementStopped(FOculusXRUInt64 RequestId, EColocationResult Result);
|
|
|
|
FDelegateHandle OnAdvertisementStartHandle;
|
|
FDelegateHandle OnAdvertisementStoppedHandle;
|
|
bool bHasLocalSession;
|
|
FOculusXRColocationSession LocalSession;
|
|
TSharedPtr<OculusXRColocation::FDiscoverSessionsRequest> DiscoverSessionsRequest;
|
|
};
|