aboutsummaryrefslogtreecommitdiff
path: root/Source/NVIDIAGfeSDK/Private/GfeSDKCore.cpp
blob: 8abd970c6a3d8a8d5039a0d421bc170270c015bd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* Copyright (c) 2017, NVIDIA CORPORATION.  All rights reserved.
*
* NVIDIA CORPORATION and its licensors retain all intellectual property
* and proprietary rights in and to this software, related documentation
* and any modifications thereto.  Any use, reproduction, disclosure or
* distribution of this software and related documentation without an express
* license agreement from NVIDIA CORPORATION is strictly prohibited.
*/
#include "GfeSDKCore.h"

#include "NVIDIAGfeSDKPrivatePCH.h"

#define VALIDATE_MODULE_CORE()                                           \
    if (!GFEHandle && Callback)                                          \
    {                                                               \
        Callback(GfeSDK::NVGSDK_ERR_MODULE_NOT_LOADED, Context);    \
        return;                                                     \
    }

#define VALIDATE_MODULE_CORE_SPECIALIZED()                                       \
    if (!GFEHandle && Callback)                                                  \
    {                                                                       \
        Callback(GfeSDK::NVGSDK_ERR_MODULE_NOT_LOADED, nullptr, Context);   \
        return;                                                             \
    }

FGfeSDKCore::FGfeSDKCore(GfeSDK::NVGSDK_HANDLE* GFEHandle_)
    : GFEHandle(GFEHandle_)
{
}

FGfeSDKCore::~FGfeSDKCore()
{
}

void FGfeSDKCore::Poll()
{
	if (GFEHandle)
		GfeSDK::NVGSDK_Poll(GFEHandle);
}

void FGfeSDKCore::RequestPermissionsAsync(FGfeSDKRequestPermissionsParams const& Params, GfeSDK::NVGSDK_EmptyCallback Callback, void* Context)
{
    VALIDATE_MODULE_CORE();

	std::vector<GfeSDK::NVGSDK_Scope> Scopes(Params.Scopes.Num());
    
	for (int32 i = 0; i < Params.Scopes.Num(); i++)
	{
		Scopes[i] = TranslateEnum(kScopeUnrealToSdk, Params.Scopes[i], GfeSDK::NVGSDK_SCOPE_MAX);
	}

	GfeSDK::NVGSDK_RequestPermissionsParams cParams;
	cParams.scopeTable = const_cast<GfeSDK::NVGSDK_Scope*>(Scopes.data());
	cParams.scopeTableSize = Scopes.size();
	
	GfeSDK::NVGSDK_RequestPermissionsAsync(GFEHandle, &cParams, Callback, Context);
}

void FGfeSDKCore::GetUILanguageAsync(GfeSDK::NVGSDK_GetUILanguageCallback Callback, void* Context)
{
    VALIDATE_MODULE_CORE_SPECIALIZED();

	GfeSDK::NVGSDK_GetUILanguageAsync(GFEHandle, Callback, Context);
}