forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			101 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using UnityEngine;
 | 
						|
using Oculus.Platform;
 | 
						|
using Oculus.Platform.Models;
 | 
						|
 | 
						|
namespace Oculus.Platform.Samples.EntitlementCheck
 | 
						|
{
 | 
						|
  public class EntitlementCheck : MonoBehaviour
 | 
						|
  {
 | 
						|
    // Implements a default behavior for entitlement check failures by simply exiting the app.
 | 
						|
    // Set to false if the app wants to provide custom logic to handle entitlement check failures.
 | 
						|
    // For example, the app can instead display a modal dialog to the user and exit gracefully.
 | 
						|
    public bool exitAppOnFailure = true;
 | 
						|
 | 
						|
    // The app can optionally subscribe to these events to do custom entitlement check logic.
 | 
						|
    public static event Action UserFailedEntitlementCheck;
 | 
						|
    public static event Action UserPassedEntitlementCheck;
 | 
						|
 | 
						|
    void Start()
 | 
						|
    {
 | 
						|
      try
 | 
						|
      {
 | 
						|
        // Init the Oculust Platform SDK and send an entitlement check request.
 | 
						|
        if (!Oculus.Platform.Core.IsInitialized())
 | 
						|
        {
 | 
						|
          Oculus.Platform.Core.Initialize();
 | 
						|
        }
 | 
						|
 | 
						|
        Entitlements.IsUserEntitledToApplication().OnComplete(EntitlementCheckCallback);
 | 
						|
      }
 | 
						|
      catch
 | 
						|
      {
 | 
						|
        // Treat any potential initialization exceptions as an entitlement check failure.
 | 
						|
        HandleEntitlementCheckResult(false);
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    // Called when the Oculus Platform completes the async entitlement check request and a result is available.
 | 
						|
    void EntitlementCheckCallback(Message msg)
 | 
						|
    {
 | 
						|
      // If the user passed the entitlement check, msg.IsError will be false.
 | 
						|
      // If the user failed the entitlement check, msg.IsError will be true.
 | 
						|
      HandleEntitlementCheckResult(msg.IsError == false);
 | 
						|
    }
 | 
						|
 | 
						|
    void HandleEntitlementCheckResult(bool result)
 | 
						|
    {
 | 
						|
      if (result) // User passed entitlement check
 | 
						|
      {
 | 
						|
        Debug.Log("Oculus user entitlement check successful.");
 | 
						|
 | 
						|
        try
 | 
						|
        {
 | 
						|
          // Raise the user passed entitlement check event if the app subscribed a handler to it.
 | 
						|
          if (UserPassedEntitlementCheck != null)
 | 
						|
          {
 | 
						|
            UserPassedEntitlementCheck();
 | 
						|
          }
 | 
						|
        }
 | 
						|
        catch
 | 
						|
        {
 | 
						|
          // Suppressing any exceptions to avoid potential exceptions in the app-provided event handler.
 | 
						|
          Debug.LogError("Suppressed exception in app-provided UserPassedEntitlementCheck() event handler.");
 | 
						|
        }
 | 
						|
      }
 | 
						|
      else // User failed entitlement check
 | 
						|
      {
 | 
						|
        try
 | 
						|
        {
 | 
						|
          // Raise the user failed entitlement check event if the app subscribed a handler to it.
 | 
						|
          if (UserFailedEntitlementCheck != null)
 | 
						|
          {
 | 
						|
            UserFailedEntitlementCheck();
 | 
						|
          }
 | 
						|
        }
 | 
						|
        catch
 | 
						|
        {
 | 
						|
          // Suppressing any exceptions to avoid potential exceptions in the app-provided event handler.
 | 
						|
          // Ensures the default entitlement check behavior will still execute, if enabled.
 | 
						|
          Debug.LogError("Suppressed exception in app-provided UserFailedEntitlementCheck() event handler.");
 | 
						|
        }
 | 
						|
 | 
						|
        if (exitAppOnFailure)
 | 
						|
        {
 | 
						|
          // Implements a default behavior for an entitlement check failure -- log the failure and exit the app.
 | 
						|
          Debug.LogError("Oculus user entitlement check failed. Exiting now.");
 | 
						|
#if UNITY_EDITOR
 | 
						|
          UnityEditor.EditorApplication.isPlaying = false;
 | 
						|
#else
 | 
						|
          UnityEngine.Application.Quit();
 | 
						|
#endif
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
          Debug.LogError("Oculus user entitlement check failed.");
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |