using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
namespace Omni
{
public class OmniSetupComponent
{
protected bool hasFullyInitialized = false;
protected bool hasCalibrated = false;
OmniManager omniManager;
OmniConnectionComponent omniConnectionComponent;
OmniDataComponent omniDataComponent;
public void Setup(OmniManager manager, OmniConnectionComponent connectionComponent, OmniDataComponent dataComponent)
{
Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniSetupComponent- Omni/SecureOmni SDK Version 2.3");
omniManager = manager;
omniConnectionComponent = connectionComponent;
omniDataComponent = dataComponent;
}
public void StopOmni()
{
if (omniManager != null)
{
omniManager.Cleanup();
omniManager = null;
}
}
///
/// Calibration Function. Sets up proper alignment between Omni and HMD based on Omni input data and HMD orientation.
///
public virtual void CalibrateOmni(Transform cameraReference)
{
if (hasCalibrated || omniDataComponent.IsMotionDataUnknown()) return;
//set offset to be current ring angle
if ((cameraReference.transform.position.x != 0) && (cameraReference.transform.position.y != 0) && (cameraReference.transform.position.z != 0) &&
(cameraReference.rotation.eulerAngles.x != 0) && (cameraReference.rotation.eulerAngles.y != 0) && (cameraReference.rotation.eulerAngles.z != 0))
{
if (omniConnectionComponent.GetSAPStatus() == SecureAuthenticationProtocolState.SAPEnabled)
{
omniDataComponent.omniOffset = OmniMovementCalibration.GetCalibrationValue();
}
else
{
omniDataComponent.omniOffset = OmniMovementCalibration.GetCalibrationValue();
}
hasCalibrated = true;
Debug.Log(System.DateTime.Now.ToLongTimeString() + ": OmniSetupComponent(CalibrateOmni) - Successfully calibrated Omni.");
}
if (!hasFullyInitialized)
{
//grab initial step count here
omniDataComponent.ResetStepCount();
hasFullyInitialized = true;
}
}
public bool IsPresent()
{
var xrDisplay = new List();
SubsystemManager.GetInstances(xrDisplay);
foreach (var xrD in xrDisplay)
{
if (xrD.running)
{
return true;
}
}
return false;
}
public bool IsInitialized()
{
return hasFullyInitialized;
}
}
}