This site uses cookies to optimize website functionality, analyze website performance, and provide personalized experience and advertisement. You can accept our cookies by clicking on the button below or manage your preference on Cookie Preferences. You can also find more information about our Cookie Policy here.
using System.Collections;
using UnityEngine;
using Viveport;
public class ViveportSampleDRM : MonoBehaviour
{
// Get a VIVEPORT ID and VIVEPORT Key from the VIVEPORT Developer Console. Please refer to here:
// https://developer.viveport.com/documents/sdk/en/viveport_sdk/definition/get_viveportid.html
static string VIVEPORT_ID = "VIVEPORT ID of the content"; // replace with developer VIVEPORT ID
static string VIVEPORT_KEY = "VIVEPORT Key of the content"; // replace with developer VIVEPORT Key
private const int SUCCESS = 0;
private static bool bInitComplete = false;
void Awake()
{
MainThreadDispatcher mainThreadDispatcher = GameObject.FindObjectOfType();
if (!mainThreadDispatcher)
{
gameObject.AddComponent();
}
}
void Start()
{
Api.Init(InitStatusHandler, VIVEPORT_ID); // initialize VIVEPORT platform
Invoke("CheckInitStatus", 10); // check that VIVEPORT Init succeeded
}
void OnDestroy()
{
Api.Shutdown(ShutdownHandler);
}
private static void InitStatusHandler(int nResult) // The callback of Api.init()
{
if (nResult == SUCCESS)
{
Debug.Log("VIVEPORT init pass");
Api.GetLicense(new MyLicenseChecker(), VIVEPORT_ID, VIVEPORT_KEY); // the response of Api.Init() is success, continue using Api.GetLicense() API
bInitComplete = true;
}
else
{
Debug.Log("VIVEPORT init fail");
Application.Quit();
return; // the response of Api.Init() is fail
}
}
private static void ShutdownHandler(int nResult) // The callback of Api.Shutdown()
{
if (nResult == SUCCESS)
{
Application.Quit(); // the response of Api.Shutdown() is success, close the content
}
else
{
return; // the response of Api.Shutdown() is fail
}
}
private void CheckInitStatus()
{
if (!bInitComplete)
{
Debug.LogWarning("Viveport init check fail"); // init requires VIVEPORT app installed and online connection
Application.Quit();
}
else
Debug.Log("Viveport init check pass");
}
class MyLicenseChecker : Api.LicenseChecker
{
public override void OnSuccess(long issueTime, long expirationTime, int latestVersion, bool updateRequired)
{
// the response of Api.GetLicense() is DRM success, user is allowed to use the content and continue with content flow
Debug.Log("Viveport DRM pass");
Debug.Log("issueTime: " + issueTime);
Debug.Log("expirationTime: " + expirationTime);
MainThreadDispatcher.Instance().Enqueue(SuccessAction());
}
public override void OnFailure(int errorCode, string errorMessage)
{
// the response of Api.GetLicense() is DRM fail, user is not allowed to use the content
Debug.LogWarning("Viveport DRM fail:"+ errorCode + " Message :" + errorMessage);
MainThreadDispatcher.Instance().Enqueue(FailAction());
}
// Use these methods to call Unity functions from the API callbacks on the main thread
IEnumerator SuccessAction()
{
yield return null;
}
IEnumerator FailAction()
{
Application.Quit();
yield return null;
}
}
}