I've created a Full Immersive VisionOS project and added a spacial video player in the ImmersiveView swift file. I have a few buttons on a different VideosView swift file on a floating window and i'd like switch the video playing in ImmersiveView when i click on a button in VideosView file.
Video player working great in ImmersiveView:
RealityView { content in
if let videoEntity = try? await Entity(named: "Video", in: realityKitContentBundle) {
guard let url = Bundle.main.url(forResource: "video1", withExtension: "mov") else {fatalError("Video was not found!")}
let asset = AVURLAsset(url: url)
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer()
videoEntity.components[VideoPlayerComponent.self] = .init(avPlayer: player)
content.add(videoEntity)
player.replaceCurrentItem(with: playerItem)
player.play()
}else {
print("file not found!")
}
}
Buttons in floating window from VideosView:
struct VideosView: View {
var body: some View {
VStack{
Button(action: {}) {
Text("video 1").font(.title)
}
Button(action: {}) {
Text("video 2").font(.title)
}
Button(action: {}) {
Text("video 3").font(.title)
}
}
}
}
In general how do I control the video player across views and how do I replace the video when each button is selected. Any help/code/links would be greatly appreciated.
Post
Replies
Boosts
Views
Activity
I am trying to launch openImmersiveSpace, but seem like there is an issue with the openImmersiveSpace Task.
Error: Static method 'buildExpression' requires that 'Task<OpenImmersiveSpaceAction.Result, Never>' conform to 'View'
Here is the code and the error shows up on the "Task" line.
import SwiftUI
import RealityKit
import RealityKitContent
struct TestView: View {
@Environment(\.openImmersiveSpace) var openImmersiveSpace
@Environment(\.dismissImmersiveSpace) var dismissImmersiveSpace
var body: some View {
VStack{
Text("Open Full Immersive & switch to NextViewArea")
NavigationLink {
Task {
await openImmersiveSpace(id: "ImmersiveSpace")
}
NextViewArea()
} label:{
Label(" Enter Full Immersive Space")
}
}
}
}
How can I move onto the next view area in the floating window while also launching full immersive space. Any help would be much appreciated.