// // TestFlickeringBetweenImmersiveSpacesApp.swift // TestFlickeringBetweenImmersiveSpaces // import SwiftUI let scaleForAttachements = SIMD3(2.5, 2.5, 2.5) @main struct TestFlickeringBetweenImmersiveSpacesApp: App { @Environment(\.openImmersiveSpace) var openImmersiveSpace @Environment(\.dismissImmersiveSpace) var dismissImmersiveSpace @State private var appModel = AppModel() var body: some Scene { Group{ ImmersiveSpace(id: "YellowSpheres") { YellowSpheresImmersiveView() .environment(appModel) .onAppear { appModel.immersiveSpaceState = .open } .onDisappear { appModel.immersiveSpaceState = .closed } } .immersionStyle(selection: .constant(.mixed), in: .mixed) ImmersiveSpace(id: "RedSpheres") { RedSpheresImmersiveView() .environment(appModel) .onAppear { appModel.immersiveSpaceState = .open } .onDisappear { appModel.immersiveSpaceState = .closed } } .immersionStyle(selection: .constant(.mixed), in: .mixed) } .onChange(of: appModel.immersiveSpaceID) { oldValue, newValue in Task { await dismissImmersiveSpace() let result = await openImmersiveSpace(id: appModel.immersiveSpaceID) switch result { case .opened: print("ImmersiveSpace openned") case .error: assertionFailure("could not open ImmersiveSpace") case .userCancelled: fallthrough @unknown default: assertionFailure("could not open ImmersiveSpace") } } } } }