Unreal
ViveportTokenDemo.h
#include "Components/ActorComponent.h"
#include "ViveportApi.h"
#include "ViveportToken.h"
#include "ViveportTokenDemo.generated.h"
UCLASS(ClassGroup=(Viveport), meta=(BlueprintSpawnableComponent))
class VIVEPORTSDK_API UViveportTokenDemo : public UActorComponent
{
GENERATED_BODY()
public:
// Sets default values for this component's properties
UViveportTokenDemo();
// Called when the game starts
void BeginPlay() override;
void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
FString APP_ID = "bd67b286-aafc-449d-8896-bb7e9b351876";
class MyIsTokenReadyCallback : public ViveportApiStatus
{
public:
void OnSuccess(
) override;
void OnFailure(int error_code
) override;
};
class MyGetSessionTokenCallback : public ViveportApiStatus2
{
public:
void OnSuccess(
const FString& token
) override;
void OnFailure(
int errorCode,
const FString& errorMessage
) override;
};
private:
// callback interface
class MyInitCallback : public ViveportApiStatus
{
public:
void OnSuccess(
) override;
void OnFailure(int error_code
) override;
};
MyInitCallback myInitCallback;
class MyShutdownCallback : public ViveportApiStatus
{
public:
void OnSuccess(
) override;
void OnFailure(int error_code
) override;
};
MyShutdownCallback myShutdownCallback;
};
ViveportTokenDemo.cpp
#include "ViveportSDKPrivatePCH.h"
#include "ViveportTokenDemo.h"
UViveportTokenDemo::MyIsTokenReadyCallback myIsTokenReadyCallback;
UViveportTokenDemo::MyGetSessionTokenCallback myGetSessionTokenCallback;
// Sets default values for this component's properties
UViveportTokenDemo::UViveportTokenDemo()
{
// Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features
// off to improve performance if you don't need them.
PrimaryComponentTick.bCanEverTick = true;
}
// Called when the game starts
void UViveportTokenDemo::BeginPlay()
{
Super::BeginPlay();
UViveportApi::Init(&myInitCallback, APP_ID);
}
void UViveportTokenDemo::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
Super::EndPlay(EndPlayReason);
UViveportApi::Shutdown(&myShutdownCallback);
}
void UViveportTokenDemo::MyInitCallback::OnSuccess()
{
FString fstring("Init success.");
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::White, fstring);
UViveportToken::IsReady(&myIsTokenReadyCallback);
}
void UViveportTokenDemo::MyInitCallback::OnFailure(int error_code)
{
FString fstring = FString::Printf(TEXT("Init failure. error=%d"), error_code);
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::White, fstring);
}
void UViveportTokenDemo::MyIsTokenReadyCallback::OnSuccess()
{
FString fstring("IsTokenReady success.");
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::White, fstring);
UViveportToken::GetSessionToken(&myGetSessionTokenCallback);
}
void UViveportTokenDemo::MyIsTokenReadyCallback::OnFailure(int error_code)
{
FString fstring = FString::Printf(TEXT("IsTokenReady failure. error=%d"), error_code);
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::White, fstring);
}
void UViveportTokenDemo::MyGetSessionTokenCallback::OnSuccess(
const FString& token
)
{
FString fstring = FString::Printf(TEXT("Session Token=%s"), *token);
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::White, fstring);
}
void UViveportTokenDemo::MyGetSessionTokenCallback::OnFailure(int error_code, const FString& error_message) {
FString fstring = FString::Printf(TEXT("Get session token failed! error_code=%d"),
error_code);
if (!error_message.IsEmpty())
{
fstring += FString::Printf(TEXT(",\n error_message=%s"),
*error_message);
}
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::White, fstring);
}
void UViveportTokenDemo::MyShutdownCallback::OnSuccess()
{
FString fstring("Shutdown success.");
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::White, fstring);
}
void UViveportTokenDemo::MyShutdownCallback::OnFailure(int error_code)
{
FString fstring = FString::Printf(TEXT("Shutdown failure. error=%d"), error_code);
GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::White, fstring);
}