import SwiftUI
import RealityKit
import ARKit

// AR视图容器，将RealityKit的ARView包装为SwiftUI可用的视图
struct ARViewContainer: UIViewRepresentable {
    // 环境对象，用于访问共享的AR视图模型
    @EnvironmentObject var arViewModel: ARViewModel
    // 绑定变量，用于控制是否添加立方体
    @Binding var addCube: Bool
    
    // 创建AR视图（UIKit视图）
    func makeUIView(context: Context) -> ARView {
        // 直接返回视图模型中已经配置好的ARView
        return arViewModel.arView
    }
    
    // 更新AR视图（当状态变化时调用）
    func updateUIView(_ uiView: UIViewType, context: Context) {
        // 检查是否需要添加立方体
        if addCube {
            // 创建立方体网格（尺寸为0.1米）
            let boxMesh = MeshResource.generateBox(size: 0.1)
            // 创建材质（蓝色，非金属质感）
            let material = SimpleMaterial(color: .blue, isMetallic: false)
            // 创建模型实体（结合网格和材质）
            let modelEntity = ModelEntity(mesh: boxMesh, materials: [material])
            // 创建锚点实体（可附着在任何平面上）
            let anchorEntity = AnchorEntity(plane: .any)
            
            // 将模型实体添加为锚点的子元素
            anchorEntity.addChild(modelEntity)
            // 将锚点添加到AR场景中
            arViewModel.arView.scene.addAnchor(anchorEntity)
            
            // 在主线程中重置addCube状态
            DispatchQueue.main.async {
                addCube = false
            }
        }
    }
}
