using System.Collections.Generic;
using UnityEngine.XR.ARSubsystems;
using UnityEngine.XR.Management;
namespace UnityEngine.XR.Simulation
{
///
/// Manages the lifecycle of Simulation subsystems.
///
public class SimulationLoader : XRLoaderHelper
{
static List s_SessionSubsystemDescriptors = new();
static List s_CameraSubsystemDescriptors = new();
static List s_InputSubsystemDescriptors = new();
static List s_PlaneSubsystemDescriptors = new();
static List s_PointCloudSubsystemDescriptors = new();
static List s_ImageTrackingSubsystemDescriptors = new();
static List s_RaycastSubsystemDescriptors = new();
static List s_MeshSubsystemDescriptors = new();
static List s_ProbeSubsystemDescriptors = new();
static List s_AnchorSubsystemDescriptors = new();
static List s_OcclusionSubsystemDescriptors = new();
static List s_BoundingBoxSubsystemDescriptors = new();
///
/// Initializes the loader.
///
/// `True` if the session subsystem was successfully created, otherwise `false`.
public override bool Initialize()
{
CreateSubsystem(s_SessionSubsystemDescriptors, SimulationSessionSubsystem.k_SubsystemId);
CreateSubsystem(s_CameraSubsystemDescriptors, SimulationCameraSubsystem.k_SubsystemId);
CreateSubsystem(s_InputSubsystemDescriptors, "XRSimulation-Input");
CreateSubsystem(s_PlaneSubsystemDescriptors, SimulationPlaneSubsystem.k_SubsystemId);
CreateSubsystem(s_PointCloudSubsystemDescriptors, SimulationPointCloudSubsystem.k_SubsystemId);
CreateSubsystem(s_ImageTrackingSubsystemDescriptors, SimulationImageTrackingSubsystem.k_SubsystemId);
CreateSubsystem(s_RaycastSubsystemDescriptors, SimulationRaycastSubsystem.k_SubsystemId);
CreateSubsystem(s_MeshSubsystemDescriptors, SimulationMeshSubsystem.k_SubsystemId);
CreateSubsystem(s_ProbeSubsystemDescriptors, SimulationEnvironmentProbeSubsystem.k_SubsystemId);
CreateSubsystem(s_AnchorSubsystemDescriptors, SimulationAnchorSubsystem.k_SubsystemId);
CreateSubsystem(s_OcclusionSubsystemDescriptors, SimulationOcclusionSubsystem.k_SubsystemId);
CreateSubsystem(s_BoundingBoxSubsystemDescriptors, SimulationBoundingBoxSubsystem.k_SubsystemId);
var sessionSubsystem = GetLoadedSubsystem();
if (sessionSubsystem == null)
Debug.LogError("Failed to load session subsystem.");
return sessionSubsystem != null;
}
///
/// Destroys each subsystem.
///
/// Always returns `true`.
public override bool Deinitialize()
{
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
DestroySubsystem();
return true;
}
}
}