private static void RegisterDescriptor(XRCameraSubsystemDescriptor overrideDescriptor = default) { if (overrideDescriptor != null) { // Clone descriptor var cinfo = new XRCameraSubsystemCinfo { id = overrideDescriptor.id, implementationType = overrideDescriptor.subsystemImplementationType, supportsAverageBrightness = overrideDescriptor.supportsAverageBrightness, supportsAverageColorTemperature = overrideDescriptor.supportsAverageColorTemperature, supportsCameraConfigurations = overrideDescriptor.supportsCameraConfigurations, supportsCameraImage = overrideDescriptor.supportsCameraImage, //supportsColorCorrection = overrideDescriptor.supportsColorCorrection, supportsDisplayMatrix = overrideDescriptor.supportsDisplayMatrix, supportsProjectionMatrix = overrideDescriptor.supportsProjectionMatrix, //supportsTimestamp = overrideDescriptor.supportsTimestampsupportsTimestamp, }; originalDescriptor = typeof(XRCameraSubsystemDescriptor).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance)[0] .Invoke(new object[] { cinfo }) as XRCameraSubsystemDescriptor; // Override subsystem overrideDescriptor.subsystemImplementationType = typeof(UnityXRMockCameraSubsystem); } else { // Clone descriptor var cinfo = new XRCameraSubsystemCinfo { id = ID, implementationType = typeof(UnityXRMockCameraSubsystem), supportsAverageBrightness = true, supportsAverageColorTemperature = true, supportsCameraConfigurations = false, supportsCameraImage = true, supportsColorCorrection = false, supportsDisplayMatrix = true, supportsProjectionMatrix = true, supportsTimestamp = true, }; Register(cinfo); } }
private void Initialize() { if (this.isInitialized) { return; } if (!UnityXRMockActivator.Active) { if (originalDescriptor == null) { originalDescriptor = GetSubsystemDescriptor(); } this.wrappedSubsystem = originalDescriptor?.Create(); } this.isInitialized = true; }