Android build settings + metaxr
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
// @lint-ignore-every LICENSELINT
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
#include "Modules/ModuleManager.h"
|
||||
|
||||
/**
|
||||
* The public interface to this module. In most cases, this interface is only public to sibling modules
|
||||
* within this plugin.
|
||||
*/
|
||||
class IOculusXRColocationModule : public IModuleInterface
|
||||
{
|
||||
|
||||
public:
|
||||
/**
|
||||
* Singleton-like access to this module's interface. This is just for convenience!
|
||||
* Beware of calling this during the shutdown phase, though. Your module might have been unloaded already.
|
||||
*
|
||||
* @return Returns singleton instance, loading the module on demand if needed
|
||||
*/
|
||||
static inline IOculusXRColocationModule& Get()
|
||||
{
|
||||
return FModuleManager::LoadModuleChecked<IOculusXRColocationModule>("OculusXRColocation");
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if this module is loaded and ready. It is only valid to call Get() if IsAvailable() returns true.
|
||||
*
|
||||
* @return True if the module is loaded and ready to use
|
||||
*/
|
||||
static inline bool IsAvailable()
|
||||
{
|
||||
return FModuleManager::Get().IsModuleLoaded("OculusXRColocation");
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "OculusXRColocationTypes.h"
|
||||
#include "OculusXRColocationRequests.h"
|
||||
|
||||
namespace OculusXRColocation
|
||||
{
|
||||
struct OCULUSXRCOLOCATION_API FColocation
|
||||
{
|
||||
static TSharedPtr<FDiscoverSessionsRequest> DiscoverSessionsAsync(const FDiscoverSessionsRequest::FCompleteDelegate& OnComplete, const FOculusXRColocationSessionFoundDelegate& OnSessionFound);
|
||||
static EColocationResult StopDiscoverSessions(TSharedPtr<FDiscoverSessionsRequest> Request);
|
||||
static TSharedPtr<FStartSessionAdvertisementRequest> StartSessionAdvertisementAsync(const TArray<uint8>& SessionData, const FStartSessionAdvertisementRequest::FCompleteDelegate& OnComplete);
|
||||
static TSharedPtr<FStopSessionAdvertisementRequest> StopSessionAdvertisementAsync(const FStopSessionAdvertisementRequest::FCompleteDelegate& OnComplete);
|
||||
};
|
||||
|
||||
} // namespace OculusXRColocation
|
||||
@@ -0,0 +1,16 @@
|
||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Kismet/BlueprintFunctionLibrary.h"
|
||||
#include "OculusXRColocationFunctionLibrary.generated.h"
|
||||
|
||||
UCLASS()
|
||||
class OCULUSXRCOLOCATION_API UOculusXRColocationFunctionLibrary : public UBlueprintFunctionLibrary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "OculusXR|Colocation")
|
||||
static void StopColocationSessionDiscovery();
|
||||
};
|
||||
@@ -0,0 +1,80 @@
|
||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Kismet/BlueprintAsyncActionBase.h"
|
||||
#include "OculusXRColocationTypes.h"
|
||||
#include "OculusXRColocation.h"
|
||||
#include "OculusXRColocationSession.h"
|
||||
#include "OculusXRColocationLatentActions.generated.h"
|
||||
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOculusXR_LatentAction_ColocationDiscoveryComplete, bool, Success, const FOculusXRColocationSession&, Session, const TArray<FOculusXRColocationSession>&, FoundSessions);
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOculusXR_LatentAction_ColocationSessionFound, bool, Success, const FOculusXRColocationSession&, Session, const TArray<FOculusXRColocationSession>&, FoundSessions);
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOculusXR_LatentAction_ColocationAdvertisementStarted, bool, Success, const FOculusXRColocationSession&, Session);
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOculusXR_LatentAction_ColocationAdvertisementStopped, bool, Success);
|
||||
|
||||
//
|
||||
// Find sessions
|
||||
//
|
||||
UCLASS()
|
||||
class OCULUSXRCOLOCATION_API UOculusXRAsyncAction_DiscoverColocationSessions : public UBlueprintAsyncActionBase
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
virtual void Activate() override;
|
||||
|
||||
UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true"))
|
||||
static UOculusXRAsyncAction_DiscoverColocationSessions* OculusXRAsyncDiscoverColocationSessions();
|
||||
|
||||
UPROPERTY(BlueprintAssignable)
|
||||
FOculusXR_LatentAction_ColocationSessionFound SessionFound;
|
||||
|
||||
UPROPERTY(BlueprintAssignable)
|
||||
FOculusXR_LatentAction_ColocationDiscoveryComplete OnComplete;
|
||||
|
||||
private:
|
||||
void HandleSessionFound(const FOculusXRColocationSession& Session);
|
||||
void HandleSessionFindComplete(const OculusXRColocation::FDiscoverSessionsRequest::FResultType& Result);
|
||||
};
|
||||
|
||||
//
|
||||
// Start advertisement
|
||||
//
|
||||
UCLASS()
|
||||
class OCULUSXRCOLOCATION_API UOculusXRAsyncAction_StartColocationSessionAdvertisement : public UBlueprintAsyncActionBase
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
virtual void Activate() override;
|
||||
|
||||
UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true"))
|
||||
static UOculusXRAsyncAction_StartColocationSessionAdvertisement* OculusXRAsyncStartColocationSessionAdvertisement(const TArray<uint8>& SessionData);
|
||||
|
||||
UPROPERTY(BlueprintAssignable)
|
||||
FOculusXR_LatentAction_ColocationAdvertisementStarted OnComplete;
|
||||
|
||||
private:
|
||||
TArray<uint8> SessionData;
|
||||
|
||||
void HandleStartSessionAdvertisementComplete(const OculusXRColocation::FStartSessionAdvertisementRequest::FResultType& Result);
|
||||
};
|
||||
|
||||
//
|
||||
// Stop advertisement
|
||||
//
|
||||
UCLASS()
|
||||
class OCULUSXRCOLOCATION_API UOculusXRAsyncAction_StopColocationSessionAdvertisement : public UBlueprintAsyncActionBase
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
virtual void Activate() override;
|
||||
|
||||
UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true"))
|
||||
static UOculusXRAsyncAction_StopColocationSessionAdvertisement* OculusXRAsyncStopColocationSessionAdvertisement();
|
||||
|
||||
UPROPERTY(BlueprintAssignable)
|
||||
FOculusXR_LatentAction_ColocationAdvertisementStopped OnComplete;
|
||||
|
||||
private:
|
||||
void HandleStopSessionAdvertisementComplete(const OculusXRColocation::FStopSessionAdvertisementRequest::FResultType& Result);
|
||||
};
|
||||
@@ -0,0 +1,90 @@
|
||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "OculusXRAsyncRequestSystem.h"
|
||||
#include "OculusXRAsyncRequest.h"
|
||||
#include "OculusXRColocationSession.h"
|
||||
#include "OculusXRColocationTypes.h"
|
||||
#include "OculusXRColocationUtil.h"
|
||||
|
||||
DECLARE_DELEGATE_OneParam(FOculusXRColocationSessionFoundDelegate, const FOculusXRColocationSession&);
|
||||
|
||||
namespace OculusXRColocation
|
||||
{
|
||||
struct FAsyncResultColocationDiscoverySuccess
|
||||
{
|
||||
bool operator()(EColocationResult Val) { return OculusXRColocation::IsResultSuccess(Val); }
|
||||
};
|
||||
|
||||
template <typename TDerived, typename TValueType>
|
||||
using FAsyncColocationRequest = OculusXR::FAsyncRequest<TDerived, EColocationResult, TValueType, FAsyncResultColocationDiscoverySuccess>;
|
||||
|
||||
// Discover nearby sessions
|
||||
struct OCULUSXRCOLOCATION_API FDiscoverSessionsRequest :
|
||||
FAsyncColocationRequest<FDiscoverSessionsRequest, TArray<FOculusXRColocationSession>>
|
||||
{
|
||||
public:
|
||||
FDiscoverSessionsRequest();
|
||||
~FDiscoverSessionsRequest();
|
||||
|
||||
void BindOnSessionFound(const FOculusXRColocationSessionFoundDelegate& OnSessionFound);
|
||||
void OnSessionFound(FOculusXRColocationSession&& Session);
|
||||
|
||||
const TArray<FOculusXRColocationSession>& GetFoundSessions() const { return FoundSessions; }
|
||||
|
||||
protected:
|
||||
virtual void OnInitRequest() override;
|
||||
|
||||
private:
|
||||
static void OnStartComplete(FOculusXRUInt64 RequestId, EColocationResult Result);
|
||||
static void OnResultAvailable(FOculusXRUInt64 RequestId, FOculusXRUUID Uuid, const TArray<uint8>& Metadata);
|
||||
static void OnDiscoveryComplete(FOculusXRUInt64 RequestId, EColocationResult Result);
|
||||
|
||||
FDelegateHandle OnStartCompleteHandle;
|
||||
FDelegateHandle OnSessionFoundHandle;
|
||||
FDelegateHandle OnStopCompleteHandle;
|
||||
FDelegateHandle OnDiscoveryCompleteHandle;
|
||||
|
||||
FOculusXRColocationSessionFoundDelegate OnFoundSessionCallback;
|
||||
TArray<FOculusXRColocationSession> FoundSessions;
|
||||
};
|
||||
|
||||
// Start advertisement, creates a session internally
|
||||
struct OCULUSXRCOLOCATION_API FStartSessionAdvertisementRequest :
|
||||
FAsyncColocationRequest<FStartSessionAdvertisementRequest, FOculusXRColocationSession>
|
||||
{
|
||||
public:
|
||||
FStartSessionAdvertisementRequest(const TArray<uint8>& SessionData);
|
||||
~FStartSessionAdvertisementRequest();
|
||||
|
||||
const TArray<uint8>& GetData() const { return Data; }
|
||||
|
||||
protected:
|
||||
virtual void OnInitRequest() override;
|
||||
|
||||
private:
|
||||
static void OnStartComplete(FOculusXRUInt64 RequestId, FOculusXRUUID Uuid, EColocationResult Result);
|
||||
|
||||
FDelegateHandle OnStartCompleteHandle;
|
||||
TArray<uint8> Data;
|
||||
};
|
||||
|
||||
// Stop advertisement, stops advertising and destroys the internal session
|
||||
struct OCULUSXRCOLOCATION_API FStopSessionAdvertisementRequest :
|
||||
FAsyncColocationRequest<FStopSessionAdvertisementRequest, FOculusXRColocationSession>
|
||||
{
|
||||
public:
|
||||
FStopSessionAdvertisementRequest();
|
||||
~FStopSessionAdvertisementRequest();
|
||||
|
||||
protected:
|
||||
virtual void OnInitRequest() override;
|
||||
|
||||
private:
|
||||
static void OnStopComplete(FOculusXRUInt64 RequestId, EColocationResult Result);
|
||||
|
||||
FDelegateHandle OnStopCompleteHandle;
|
||||
FDelegateHandle OnCompleteHandle;
|
||||
};
|
||||
} // namespace OculusXRColocation
|
||||
@@ -0,0 +1,18 @@
|
||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "OculusXRColocationTypes.h"
|
||||
#include "OculusXRColocationSession.generated.h"
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct OCULUSXRCOLOCATION_API FOculusXRColocationSession
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Colocation")
|
||||
FOculusXRUUID Uuid;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category = "OculusXR|Colocation")
|
||||
TArray<uint8> Metadata;
|
||||
};
|
||||
@@ -0,0 +1,42 @@
|
||||
// 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;
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "OculusXRAnchorTypes.h"
|
||||
#include "OculusXRColocationTypes.generated.h"
|
||||
|
||||
UENUM(BlueprintType)
|
||||
enum class EColocationResult : uint8
|
||||
{
|
||||
Success,
|
||||
Success_AlreadyAdvertising,
|
||||
Success_AlreadyDiscovering,
|
||||
Failure,
|
||||
FailureInvalidParameter,
|
||||
FailureDataIsInvalid,
|
||||
NetworkTimeout,
|
||||
NetworkRequestFailed,
|
||||
InsufficientPermissions,
|
||||
CloudStorageDisabled,
|
||||
NoDiscoveryMethodAvailable,
|
||||
};
|
||||
Reference in New Issue
Block a user