using System; namespace UnityEngine.XR.ARSubsystems { /// /// Encapsulates the parameters for creating a new . /// public struct XREnvironmentProbeSubsystemCinfo : IEquatable { /// /// Specifies an identifier for the provider implementation of the subsystem. /// /// /// The identifier for the provider implementation of the subsystem. /// public string id { get; set; } /// /// Specifies the provider implementation type to use for instantiation. /// /// /// Specifies the provider implementation type to use for instantiation. /// public Type implementationType { get; set; } /// /// Whether the implementation supports manual placement of environment probes. /// /// /// true if manual placement of environment probes is supported. Otherwise, false. /// public bool supportsManualPlacement { get; set; } /// /// Whether the implementation supports removal of manually-placed environment probes. /// /// /// true if removal of manually-placed environment probes is supported. Otherwise, false. /// public bool supportsRemovalOfManual { get; set; } /// /// Whether the implementation supports automatic placement of environment probes. /// /// /// true if automatic placement of environment probes is supported. Otherwise, false. /// public bool supportsAutomaticPlacement { get; set; } /// /// Whether the implementation supports removal of automatically-placed environment probes. /// /// /// true if removal of automatically-placed environment probes is supported. Otherwise, false. /// public bool supportsRemovalOfAutomatic { get; set; } /// /// Whether the implementation supports generation of environment textures. /// /// /// true if the generation of environment textures is supported. Otherwise, false. /// public bool supportsEnvironmentTexture { get; set; } /// /// Whether the implementation supports generation of HDR environment textures. /// /// /// true if the generation of HDR environment textures is supported. Otherwise, false. /// public bool supportsEnvironmentTextureHDR { get; set; } public bool Equals(XREnvironmentProbeSubsystemCinfo other) { return (id.Equals(other.id) && implementationType.Equals(other.implementationType) && supportsManualPlacement.Equals(other.supportsManualPlacement) && supportsRemovalOfManual.Equals(other.supportsRemovalOfManual) && supportsAutomaticPlacement.Equals(other.supportsAutomaticPlacement) && supportsRemovalOfAutomatic.Equals(other.supportsRemovalOfAutomatic) && supportsEnvironmentTexture.Equals(other.supportsEnvironmentTexture) && supportsEnvironmentTextureHDR.Equals(other.supportsEnvironmentTextureHDR)); } public override bool Equals(System.Object obj) { return ((obj is XREnvironmentProbeSubsystemCinfo) && Equals((XREnvironmentProbeSubsystemCinfo)obj)); } public static bool operator ==(XREnvironmentProbeSubsystemCinfo lhs, XREnvironmentProbeSubsystemCinfo rhs) { return lhs.Equals(rhs); } public static bool operator !=(XREnvironmentProbeSubsystemCinfo lhs, XREnvironmentProbeSubsystemCinfo rhs) { return !(lhs == rhs); } public override int GetHashCode() { int hashCode = 486187739; unchecked { hashCode = (hashCode * 486187739) + id.GetHashCode(); hashCode = (hashCode * 486187739) + implementationType.GetHashCode(); hashCode = (hashCode * 486187739) + supportsManualPlacement.GetHashCode(); hashCode = (hashCode * 486187739) + supportsRemovalOfManual.GetHashCode(); hashCode = (hashCode * 486187739) + supportsAutomaticPlacement.GetHashCode(); hashCode = (hashCode * 486187739) + supportsRemovalOfAutomatic.GetHashCode(); hashCode = (hashCode * 486187739) + supportsEnvironmentTexture.GetHashCode(); hashCode = (hashCode * 486187739) + supportsEnvironmentTextureHDR.GetHashCode(); } return hashCode; } } /// /// Specifies a functionality description that may be registered for each implementation that provides the /// interface. /// public class XREnvironmentProbeSubsystemDescriptor : SubsystemDescriptor { /// /// Constructs a XREnvironmentProbeSubsystemDescriptor based on the given parameters. /// /// The parameters required to initialize the descriptor. XREnvironmentProbeSubsystemDescriptor(XREnvironmentProbeSubsystemCinfo environmentProbeSubsystemCinfo) { id = environmentProbeSubsystemCinfo.id; subsystemImplementationType = environmentProbeSubsystemCinfo.implementationType; supportsManualPlacement = environmentProbeSubsystemCinfo.supportsManualPlacement; supportsRemovalOfManual = environmentProbeSubsystemCinfo.supportsRemovalOfManual; supportsAutomaticPlacement = environmentProbeSubsystemCinfo.supportsAutomaticPlacement; supportsRemovalOfAutomatic = environmentProbeSubsystemCinfo.supportsRemovalOfAutomatic; supportsEnvironmentTexture = environmentProbeSubsystemCinfo.supportsEnvironmentTexture; supportsEnvironmentTextureHDR = environmentProbeSubsystemCinfo.supportsEnvironmentTextureHDR; } /// /// Whether the implementation supports manual placement of environment probes. /// /// /// true if manual placement of environment probes is supported. Otherwise, false. /// public bool supportsManualPlacement { get; private set; } /// /// Whether the implementation supports removal of manually-placed environment probes. /// /// /// true if removal of manually-placed environment probes is supported. Otherwise, false. /// public bool supportsRemovalOfManual { get; private set; } /// /// Whether the implementation supports automatic placement of environment probes. /// /// /// true if automatic placement of environment probes is supported. Otherwise, false. /// public bool supportsAutomaticPlacement { get; private set; } /// /// Whether the implementation supports removal of automatically-placed environment probes. /// /// /// true if removal of automatically-placed environment probes is supported. Otherwise, false. /// public bool supportsRemovalOfAutomatic { get; private set; } /// /// Whether the implementation supports generation of environment textures. /// /// /// true if the generation of environment textures is supported. Otherwise, false. /// public bool supportsEnvironmentTexture { get; private set; } /// /// Whether the implementation supports generation of HDR environment textures. /// /// /// true if the generation of HDR environment textures is supported. Otherwise, false. /// public bool supportsEnvironmentTextureHDR { get; private set; } /// /// Creates a XREnvironmentProbeSubsystemDescriptor based on the given parameters validating that the /// id and implentationType properties are specified. /// /// The parameters required to initialize the descriptor. /// /// The created XREnvironmentProbeSubsystemDescriptor. /// /// Thrown when the values specified in the /// parameter are invalid. Typically, this will occur /// /// /// if is null or empty /// /// /// if is null /// /// /// /// if does not derive from the /// XREnvironmentProbeSubsystem class /// /// /// /// internal static XREnvironmentProbeSubsystemDescriptor Create(XREnvironmentProbeSubsystemCinfo environmentProbeSubsystemCinfo) { if (String.IsNullOrEmpty(environmentProbeSubsystemCinfo.id)) { throw new ArgumentException("Cannot create environment probe subsystem descriptor because id is invalid", "environmentProbeSubsystemCinfo"); } if ((environmentProbeSubsystemCinfo.implementationType == null) || !environmentProbeSubsystemCinfo.implementationType.IsSubclassOf(typeof(XREnvironmentProbeSubsystem))) { throw new ArgumentException("Cannot create environment probe subsystem descriptor because implementationType is invalid", "environmentProbeSubsystemCinfo"); } return new XREnvironmentProbeSubsystemDescriptor(environmentProbeSubsystemCinfo); } } }