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; } } }