Full Code of IvanCampos/visionOS-examples for AI

main 16ecfd45e65e cached
382 files
995.9 KB
426.5k tokens
1 requests
Download .txt
Showing preview only (1,123K chars total). Download the full file or copy to clipboard to get everything.
Repository: IvanCampos/visionOS-examples
Branch: main
Commit: 16ecfd45e65e
Files: 382
Total size: 995.9 KB

Directory structure:
gitextract_0bsx795n/

├── .gitignore
├── AnchorToHead/
│   ├── AnchorToHead/
│   │   ├── AnchorToHeadApp.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── AnchorToHead.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── Battery Life/
│   ├── Battery Life/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Battery_LifeApp.swift
│   │   ├── ContentView.swift
│   │   ├── Fonts/
│   │   │   └── SF-Pro-Display-Regular.otf
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── Battery Life.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── README.md
│   └── ViewModel.swift
├── ChatAVP/
│   ├── ChatAVP/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ChatAVPApp.swift
│   │   ├── ContentView.swift
│   │   ├── Info.plist
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       └── Contents.json
│   │   ├── SearchBar.swift
│   │   └── TypewriterEffect.swift
│   ├── ChatAVP.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── Countdown/
│   ├── Countdown/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── CountdownApp.swift
│   │   ├── Extensions.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── Countdown.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── DualSense/
│   ├── DualSense/
│   │   ├── Assets.xcassets/
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── ControllerManager.swift
│   │   ├── DualSenseApp.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── DualSense.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       └── contents.xcworkspacedata
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── FearAndGreed/
│   ├── FearAndGreed/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Colors.swift
│   │   ├── ContentView.swift
│   │   ├── FearAndGreedApp.swift
│   │   ├── FearGreedIndexService.swift
│   │   ├── FearGreedIndexViewModel.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── FearAndGreed.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── HandTracking/
│   ├── HandTracking/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Extensions.swift
│   │   ├── HandTrackingApp.swift
│   │   ├── HandTrackingModel.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── HandTracking.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── LICENSE
├── LLLM/
│   ├── LLLM/
│   │   ├── APIResponseService.swift
│   │   ├── APIResponseView.swift
│   │   ├── APIResponseViewModel.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Info.plist
│   │   ├── LLLMApp.swift
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       └── Contents.json
│   │   └── SearchBar.swift
│   ├── LLLM.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── Music Kit/
│   ├── Music Kit/
│   │   ├── AppModel.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Extensions.swift
│   │   ├── Helpers.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   ├── MusicManager.swift
│   │   ├── Music_KitApp.swift
│   │   └── ToggleImmersiveSpaceButton.swift
│   ├── Music Kit.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       └── contents.xcworkspacedata
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Ground/
│   │               │   │   ├── DefaultAttenuationMap.exr
│   │               │   │   └── Ground.usda
│   │               │   ├── Immersive.usda
│   │               │   └── SkyDome.usdz
│   │               └── RealityKitContent.swift
│   └── README.md
├── Pencil/
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── Pencil/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Info.plist
│   │   ├── PencilApp.swift
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── Pencil.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   └── README.md
├── Plane Detection/
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── Plane Detection/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Colors.swift
│   │   ├── ContentView.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   ├── PlaneDetectionModel.swift
│   │   ├── Plane_DetectionApp.swift
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── Plane Detection.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   └── README.md
├── README.md
├── Timer Vision/
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── README.md
│   ├── Timer Vision/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── bg-green.imageset/
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Info.plist
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       └── Contents.json
│   │   ├── TimerViewModel.swift
│   │   └── Timer_VisionApp.swift
│   └── Timer Vision.xcodeproj/
│       ├── project.pbxproj
│       └── project.xcworkspace/
│           ├── contents.xcworkspacedata
│           └── xcshareddata/
│               └── IDEWorkspaceChecks.plist
├── WebSockets/
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── README.md
│   ├── WebSockets/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Info.plist
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       └── Contents.json
│   │   ├── WebSocketService.swift
│   │   └── WebSocketsApp.swift
│   └── WebSockets.xcodeproj/
│       ├── project.pbxproj
│       └── project.xcworkspace/
│           ├── contents.xcworkspacedata
│           └── xcshareddata/
│               └── IDEWorkspaceChecks.plist
└── bsky 3D/
    ├── Packages/
    │   └── RealityKitContent/
    │       ├── Package.realitycomposerpro/
    │       │   ├── ProjectData/
    │       │   │   └── main.json
    │       │   └── WorkspaceData/
    │       │       ├── SceneMetadataList.json
    │       │       └── Settings.rcprojectdata
    │       ├── Package.swift
    │       ├── README.md
    │       └── Sources/
    │           └── RealityKitContent/
    │               ├── RealityKitContent.rkassets/
    │               │   ├── Ground/
    │               │   │   ├── DefaultAttenuationMap.exr
    │               │   │   └── Ground.usda
    │               │   ├── Immersive.usda
    │               │   └── SkyDome.usdz
    │               └── RealityKitContent.swift
    ├── README.md
    ├── bsky 3D/
    │   ├── AppModel.swift
    │   ├── Assets.xcassets/
    │   │   ├── AccentColor.colorset/
    │   │   │   └── Contents.json
    │   │   ├── AppIcon.solidimagestack/
    │   │   │   ├── Back.solidimagestacklayer/
    │   │   │   │   ├── Content.imageset/
    │   │   │   │   │   └── Contents.json
    │   │   │   │   └── Contents.json
    │   │   │   ├── Contents.json
    │   │   │   ├── Front.solidimagestacklayer/
    │   │   │   │   ├── Content.imageset/
    │   │   │   │   │   └── Contents.json
    │   │   │   │   └── Contents.json
    │   │   │   └── Middle.solidimagestacklayer/
    │   │   │       ├── Content.imageset/
    │   │   │       │   └── Contents.json
    │   │   │       └── Contents.json
    │   │   └── Contents.json
    │   ├── ContentView.swift
    │   ├── ImmersiveView.swift
    │   ├── Info.plist
    │   ├── Preview Content/
    │   │   └── Preview Assets.xcassets/
    │   │       └── Contents.json
    │   ├── Root.swift
    │   ├── ToggleImmersiveSpaceButton.swift
    │   ├── WebSocketService.swift
    │   └── bsky_3DApp.swift
    └── bsky 3D.xcodeproj/
        ├── project.pbxproj
        └── project.xcworkspace/
            └── contents.xcworkspacedata

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

## User settings
xcuserdata/

## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
*.xcscmblueprint
*.xccheckout

## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
build/
DerivedData/
*.moved-aside
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3

## Obj-C/Swift specific
*.hmap

## App packaging
*.ipa
*.dSYM.zip
*.dSYM

## Playgrounds
timeline.xctimeline
playground.xcworkspace

# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
# Package.resolved
# *.xcodeproj
#
# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
# hence it is not needed unless you have added a package configuration file to your project
# .swiftpm

.build/

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/
#
# Add this line if you want to avoid checking in source code from the Xcode workspace
# *.xcworkspace

# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build/

# Accio dependency management
Dependencies/
.accio/

# fastlane
#
# It is recommended to not store the screenshots in the git repo.
# Instead, use fastlane to re-generate the screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/#source-control

fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output

# Code Injection
#
# After new code Injection tools there's a generated folder /iOSInjectionProject
# https://github.com/johnno1962/injectionforxcode

iOSInjectionProject/

.DS_Store
**/.DS_Store

**/Secrets.swift

**/*.xcuserstate

*.xcuserstate


================================================
FILE: AnchorToHead/AnchorToHead/AnchorToHeadApp.swift
================================================
//
//  AnchorToHeadApp.swift
//  AnchorToHead
//
//  Created by IVAN CAMPOS on 2/21/24.
//

import SwiftUI

@main
struct AnchorToHeadApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        
        ImmersiveSpace(id: "ImmersiveSpace") {
            ImmersiveView()
        }
    }
}


================================================
FILE: AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  },
  "layers" : [
    {
      "filename" : "Front.solidimagestacklayer"
    },
    {
      "filename" : "Middle.solidimagestacklayer"
    },
    {
      "filename" : "Back.solidimagestacklayer"
    }
  ]
}


================================================
FILE: AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: AnchorToHead/AnchorToHead/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: AnchorToHead/AnchorToHead/ContentView.swift
================================================
//
//  ContentView.swift
//  AnchorToHead
//
//  Created by IVAN CAMPOS on 2/21/24.
//

import SwiftUI
import RealityKit
import RealityKitContent

struct ContentView: View {
    
    @State private var showImmersiveSpace = false
    @State private var immersiveSpaceIsShown = false
    
    @Environment(\.openImmersiveSpace) var openImmersiveSpace
    @Environment(\.dismissImmersiveSpace) var dismissImmersiveSpace
    
    var body: some View {
        VStack {
            Text("Head Tracking Anchor")
            
            Toggle("Show Immersive Space", isOn: $showImmersiveSpace)
                .toggleStyle(.button)
                .padding(.top, 50)
        }
        .padding()
        .onChange(of: showImmersiveSpace) { _, newValue in
            Task {
                if newValue {
                    switch await openImmersiveSpace(id: "ImmersiveSpace") {
                    case .opened:
                        immersiveSpaceIsShown = true
                    case .error, .userCancelled:
                        fallthrough
                    @unknown default:
                        immersiveSpaceIsShown = false
                        showImmersiveSpace = false
                    }
                } else if immersiveSpaceIsShown {
                    await dismissImmersiveSpace()
                    immersiveSpaceIsShown = false
                }
            }
        }
    }
}


================================================
FILE: AnchorToHead/AnchorToHead/ImmersiveView.swift
================================================
//
//  ImmersiveView.swift
//  AnchorToHead
//
//  Created by IVAN CAMPOS on 2/21/24.
//

import SwiftUI
import RealityKit
import RealityKitContent

struct ImmersiveView: View {
    
    @State var headTrackedEntity: Entity = {
        let headAnchor = AnchorEntity(.head)
        headAnchor.position = [0, -0.15, -1]
        return headAnchor
    }()
    
    var body: some View {
        RealityView { content in
            
            let boxEntity = ModelEntity(
                mesh: .generateBox(size: 0.1),
                materials: [UnlitMaterial(color: UIColor(hex: "7DFDFE"))]
            )
            
            headTrackedEntity.addChild(boxEntity)
            content.add(headTrackedEntity)
            
        }
    }
}

// Function to create UIColor from hex string
extension UIColor {
    convenience init(hex: String) {
        
        let hexString = hex.trimmingCharacters(in: .whitespacesAndNewlines)
        let scanner = Scanner(string: hexString)
        
        var color: UInt64 = 0
        scanner.scanHexInt64(&color)
        
        let r = CGFloat((color & 0xFF0000) >> 16) / 255.0
        let g = CGFloat((color & 0x00FF00) >> 8) / 255.0
        let b = CGFloat(color & 0x0000FF) / 255.0
        
        self.init(red: r, green: g, blue: b, alpha: 1.0)
    }
}



================================================
FILE: AnchorToHead/AnchorToHead/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>UIApplicationSceneManifest</key>
	<dict>
		<key>UIApplicationPreferredDefaultSceneSessionRole</key>
		<string>UIWindowSceneSessionRoleApplication</string>
		<key>UIApplicationSupportsMultipleScenes</key>
		<true/>
		<key>UISceneConfigurations</key>
		<dict/>
	</dict>
</dict>
</plist>


================================================
FILE: AnchorToHead/AnchorToHead/Preview Content/Preview Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: AnchorToHead/AnchorToHead.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 56;
	objects = {

/* Begin PBXBuildFile section */
		3B2421A92B86D53900BDC25D /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B2421A82B86D53900BDC25D /* RealityKitContent */; };
		3B2421AB2B86D53900BDC25D /* AnchorToHeadApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2421AA2B86D53900BDC25D /* AnchorToHeadApp.swift */; };
		3B2421AD2B86D53900BDC25D /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2421AC2B86D53900BDC25D /* ContentView.swift */; };
		3B2421AF2B86D53900BDC25D /* ImmersiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2421AE2B86D53900BDC25D /* ImmersiveView.swift */; };
		3B2421B12B86D53A00BDC25D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2421B02B86D53A00BDC25D /* Assets.xcassets */; };
		3B2421B42B86D53A00BDC25D /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2421B32B86D53A00BDC25D /* Preview Assets.xcassets */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
		3B2421A32B86D53900BDC25D /* AnchorToHead.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnchorToHead.app; sourceTree = BUILT_PRODUCTS_DIR; };
		3B2421A72B86D53900BDC25D /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = "<group>"; };
		3B2421AA2B86D53900BDC25D /* AnchorToHeadApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnchorToHeadApp.swift; sourceTree = "<group>"; };
		3B2421AC2B86D53900BDC25D /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
		3B2421AE2B86D53900BDC25D /* ImmersiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImmersiveView.swift; sourceTree = "<group>"; };
		3B2421B02B86D53A00BDC25D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		3B2421B32B86D53A00BDC25D /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
		3B2421B52B86D53A00BDC25D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		3B2421A02B86D53900BDC25D /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3B2421A92B86D53900BDC25D /* RealityKitContent in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		3B24219A2B86D53900BDC25D = {
			isa = PBXGroup;
			children = (
				3B2421A52B86D53900BDC25D /* AnchorToHead */,
				3B2421A62B86D53900BDC25D /* Packages */,
				3B2421A42B86D53900BDC25D /* Products */,
			);
			sourceTree = "<group>";
		};
		3B2421A42B86D53900BDC25D /* Products */ = {
			isa = PBXGroup;
			children = (
				3B2421A32B86D53900BDC25D /* AnchorToHead.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		3B2421A52B86D53900BDC25D /* AnchorToHead */ = {
			isa = PBXGroup;
			children = (
				3B2421AA2B86D53900BDC25D /* AnchorToHeadApp.swift */,
				3B2421AC2B86D53900BDC25D /* ContentView.swift */,
				3B2421AE2B86D53900BDC25D /* ImmersiveView.swift */,
				3B2421B02B86D53A00BDC25D /* Assets.xcassets */,
				3B2421B52B86D53A00BDC25D /* Info.plist */,
				3B2421B22B86D53A00BDC25D /* Preview Content */,
			);
			path = AnchorToHead;
			sourceTree = "<group>";
		};
		3B2421A62B86D53900BDC25D /* Packages */ = {
			isa = PBXGroup;
			children = (
				3B2421A72B86D53900BDC25D /* RealityKitContent */,
			);
			path = Packages;
			sourceTree = "<group>";
		};
		3B2421B22B86D53A00BDC25D /* Preview Content */ = {
			isa = PBXGroup;
			children = (
				3B2421B32B86D53A00BDC25D /* Preview Assets.xcassets */,
			);
			path = "Preview Content";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		3B2421A22B86D53900BDC25D /* AnchorToHead */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 3B2421B82B86D53A00BDC25D /* Build configuration list for PBXNativeTarget "AnchorToHead" */;
			buildPhases = (
				3B24219F2B86D53900BDC25D /* Sources */,
				3B2421A02B86D53900BDC25D /* Frameworks */,
				3B2421A12B86D53900BDC25D /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = AnchorToHead;
			packageProductDependencies = (
				3B2421A82B86D53900BDC25D /* RealityKitContent */,
			);
			productName = AnchorToHead;
			productReference = 3B2421A32B86D53900BDC25D /* AnchorToHead.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		3B24219B2B86D53900BDC25D /* Project object */ = {
			isa = PBXProject;
			attributes = {
				BuildIndependentTargetsInParallel = 1;
				LastSwiftUpdateCheck = 1520;
				LastUpgradeCheck = 1520;
				TargetAttributes = {
					3B2421A22B86D53900BDC25D = {
						CreatedOnToolsVersion = 15.2;
					};
				};
			};
			buildConfigurationList = 3B24219E2B86D53900BDC25D /* Build configuration list for PBXProject "AnchorToHead" */;
			compatibilityVersion = "Xcode 14.0";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 3B24219A2B86D53900BDC25D;
			productRefGroup = 3B2421A42B86D53900BDC25D /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				3B2421A22B86D53900BDC25D /* AnchorToHead */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		3B2421A12B86D53900BDC25D /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3B2421B42B86D53A00BDC25D /* Preview Assets.xcassets in Resources */,
				3B2421B12B86D53A00BDC25D /* Assets.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		3B24219F2B86D53900BDC25D /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3B2421AD2B86D53900BDC25D /* ContentView.swift in Sources */,
				3B2421AB2B86D53900BDC25D /* AnchorToHeadApp.swift in Sources */,
				3B2421AF2B86D53900BDC25D /* ImmersiveView.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		3B2421B62B86D53A00BDC25D /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				ENABLE_USER_SCRIPT_SANDBOXING = YES;
				GCC_C_LANGUAGE_STANDARD = gnu17;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
				MTL_FAST_MATH = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = xros;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				XROS_DEPLOYMENT_TARGET = 1.0;
			};
			name = Debug;
		};
		3B2421B72B86D53A00BDC25D /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_USER_SCRIPT_SANDBOXING = YES;
				GCC_C_LANGUAGE_STANDARD = gnu17;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
				MTL_ENABLE_DEBUG_INFO = NO;
				MTL_FAST_MATH = YES;
				SDKROOT = xros;
				SWIFT_COMPILATION_MODE = wholemodule;
				VALIDATE_PRODUCT = YES;
				XROS_DEPLOYMENT_TARGET = 1.0;
			};
			name = Release;
		};
		3B2421B92B86D53A00BDC25D /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"AnchorToHead/Preview Content\"";
				DEVELOPMENT_TEAM = 2DJDH872JZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.AnchorToHead;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SUPPORTED_PLATFORMS = "xros xrsimulator";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2,7";
			};
			name = Debug;
		};
		3B2421BA2B86D53A00BDC25D /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"AnchorToHead/Preview Content\"";
				DEVELOPMENT_TEAM = 2DJDH872JZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.AnchorToHead;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SUPPORTED_PLATFORMS = "xros xrsimulator";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2,7";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		3B24219E2B86D53900BDC25D /* Build configuration list for PBXProject "AnchorToHead" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3B2421B62B86D53A00BDC25D /* Debug */,
				3B2421B72B86D53A00BDC25D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		3B2421B82B86D53A00BDC25D /* Build configuration list for PBXNativeTarget "AnchorToHead" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3B2421B92B86D53A00BDC25D /* Debug */,
				3B2421BA2B86D53A00BDC25D /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */

/* Begin XCSwiftPackageProductDependency section */
		3B2421A82B86D53900BDC25D /* RealityKitContent */ = {
			isa = XCSwiftPackageProductDependency;
			productName = RealityKitContent;
		};
/* End XCSwiftPackageProductDependency section */
	};
	rootObject = 3B24219B2B86D53900BDC25D /* Project object */;
}


================================================
FILE: AnchorToHead/AnchorToHead.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:">
   </FileRef>
</Workspace>


================================================
FILE: AnchorToHead/AnchorToHead.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: AnchorToHead/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json
================================================
{
  "pathsToIds" : {
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/GridMaterial.usda" : "CB766F92-EE55-4A63-9401-E7B8C009764D",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Immersive.usda" : "65F6F990-A780-4474-B78B-572E0E4E273D",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Scene.usda" : "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Untitled Scene.usda" : "D560BB77-AAF3-4BDE-B7C4-989332A4688B",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/GridMaterial.usda" : "66168B71-AB05-424E-8B6C-D33D6E61B08F",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Immersive.usda" : "AF09ED6F-1707-48FD-8720-65B998362C09",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Scene.usda" : "D66134B1-3681-4A8E-AFE5-29F257229F3B"
  }
}

================================================
FILE: AnchorToHead/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json
================================================
{
  "0A9B4653-B11E-4D6A-850E-C6FCB621626C" : {
    "cameraTransform" : [
      1,
      0,
      0,
      0,
      0,
      0.86602545,
      -0.49999994,
      0,
      0,
      0.49999994,
      0.86602545,
      0,
      0.0035969093,
      0.35542378,
      0.62919164,
      1
    ],
    "objectMetadataList" : [
      [
        "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "65F6F990-A780-4474-B78B-572E0E4E273D" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.86602545,
      -0.49999988,
      0,
      0,
      0.49999988,
      0.86602545,
      0,
      1.1972517e-08,
      2.6179132,
      0.43191218,
      1
    ],
    "objectMetadataList" : [
      [
        "65F6F990-A780-4474-B78B-572E0E4E273D",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "66168B71-AB05-424E-8B6C-D33D6E61B08F" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.8660254,
      -0.5,
      0,
      0,
      0.5,
      0.8660254,
      0,
      0,
      0.23875366,
      0.4135335,
      1
    ],
    "objectMetadataList" : [
      [
        "66168B71-AB05-424E-8B6C-D33D6E61B08F",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "AF09ED6F-1707-48FD-8720-65B998362C09" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.7071069,
      -0.7071067,
      0,
      0,
      0.7071067,
      0.7071069,
      0,
      0,
      2.8836339,
      -0.107588194,
      1
    ],
    "objectMetadataList" : [
      [
        "AF09ED6F-1707-48FD-8720-65B998362C09",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "AF09ED6F-1707-48FD-8720-65B998362C09",
        "Root",
        "Sphere_Left"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "AF09ED6F-1707-48FD-8720-65B998362C09",
        "Root",
        "Sphere_Right"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "CB766F92-EE55-4A63-9401-E7B8C009764D" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.8660253,
      -0.5000001,
      0,
      0,
      0.5000001,
      0.8660253,
      0,
      0,
      0.27093494,
      0.4692731,
      1
    ],
    "objectMetadataList" : [
      [
        "CB766F92-EE55-4A63-9401-E7B8C009764D",
        "Root",
        "GridMaterial"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "CB766F92-EE55-4A63-9401-E7B8C009764D",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "D560BB77-AAF3-4BDE-B7C4-989332A4688B" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.8660253,
      -0.5000001,
      0,
      0,
      0.5000001,
      0.8660253,
      0,
      0,
      0.27093494,
      0.4692731,
      1
    ],
    "objectMetadataList" : [

    ]
  },
  "D66134B1-3681-4A8E-AFE5-29F257229F3B" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.7071069,
      -0.7071067,
      0,
      0,
      0.7071067,
      0.7071069,
      0,
      0,
      0.26894823,
      0.26934713,
      1
    ],
    "objectMetadataList" : [
      [
        "D66134B1-3681-4A8E-AFE5-29F257229F3B",
        "Root",
        "GridMaterial",
        "GridMaterial"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "D66134B1-3681-4A8E-AFE5-29F257229F3B",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  }
}

================================================
FILE: AnchorToHead/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata
================================================
{
  "cameraPresets" : {

  },
  "secondaryToolbarData" : {
    "isGridVisible" : true,
    "sceneReverbPreset" : -1
  },
  "unitDefaults" : {
    "°" : "°",
    "kg" : "g",
    "m" : "cm",
    "m\/s" : "m\/s",
    "m\/s²" : "m\/s²",
    "s" : "s"
  }
}

================================================
FILE: AnchorToHead/Packages/RealityKitContent/Package.swift
================================================
// swift-tools-version:5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "RealityKitContent",
    products: [
        // Products define the executables and libraries a package produces, and make them visible to other packages.
        .library(
            name: "RealityKitContent",
            targets: ["RealityKitContent"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
        .target(
            name: "RealityKitContent",
            dependencies: []),
    ]
)

================================================
FILE: AnchorToHead/Packages/RealityKitContent/README.md
================================================
# RealityKitContent

A description of this package.

================================================
FILE: AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    reorder nameChildren = ["Sphere_Left", "Sphere_Right", "GridMaterial"]
    def Sphere "Sphere_Right" (
        active = true
        prepend apiSchemas = ["MaterialBindingAPI"]
    )
    {
        rel material:binding = </Root/GridMaterial/GridMaterial> (
            bindMaterialAs = "weakerThanDescendants"
        )
        double radius = 0.1
        quatf xformOp:orient = (1, 0, 0, 0)
        float3 xformOp:scale = (1, 1, 1)
        float3 xformOp:translate = (0.5, 1.5, -1.5)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }

    def Sphere "Sphere_Left" (
        active = true
        prepend apiSchemas = ["MaterialBindingAPI"]
    )
    {
        rel material:binding = </Root/GridMaterial/GridMaterial> (
            bindMaterialAs = "weakerThanDescendants"
        )
        double radius = 0.1
        quatf xformOp:orient = (1, 0, 0, 0)
        float3 xformOp:scale = (1, 1, 1)
        float3 xformOp:translate = (-0.5, 1.5, -1.5)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }

    def "GridMaterial" (
        active = true
        prepend references = @Materials/GridMaterial.usda@
    )
    {
        float3 xformOp:scale = (1, 1, 1)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }
}



================================================
FILE: AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    def Material "GridMaterial"
    {
        reorder nameChildren = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "DefaultSurfaceShader", "MaterialXPreviewSurface", "Texcoord", "Add", "Multiply", "Fractional", "LineCounts", "Multiply_1", "Separate2", "Separate2_1", "Ifgreater", "Ifgreater_1", "Max", "Background_Color"]
        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>
        token outputs:realitykit:vertex
        token outputs:surface
        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)
        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)
        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749

        def Shader "DefaultSurfaceShader"
        {
            uniform token info:id = "UsdPreviewSurface"
            color3f inputs:diffuseColor = (1, 1, 1)
            float inputs:roughness = 0.75
            token outputs:surface
        }

        def Shader "MaterialXPreviewSurface"
        {
            uniform token info:id = "ND_UsdPreviewSurface_surfaceshader"
            float inputs:clearcoat
            float inputs:clearcoatRoughness
            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>
            color3f inputs:emissiveColor
            float inputs:ior
            float inputs:metallic = 0.15
            float3 inputs:normal
            float inputs:occlusion
            float inputs:opacity
            float inputs:opacityThreshold
            float inputs:roughness = 0.5
            token outputs:out
            float2 ui:nodegraph:node:pos = (1967, 300.5)
            float2 ui:nodegraph:node:size = (208, 297)
            int ui:nodegraph:node:stackingOrder = 870
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["Advanced"]
        }

        def Shader "Texcoord"
        {
            uniform token info:id = "ND_texcoord_vector2"
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)
            float2 ui:nodegraph:node:size = (182, 43)
            int ui:nodegraph:node:stackingOrder = 1358
        }

        def Shader "Multiply"
        {
            uniform token info:id = "ND_multiply_vector2"
            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>
            float2 inputs:in2 = (32, 15)
            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)
            float2 ui:nodegraph:node:size = (61, 36)
            int ui:nodegraph:node:stackingOrder = 1348
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["inputs:in2"]
        }

        def Shader "Fractional"
        {
            uniform token info:id = "ND_realitykit_fractional_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (440.5, 49.5)
            float2 ui:nodegraph:node:size = (155, 99)
            int ui:nodegraph:node:stackingOrder = 1345
        }

        def Shader "BaseColor"
        {
            uniform token info:id = "ND_constant_color3"
            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (
                colorSpace = "Input - Texture - sRGB - sRGB"
            )
            color3f inputs:value.connect = None
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)
            float2 ui:nodegraph:node:size = (150, 43)
            int ui:nodegraph:node:stackingOrder = 1353
        }

        def Shader "LineColor"
        {
            uniform token info:id = "ND_constant_color3"
            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (
                colorSpace = "Input - Texture - sRGB - sRGB"
            )
            color3f inputs:value.connect = None
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)
            float2 ui:nodegraph:node:size = (146, 43)
            int ui:nodegraph:node:stackingOrder = 1355
        }

        def Shader "LineWidths"
        {
            uniform token info:id = "ND_combine2_vector2"
            float inputs:in1 = 0.1
            float inputs:in2 = 0.1
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)
            float2 ui:nodegraph:node:size = (151, 43)
            int ui:nodegraph:node:stackingOrder = 1361
        }

        def Shader "LineCounts"
        {
            uniform token info:id = "ND_combine2_vector2"
            float inputs:in1 = 24
            float inputs:in2 = 12
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)
            float2 ui:nodegraph:node:size = (153, 43)
            int ui:nodegraph:node:stackingOrder = 1359
        }

        def Shader "Remap"
        {
            uniform token info:id = "ND_remap_color3"
            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>
            color3f inputs:inhigh.connect = None
            color3f inputs:inlow.connect = None
            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>
            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1755.5, 300.5)
            float2 ui:nodegraph:node:size = (95, 171)
            int ui:nodegraph:node:stackingOrder = 1282
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["inputs:outlow"]
        }

        def Shader "Separate2"
        {
            uniform token info:id = "ND_separate2_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>
            float outputs:outx
            float outputs:outy
            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)
            float2 ui:nodegraph:node:size = (116, 117)
            int ui:nodegraph:node:stackingOrder = 1363
        }

        def Shader "Combine3"
        {
            uniform token info:id = "ND_combine3_color3"
            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>
            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>
            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)
            float2 ui:nodegraph:node:size = (146, 54)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Range"
        {
            uniform token info:id = "ND_range_vector2"
            bool inputs:doclamp = 1
            float2 inputs:gamma = (2, 2)
            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>
            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>
            float2 inputs:inlow = (0.02, 0.02)
            float2 inputs:outhigh
            float2 inputs:outlow
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)
            float2 ui:nodegraph:node:size = (98, 207)
            int ui:nodegraph:node:stackingOrder = 1364
        }

        def Shader "Subtract"
        {
            uniform token info:id = "ND_subtract_vector2"
            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>
            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)
            float2 ui:nodegraph:node:size = (63, 36)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Absval"
        {
            uniform token info:id = "ND_absval_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)
            float2 ui:nodegraph:node:size = (123, 43)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Min"
        {
            uniform token info:id = "ND_min_float"
            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>
            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>
            float outputs:out
            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)
            float2 ui:nodegraph:node:size = (114, 36)
            int ui:nodegraph:node:stackingOrder = 1363
        }
    }
}



================================================
FILE: AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    reorder nameChildren = ["GridMaterial", "Sphere"]
    rel material:binding = None (
        bindMaterialAs = "weakerThanDescendants"
    )

    def Sphere "Sphere" (
        active = true
        prepend apiSchemas = ["MaterialBindingAPI"]
    )
    {
        rel material:binding = </Root/GridMaterial/GridMaterial> (
            bindMaterialAs = "weakerThanDescendants"
        )
        double radius = 0.05
        quatf xformOp:orient = (1, 0, 0, 0)
        float3 xformOp:scale = (1, 1, 1)
        float3 xformOp:translate = (0, 0, 0.0004)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]

        def RealityKitComponent "Collider"
        {
            uint group = 1
            uniform token info:id = "RealityKit.Collider"
            uint mask = 4294967295
            token type = "Default"

            def RealityKitStruct "Shape"
            {
                float3 extent = (0.2, 0.2, 0.2)
                float radius = 0.05
                token shapeType = "Sphere"
            }
        }

        def RealityKitComponent "InputTarget"
        {
            uniform token info:id = "RealityKit.InputTarget"
        }
    }

    def "GridMaterial" (
        active = true
        prepend references = @Materials/GridMaterial.usda@
    )
    {
        float3 xformOp:scale = (1, 1, 1)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }
}



================================================
FILE: AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift
================================================
import Foundation

/// Bundle for the RealityKitContent project
public let realityKitContentBundle = Bundle.module


================================================
FILE: AnchorToHead/README.md
================================================
# Anchor To Head

_Allow an entity to automatically follow your head, hands-free._

https://github.com/IvanCampos/visionOS-examples/assets/872137/5dbb1c74-0dbe-40a0-8df7-16d762ee7482


================================================
FILE: Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  },
  "layers" : [
    {
      "filename" : "Front.solidimagestacklayer"
    },
    {
      "filename" : "Middle.solidimagestacklayer"
    },
    {
      "filename" : "Back.solidimagestacklayer"
    }
  ]
}


================================================
FILE: Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Battery Life/Battery Life/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Battery Life/Battery Life/Battery_LifeApp.swift
================================================
//
//  Battery_LifeApp.swift
//  Battery Life
//
//  Created by IVAN CAMPOS on 3/13/24.
//

import SwiftUI

@main
struct Battery_LifeApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .defaultSize(width: 600, height: 300)
    }
}


================================================
FILE: Battery Life/Battery Life/ContentView.swift
================================================
//
//  ContentView.swift
//  Battery Life
//
//  Created by IVAN CAMPOS on 3/13/24.
//

import SwiftUI

struct ContentView: View {
    @ObservedObject var viewModel = ViewModel()
    
    var body: some View {
        VStack {
            Text(batteryLevelText)
                .font(.custom("SFProDisplay-Regular", size: 100))
                .foregroundColor(batteryColor)
                .padding()
            
            Text(batteryStateText)
                .font(.custom("SFProDisplay-Regular", size: 50))
                .padding()
        }
    }
    
    private var batteryLevelText: String {
        let level = viewModel.batteryLevel
        return level >= 0 ? "\(Int(level * 100))%" : "Unknown"
    }
    
    private var batteryColor: Color {
        switch viewModel.batteryLevel {
        case 0.0..<0.2: return .red
        case 0.2..<0.4: return .orange
        case 0.4..<0.6: return .yellow
        default: return .green
        }
    }
    
    private var batteryStateText: String {
        switch viewModel.batteryState {
        case .charging: return "􀢋"
        case .unplugged: return "Unplugged"
        case .full: return "􀛨"
        default: return "Unknown"
        }
    }
}


================================================
FILE: Battery Life/Battery Life/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>UIAppFonts</key>
	<array>
		<string>SF-Pro-Display-Regular.otf</string>
	</array>
	<key>UIApplicationSceneManifest</key>
	<dict>
		<key>UIApplicationPreferredDefaultSceneSessionRole</key>
		<string>UIWindowSceneSessionRoleApplication</string>
		<key>UIApplicationSupportsMultipleScenes</key>
		<true/>
		<key>UISceneConfigurations</key>
		<dict/>
	</dict>
</dict>
</plist>


================================================
FILE: Battery Life/Battery Life/Preview Content/Preview Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Battery Life/Battery Life.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 56;
	objects = {

/* Begin PBXBuildFile section */
		3B9E088E2BA158C5008297EC /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B9E088D2BA158C5008297EC /* ViewModel.swift */; };
		3B9E08902BA163B3008297EC /* SF-Pro-Display-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 3B9E088F2BA163B3008297EC /* SF-Pro-Display-Regular.otf */; };
		3BDFB9412B7D439600474AFB /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3BDFB9402B7D439600474AFB /* RealityKitContent */; };
		3BDFB9432B7D439600474AFB /* Battery_LifeApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFB9422B7D439600474AFB /* Battery_LifeApp.swift */; };
		3BDFB9452B7D439600474AFB /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFB9442B7D439600474AFB /* ContentView.swift */; };
		3BDFB9472B7D439700474AFB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3BDFB9462B7D439700474AFB /* Assets.xcassets */; };
		3BDFB94A2B7D439700474AFB /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3BDFB9492B7D439700474AFB /* Preview Assets.xcassets */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
		3B9E088D2BA158C5008297EC /* ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ViewModel.swift; path = ../ViewModel.swift; sourceTree = "<group>"; };
		3B9E088F2BA163B3008297EC /* SF-Pro-Display-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-Pro-Display-Regular.otf"; sourceTree = "<group>"; };
		3BDFB93B2B7D439600474AFB /* Battery Life.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Battery Life.app"; sourceTree = BUILT_PRODUCTS_DIR; };
		3BDFB93F2B7D439600474AFB /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = "<group>"; };
		3BDFB9422B7D439600474AFB /* Battery_LifeApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Battery_LifeApp.swift; sourceTree = "<group>"; };
		3BDFB9442B7D439600474AFB /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
		3BDFB9462B7D439700474AFB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		3BDFB9492B7D439700474AFB /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
		3BDFB94B2B7D439700474AFB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		3BDFB9382B7D439600474AFB /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3BDFB9412B7D439600474AFB /* RealityKitContent in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		3B9E08912BA1658B008297EC /* Fonts */ = {
			isa = PBXGroup;
			children = (
				3B9E088F2BA163B3008297EC /* SF-Pro-Display-Regular.otf */,
			);
			path = Fonts;
			sourceTree = "<group>";
		};
		3BDFB9322B7D439600474AFB = {
			isa = PBXGroup;
			children = (
				3BDFB93D2B7D439600474AFB /* Battery Life */,
				3BDFB93E2B7D439600474AFB /* Packages */,
				3BDFB93C2B7D439600474AFB /* Products */,
			);
			sourceTree = "<group>";
		};
		3BDFB93C2B7D439600474AFB /* Products */ = {
			isa = PBXGroup;
			children = (
				3BDFB93B2B7D439600474AFB /* Battery Life.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		3BDFB93D2B7D439600474AFB /* Battery Life */ = {
			isa = PBXGroup;
			children = (
				3B9E08912BA1658B008297EC /* Fonts */,
				3BDFB9422B7D439600474AFB /* Battery_LifeApp.swift */,
				3B9E088D2BA158C5008297EC /* ViewModel.swift */,
				3BDFB9442B7D439600474AFB /* ContentView.swift */,
				3BDFB9462B7D439700474AFB /* Assets.xcassets */,
				3BDFB94B2B7D439700474AFB /* Info.plist */,
				3BDFB9482B7D439700474AFB /* Preview Content */,
			);
			path = "Battery Life";
			sourceTree = "<group>";
		};
		3BDFB93E2B7D439600474AFB /* Packages */ = {
			isa = PBXGroup;
			children = (
				3BDFB93F2B7D439600474AFB /* RealityKitContent */,
			);
			path = Packages;
			sourceTree = "<group>";
		};
		3BDFB9482B7D439700474AFB /* Preview Content */ = {
			isa = PBXGroup;
			children = (
				3BDFB9492B7D439700474AFB /* Preview Assets.xcassets */,
			);
			path = "Preview Content";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		3BDFB93A2B7D439600474AFB /* Battery Life */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 3BDFB94E2B7D439700474AFB /* Build configuration list for PBXNativeTarget "Battery Life" */;
			buildPhases = (
				3BDFB9372B7D439600474AFB /* Sources */,
				3BDFB9382B7D439600474AFB /* Frameworks */,
				3BDFB9392B7D439600474AFB /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "Battery Life";
			packageProductDependencies = (
				3BDFB9402B7D439600474AFB /* RealityKitContent */,
			);
			productName = "Battery Life";
			productReference = 3BDFB93B2B7D439600474AFB /* Battery Life.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		3BDFB9332B7D439600474AFB /* Project object */ = {
			isa = PBXProject;
			attributes = {
				BuildIndependentTargetsInParallel = 1;
				LastSwiftUpdateCheck = 1520;
				LastUpgradeCheck = 1520;
				TargetAttributes = {
					3BDFB93A2B7D439600474AFB = {
						CreatedOnToolsVersion = 15.2;
					};
				};
			};
			buildConfigurationList = 3BDFB9362B7D439600474AFB /* Build configuration list for PBXProject "Battery Life" */;
			compatibilityVersion = "Xcode 14.0";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 3BDFB9322B7D439600474AFB;
			productRefGroup = 3BDFB93C2B7D439600474AFB /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				3BDFB93A2B7D439600474AFB /* Battery Life */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		3BDFB9392B7D439600474AFB /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3BDFB94A2B7D439700474AFB /* Preview Assets.xcassets in Resources */,
				3B9E08902BA163B3008297EC /* SF-Pro-Display-Regular.otf in Resources */,
				3BDFB9472B7D439700474AFB /* Assets.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		3BDFB9372B7D439600474AFB /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3BDFB9452B7D439600474AFB /* ContentView.swift in Sources */,
				3BDFB9432B7D439600474AFB /* Battery_LifeApp.swift in Sources */,
				3B9E088E2BA158C5008297EC /* ViewModel.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		3BDFB94C2B7D439700474AFB /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				ENABLE_USER_SCRIPT_SANDBOXING = YES;
				GCC_C_LANGUAGE_STANDARD = gnu17;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
				MTL_FAST_MATH = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = xros;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				XROS_DEPLOYMENT_TARGET = 1.0;
			};
			name = Debug;
		};
		3BDFB94D2B7D439700474AFB /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_USER_SCRIPT_SANDBOXING = YES;
				GCC_C_LANGUAGE_STANDARD = gnu17;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
				MTL_ENABLE_DEBUG_INFO = NO;
				MTL_FAST_MATH = YES;
				SDKROOT = xros;
				SWIFT_COMPILATION_MODE = wholemodule;
				VALIDATE_PRODUCT = YES;
				XROS_DEPLOYMENT_TARGET = 1.0;
			};
			name = Release;
		};
		3BDFB94F2B7D439700474AFB /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"Battery Life/Preview Content\"";
				DEVELOPMENT_TEAM = 2DJDH872JZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = "com.ivancampos.Battery-Life";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SUPPORTED_PLATFORMS = "xros xrsimulator";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2,7";
			};
			name = Debug;
		};
		3BDFB9502B7D439700474AFB /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"Battery Life/Preview Content\"";
				DEVELOPMENT_TEAM = 2DJDH872JZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = "com.ivancampos.Battery-Life";
				PRODUCT_NAME = "$(TARGET_NAME)";
				SUPPORTED_PLATFORMS = "xros xrsimulator";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2,7";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		3BDFB9362B7D439600474AFB /* Build configuration list for PBXProject "Battery Life" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3BDFB94C2B7D439700474AFB /* Debug */,
				3BDFB94D2B7D439700474AFB /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		3BDFB94E2B7D439700474AFB /* Build configuration list for PBXNativeTarget "Battery Life" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3BDFB94F2B7D439700474AFB /* Debug */,
				3BDFB9502B7D439700474AFB /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */

/* Begin XCSwiftPackageProductDependency section */
		3BDFB9402B7D439600474AFB /* RealityKitContent */ = {
			isa = XCSwiftPackageProductDependency;
			productName = RealityKitContent;
		};
/* End XCSwiftPackageProductDependency section */
	};
	rootObject = 3BDFB9332B7D439600474AFB /* Project object */;
}


================================================
FILE: Battery Life/Battery Life.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:">
   </FileRef>
</Workspace>


================================================
FILE: Battery Life/Battery Life.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: Battery Life/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json
================================================
{
  "pathsToIds" : {
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/GridMaterial.usda" : "440DE5B4-E4E4-459B-AABF-9ACE96319272",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/procedural_sphere_grid.usda" : "34C460AE-CA1B-4348-BD05-621ACBDFFE97",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Scene.usda" : "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Untitled Scene.usda" : "03E02005-EFA6-48D6-8A76-05B2822A74E9",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/GridMaterial.usda" : "FBD8436F-6B8B-4B82-99B5-995D538B4704",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/procedural_sphere_grid.usda" : "1CBF3893-ABFD-408C-8B91-045BFD257808",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Scene.usda" : "26DBAE76-5DD8-47B6-A085-1B4ADA111097"
  }
}

================================================
FILE: Battery Life/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json
================================================
{
  "0A9B4653-B11E-4D6A-850E-C6FCB621626C" : {
    "cameraTransform" : [
      0.9807314,
      -1.9820146e-10,
      -0.195361,
      0,
      -0.10051192,
      0.85749435,
      -0.5045798,
      0,
      0.16752096,
      0.51449335,
      0.84097165,
      0,
      0.09084191,
      0.05849296,
      0.13903293,
      1
    ],
    "objectMetadataList" : [
      [
        "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
        "Root",
        "GridMaterial"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
        "Root",
        "Sphere"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "1CBF3893-ABFD-408C-8B91-045BFD257808" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660255,
      -0.49999988,
      0,
      0,
      0.49999988,
      0.8660255,
      0,
      0,
      0.27093542,
      0.46927398,
      1
    ],
    "objectMetadataList" : [

    ]
  },
  "03E02005-EFA6-48D6-8A76-05B2822A74E9" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660254,
      -0.49999994,
      0,
      0,
      0.49999994,
      0.8660254,
      0,
      0,
      0.5981957,
      1.0361054,
      1
    ],
    "objectMetadataList" : [

    ]
  },
  "26DBAE76-5DD8-47B6-A085-1B4ADA111097" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.7071069,
      -0.7071067,
      0,
      0,
      0.7071067,
      0.7071069,
      0,
      0,
      0.2681068,
      0.26850593,
      1
    ],
    "objectMetadataList" : [
      [
        "26DBAE76-5DD8-47B6-A085-1B4ADA111097",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "34C460AE-CA1B-4348-BD05-621ACBDFFE97" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660255,
      -0.49999988,
      0,
      0,
      0.49999988,
      0.8660255,
      0,
      0,
      0.27093542,
      0.46927398,
      1
    ],
    "objectMetadataList" : [

    ]
  },
  "440DE5B4-E4E4-459B-AABF-9ACE96319272" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660254,
      -0.49999994,
      0,
      0,
      0.49999994,
      0.8660254,
      0,
      0,
      0.5981957,
      1.0361054,
      1
    ],
    "objectMetadataList" : [
      [
        "440DE5B4-E4E4-459B-AABF-9ACE96319272",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "FBD8436F-6B8B-4B82-99B5-995D538B4704" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660254,
      -0.49999994,
      0,
      0,
      0.49999994,
      0.8660254,
      0,
      0,
      0.5981957,
      1.0361054,
      1
    ],
    "objectMetadataList" : [
      [
        "FBD8436F-6B8B-4B82-99B5-995D538B4704",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  }
}

================================================
FILE: Battery Life/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata
================================================
{
  "cameraPresets" : {

  },
  "secondaryToolbarData" : {
    "isGridVisible" : true,
    "sceneReverbPreset" : -1
  },
  "unitDefaults" : {
    "°" : "°",
    "kg" : "g",
    "m" : "cm",
    "m\/s" : "m\/s",
    "m\/s²" : "m\/s²",
    "s" : "s"
  }
}

================================================
FILE: Battery Life/Packages/RealityKitContent/Package.swift
================================================
// swift-tools-version:5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "RealityKitContent",
    products: [
        // Products define the executables and libraries a package produces, and make them visible to other packages.
        .library(
            name: "RealityKitContent",
            targets: ["RealityKitContent"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
        .target(
            name: "RealityKitContent",
            dependencies: []),
    ]
)

================================================
FILE: Battery Life/Packages/RealityKitContent/README.md
================================================
# RealityKitContent

A description of this package.

================================================
FILE: Battery Life/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    def Material "GridMaterial"
    {
        reorder nameChildren = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "DefaultSurfaceShader", "MaterialXPreviewSurface", "Texcoord", "Add", "Multiply", "Fractional", "LineCounts", "Multiply_1", "Separate2", "Separate2_1", "Ifgreater", "Ifgreater_1", "Max", "Background_Color"]
        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>
        token outputs:realitykit:vertex
        token outputs:surface
        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)
        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)
        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749

        def Shader "DefaultSurfaceShader"
        {
            uniform token info:id = "UsdPreviewSurface"
            color3f inputs:diffuseColor = (1, 1, 1)
            float inputs:roughness = 0.75
            token outputs:surface
        }

        def Shader "MaterialXPreviewSurface"
        {
            uniform token info:id = "ND_UsdPreviewSurface_surfaceshader"
            float inputs:clearcoat
            float inputs:clearcoatRoughness
            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>
            color3f inputs:emissiveColor
            float inputs:ior
            float inputs:metallic = 0.15
            float3 inputs:normal
            float inputs:occlusion
            float inputs:opacity
            float inputs:opacityThreshold
            float inputs:roughness = 0.5
            token outputs:out
            float2 ui:nodegraph:node:pos = (1967, 300.5)
            float2 ui:nodegraph:node:size = (208, 297)
            int ui:nodegraph:node:stackingOrder = 870
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["Advanced"]
        }

        def Shader "Texcoord"
        {
            uniform token info:id = "ND_texcoord_vector2"
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)
            float2 ui:nodegraph:node:size = (182, 43)
            int ui:nodegraph:node:stackingOrder = 1358
        }

        def Shader "Multiply"
        {
            uniform token info:id = "ND_multiply_vector2"
            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>
            float2 inputs:in2 = (32, 15)
            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)
            float2 ui:nodegraph:node:size = (61, 36)
            int ui:nodegraph:node:stackingOrder = 1348
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["inputs:in2"]
        }

        def Shader "Fractional"
        {
            uniform token info:id = "ND_realitykit_fractional_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (440.5, 49.5)
            float2 ui:nodegraph:node:size = (155, 99)
            int ui:nodegraph:node:stackingOrder = 1345
        }

        def Shader "BaseColor"
        {
            uniform token info:id = "ND_constant_color3"
            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (
                colorSpace = "Input - Texture - sRGB - sRGB"
            )
            color3f inputs:value.connect = None
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)
            float2 ui:nodegraph:node:size = (150, 43)
            int ui:nodegraph:node:stackingOrder = 1353
        }

        def Shader "LineColor"
        {
            uniform token info:id = "ND_constant_color3"
            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (
                colorSpace = "Input - Texture - sRGB - sRGB"
            )
            color3f inputs:value.connect = None
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)
            float2 ui:nodegraph:node:size = (146, 43)
            int ui:nodegraph:node:stackingOrder = 1355
        }

        def Shader "LineWidths"
        {
            uniform token info:id = "ND_combine2_vector2"
            float inputs:in1 = 0.1
            float inputs:in2 = 0.1
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)
            float2 ui:nodegraph:node:size = (151, 43)
            int ui:nodegraph:node:stackingOrder = 1361
        }

        def Shader "LineCounts"
        {
            uniform token info:id = "ND_combine2_vector2"
            float inputs:in1 = 24
            float inputs:in2 = 12
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)
            float2 ui:nodegraph:node:size = (153, 43)
            int ui:nodegraph:node:stackingOrder = 1359
        }

        def Shader "Remap"
        {
            uniform token info:id = "ND_remap_color3"
            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>
            color3f inputs:inhigh.connect = None
            color3f inputs:inlow.connect = None
            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>
            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1755.5, 300.5)
            float2 ui:nodegraph:node:size = (95, 171)
            int ui:nodegraph:node:stackingOrder = 1282
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["inputs:outlow"]
        }

        def Shader "Separate2"
        {
            uniform token info:id = "ND_separate2_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>
            float outputs:outx
            float outputs:outy
            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)
            float2 ui:nodegraph:node:size = (116, 117)
            int ui:nodegraph:node:stackingOrder = 1363
        }

        def Shader "Combine3"
        {
            uniform token info:id = "ND_combine3_color3"
            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>
            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>
            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)
            float2 ui:nodegraph:node:size = (146, 54)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Range"
        {
            uniform token info:id = "ND_range_vector2"
            bool inputs:doclamp = 1
            float2 inputs:gamma = (2, 2)
            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>
            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>
            float2 inputs:inlow = (0.02, 0.02)
            float2 inputs:outhigh
            float2 inputs:outlow
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)
            float2 ui:nodegraph:node:size = (98, 207)
            int ui:nodegraph:node:stackingOrder = 1364
        }

        def Shader "Subtract"
        {
            uniform token info:id = "ND_subtract_vector2"
            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>
            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)
            float2 ui:nodegraph:node:size = (63, 36)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Absval"
        {
            uniform token info:id = "ND_absval_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)
            float2 ui:nodegraph:node:size = (123, 43)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Min"
        {
            uniform token info:id = "ND_min_float"
            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>
            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>
            float outputs:out
            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)
            float2 ui:nodegraph:node:size = (114, 36)
            int ui:nodegraph:node:stackingOrder = 1363
        }
    }
}



================================================
FILE: Battery Life/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    reorder nameChildren = ["GridMaterial", "Sphere"]
    rel material:binding = None (
        bindMaterialAs = "weakerThanDescendants"
    )

    def Sphere "Sphere" (
        active = true
        prepend apiSchemas = ["MaterialBindingAPI"]
    )
    {
        rel material:binding = </Root/GridMaterial/GridMaterial> (
            bindMaterialAs = "weakerThanDescendants"
        )
        double radius = 0.05
        quatf xformOp:orient = (1, 0, 0, 0)
        float3 xformOp:scale = (1, 1, 1)
        float3 xformOp:translate = (0, 0, 0.0004)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]

        def RealityKitComponent "Collider"
        {
            uint group = 1
            uniform token info:id = "RealityKit.Collider"
            uint mask = 4294967295
            token type = "Default"

            def RealityKitStruct "Shape"
            {
                float3 extent = (0.2, 0.2, 0.2)
                float radius = 0.05
                token shapeType = "Sphere"
            }
        }

        def RealityKitComponent "InputTarget"
        {
            uniform token info:id = "RealityKit.InputTarget"
        }
    }

    def "GridMaterial" (
        active = true
        prepend references = @Materials/GridMaterial.usda@
    )
    {
        float3 xformOp:scale = (1, 1, 1)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }
}



================================================
FILE: Battery Life/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift
================================================
import Foundation

/// Bundle for the RealityKitContent project
public let realityKitContentBundle = Bundle.module


================================================
FILE: Battery Life/README.md
================================================
# Battery Life

Display the Apple Vision Pro's battery level and status

https://github.com/IvanCampos/visionOS-examples/assets/872137/e7f392f8-ea44-4ca8-9d55-457e35365acc


================================================
FILE: Battery Life/ViewModel.swift
================================================
//
//  ViewModel.swift
//  Battery Life
//
//  Created by IVAN CAMPOS on 3/13/24.
//

import SwiftUI

// BatteryViewModel.swift
class ViewModel: ObservableObject {
    @Published var batteryLevel: Float = UIDevice.current.batteryLevel
    @Published var batteryState: UIDevice.BatteryState = UIDevice.current.batteryState
    
    init() {
        UIDevice.current.isBatteryMonitoringEnabled = true
        
        updateBatteryStatus()
        
        NotificationCenter.default.addObserver(self, selector: #selector(updateBatteryStatus), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(updateBatteryStatus), name: UIDevice.batteryStateDidChangeNotification, object: nil)
    }
    
    @objc private func updateBatteryStatus() {
        self.batteryLevel = UIDevice.current.batteryLevel
        self.batteryState = UIDevice.current.batteryState
    }
    
    deinit {
        NotificationCenter.default.removeObserver(self)
    }
}


================================================
FILE: ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  },
  "layers" : [
    {
      "filename" : "Front.solidimagestacklayer"
    },
    {
      "filename" : "Middle.solidimagestacklayer"
    },
    {
      "filename" : "Back.solidimagestacklayer"
    }
  ]
}


================================================
FILE: ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: ChatAVP/ChatAVP/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: ChatAVP/ChatAVP/ChatAVPApp.swift
================================================
//
//  ChatAVPApp.swift
//  ChatAVP
//
//  Created by IVAN CAMPOS on 1/26/24.
//

import SwiftUI

@main
struct ChatAVPApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}


================================================
FILE: ChatAVP/ChatAVP/ContentView.swift
================================================
//
//  ContentView.swift
//  ChatAVP
//
//  Created by IVAN CAMPOS on 1/26/24.
//

import SwiftUI
import RealityKit
import RealityKitContent

struct ContentView: View {
    
    @State private var userInput: String = ""
    
    //API Response will be rendered here
    @State private var apiResponse: String = ""
    
    private var openAiApiKey: String = Secrets.OPENAI_API_KEY // Replace this with your actual OpenAI API key
    
    var body: some View {
        VStack {
            
            SearchBar(text: $userInput, onSearchButtonClicked: {
                sendToOpenAI(input: userInput)
            })
            
            ScrollView {
                TypewriterText(fullText: apiResponse, speed: 0.05)
                    .padding()
            }
        }
        .padding(.top)
    }
    
    func sendToOpenAI(input: String) {
        // Ensure the URL is correct and safe to use
        guard let url = URL(string: "https://api.openai.com/v1/chat/completions") else {
            print("Invalid URL")
            return
        }
        
        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.addValue("Bearer \(openAiApiKey)", forHTTPHeaderField: "Authorization") // Replace YOUR_API_KEY with your actual API key
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        
        // Prepare the body with correct parameters
        let body: [String: Any] = [
            "model": "gpt-3.5-turbo",
            "messages": [
                ["role": "user", "content": input]
            ]
        ]
        
        // Ensure the request's body can be encoded
        guard let httpBody = try? JSONSerialization.data(withJSONObject: body, options: []) else {
            print("Failed to serialize body")
            return
        }
        request.httpBody = httpBody
        
        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            if let error = error {
                DispatchQueue.main.async {
                    self.apiResponse = "Error making request: \(error.localizedDescription)"
                }
                return
            }
            
            guard let httpResponse = response as? HTTPURLResponse, (200...299).contains(httpResponse.statusCode) else {
                DispatchQueue.main.async {
                    self.apiResponse = "Error: Server returned an error status code."
                }
                return
            }
            
            guard let data = data else {
                DispatchQueue.main.async {
                    self.apiResponse = "Error: No data received."
                }
                return
            }
            
            // Decode the JSON response
            do {
                let decoder = JSONDecoder()
                let response = try decoder.decode(OpenAIResponse.self, from: data)
                DispatchQueue.main.async {
                    // Update the UI with the first choice's text
                    self.apiResponse = response.choices.first?.message.content ?? "No response text."
                }
            } catch {
                DispatchQueue.main.async {
                    self.apiResponse = "Error decoding response: \(error.localizedDescription)"
                }
            }
        }
        task.resume()
    }
    
    struct OpenAIResponse: Codable {
        let choices: [Choice]
    }
    
    struct Choice: Codable {
        let message: Message
    }
    
    struct Message: Codable {
        let role: String
        let content: String
    }
    
}


================================================
FILE: ChatAVP/ChatAVP/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>UIApplicationSceneManifest</key>
	<dict>
		<key>UIApplicationPreferredDefaultSceneSessionRole</key>
		<string>UIWindowSceneSessionRoleApplication</string>
		<key>UIApplicationSupportsMultipleScenes</key>
		<true/>
		<key>UISceneConfigurations</key>
		<dict/>
	</dict>
</dict>
</plist>


================================================
FILE: ChatAVP/ChatAVP/Preview Content/Preview Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: ChatAVP/ChatAVP/SearchBar.swift
================================================
//
//  SearchBar.swift
//  ChatAVP
//
//  Created by IVAN CAMPOS on 2/15/24.
//

import SwiftUI

struct SearchBar: UIViewRepresentable {
    @Binding var text: String
    var onSearchButtonClicked: () -> Void
    
    class Coordinator: NSObject, UISearchBarDelegate {
        var parent: SearchBar
        
        init(_ parent: SearchBar) {
            self.parent = parent
        }
        
        func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
            parent.text = searchText
        }
        
        func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
            parent.onSearchButtonClicked()
            searchBar.resignFirstResponder()
        }
        
        func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
            searchBar.resignFirstResponder()
        }
    }
    
    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }
    
    func makeUIView(context: Context) -> UISearchBar {
        let searchBar = UISearchBar(frame: .zero)
        searchBar.delegate = context.coordinator
        searchBar.searchBarStyle = .minimal
        searchBar.placeholder = "Enter your prompt here"
        
        return searchBar
    }
    
    func updateUIView(_ uiView: UISearchBar, context: Context) {
        uiView.text = text
    }
}


================================================
FILE: ChatAVP/ChatAVP/TypewriterEffect.swift
================================================
//
//  TypewriterEffect.swift
//  ChatAVP
//
//  Created by IVAN CAMPOS on 2/18/24.
//

import SwiftUI

struct TypewriterText: View {
    let fullText: String
    let speed: TimeInterval
    @State private var visibleCharactersCount: Int = 0
    private let timer = Timer.publish(every: 0.05, on: .main, in: .common).autoconnect()

    var body: some View {
        Text(String(fullText.prefix(visibleCharactersCount)))
            .font(.system(size: 24, weight: .bold, design: .monospaced)) // Customize font as needed
            .padding()
            .lineLimit(nil) // Ensure there is no line limit
            .fixedSize(horizontal: false, vertical: true) // Allow the text to grow vertically
            .multilineTextAlignment(.leading) // Align text to the left
            .onReceive(timer) { _ in
                // Incrementally reveal the text
                if visibleCharactersCount < fullText.count {
                    visibleCharactersCount += 1
                } else {
                    timer.upstream.connect().cancel() // Stop the timer when the entire text is displayed
                }
            }
            .onAppear {
                // Reset the visible character count when the view appears
                visibleCharactersCount = 0
            }
    }
}


================================================
FILE: ChatAVP/ChatAVP.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 56;
	objects = {

/* Begin PBXBuildFile section */
		3B3A05B52B64B149008FF558 /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B3A05B42B64B149008FF558 /* RealityKitContent */; };
		3B3A05B72B64B149008FF558 /* ChatAVPApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A05B62B64B149008FF558 /* ChatAVPApp.swift */; };
		3B3A05B92B64B149008FF558 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A05B82B64B149008FF558 /* ContentView.swift */; };
		3B3A05BB2B64B14A008FF558 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B3A05BA2B64B14A008FF558 /* Assets.xcassets */; };
		3B3A05BE2B64B14A008FF558 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B3A05BD2B64B14A008FF558 /* Preview Assets.xcassets */; };
		3B3C71E32B82A30E00167B5B /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3C71E22B82A30E00167B5B /* SearchBar.swift */; };
		3B3C71E52B82AC9E00167B5B /* TypewriterEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3C71E42B82AC9E00167B5B /* TypewriterEffect.swift */; };
		3B3D81C72B829D6900096853 /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3D81C62B829D6900096853 /* Secrets.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
		3B3A05AF2B64B149008FF558 /* ChatAVP.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ChatAVP.app; sourceTree = BUILT_PRODUCTS_DIR; };
		3B3A05B32B64B149008FF558 /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = "<group>"; };
		3B3A05B62B64B149008FF558 /* ChatAVPApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatAVPApp.swift; sourceTree = "<group>"; };
		3B3A05B82B64B149008FF558 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
		3B3A05BA2B64B14A008FF558 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		3B3A05BD2B64B14A008FF558 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
		3B3A05BF2B64B14A008FF558 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		3B3C71E22B82A30E00167B5B /* SearchBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = "<group>"; };
		3B3C71E42B82AC9E00167B5B /* TypewriterEffect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypewriterEffect.swift; sourceTree = "<group>"; };
		3B3D81C62B829D6900096853 /* Secrets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Secrets.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		3B3A05AC2B64B149008FF558 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3B3A05B52B64B149008FF558 /* RealityKitContent in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		3B3A05A62B64B149008FF558 = {
			isa = PBXGroup;
			children = (
				3B3A05B12B64B149008FF558 /* ChatAVP */,
				3B3A05B22B64B149008FF558 /* Packages */,
				3B3A05B02B64B149008FF558 /* Products */,
			);
			sourceTree = "<group>";
		};
		3B3A05B02B64B149008FF558 /* Products */ = {
			isa = PBXGroup;
			children = (
				3B3A05AF2B64B149008FF558 /* ChatAVP.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		3B3A05B12B64B149008FF558 /* ChatAVP */ = {
			isa = PBXGroup;
			children = (
				3B3A05B62B64B149008FF558 /* ChatAVPApp.swift */,
				3B3A05B82B64B149008FF558 /* ContentView.swift */,
				3B3C71E22B82A30E00167B5B /* SearchBar.swift */,
				3B3D81C62B829D6900096853 /* Secrets.swift */,
				3B3C71E42B82AC9E00167B5B /* TypewriterEffect.swift */,
				3B3A05BA2B64B14A008FF558 /* Assets.xcassets */,
				3B3A05BF2B64B14A008FF558 /* Info.plist */,
				3B3A05BC2B64B14A008FF558 /* Preview Content */,
			);
			path = ChatAVP;
			sourceTree = "<group>";
		};
		3B3A05B22B64B149008FF558 /* Packages */ = {
			isa = PBXGroup;
			children = (
				3B3A05B32B64B149008FF558 /* RealityKitContent */,
			);
			path = Packages;
			sourceTree = "<group>";
		};
		3B3A05BC2B64B14A008FF558 /* Preview Content */ = {
			isa = PBXGroup;
			children = (
				3B3A05BD2B64B14A008FF558 /* Preview Assets.xcassets */,
			);
			path = "Preview Content";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		3B3A05AE2B64B149008FF558 /* ChatAVP */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 3B3A05C22B64B14A008FF558 /* Build configuration list for PBXNativeTarget "ChatAVP" */;
			buildPhases = (
				3B3A05AB2B64B149008FF558 /* Sources */,
				3B3A05AC2B64B149008FF558 /* Frameworks */,
				3B3A05AD2B64B149008FF558 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = ChatAVP;
			packageProductDependencies = (
				3B3A05B42B64B149008FF558 /* RealityKitContent */,
			);
			productName = chatAVP;
			productReference = 3B3A05AF2B64B149008FF558 /* ChatAVP.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		3B3A05A72B64B149008FF558 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				BuildIndependentTargetsInParallel = 1;
				LastSwiftUpdateCheck = 1520;
				LastUpgradeCheck = 1520;
				TargetAttributes = {
					3B3A05AE2B64B149008FF558 = {
						CreatedOnToolsVersion = 15.2;
					};
				};
			};
			buildConfigurationList = 3B3A05AA2B64B149008FF558 /* Build configuration list for PBXProject "ChatAVP" */;
			compatibilityVersion = "Xcode 14.0";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 3B3A05A62B64B149008FF558;
			productRefGroup = 3B3A05B02B64B149008FF558 /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				3B3A05AE2B64B149008FF558 /* ChatAVP */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		3B3A05AD2B64B149008FF558 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3B3A05BE2B64B14A008FF558 /* Preview Assets.xcassets in Resources */,
				3B3A05BB2B64B14A008FF558 /* Assets.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		3B3A05AB2B64B149008FF558 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3B3A05B92B64B149008FF558 /* ContentView.swift in Sources */,
				3B3C71E32B82A30E00167B5B /* SearchBar.swift in Sources */,
				3B3D81C72B829D6900096853 /* Secrets.swift in Sources */,
				3B3A05B72B64B149008FF558 /* ChatAVPApp.swift in Sources */,
				3B3C71E52B82AC9E00167B5B /* TypewriterEffect.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		3B3A05C02B64B14A008FF558 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				ENABLE_USER_SCRIPT_SANDBOXING = YES;
				GCC_C_LANGUAGE_STANDARD = gnu17;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
				MTL_FAST_MATH = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = xros;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				XROS_DEPLOYMENT_TARGET = 1.0;
			};
			name = Debug;
		};
		3B3A05C12B64B14A008FF558 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_USER_SCRIPT_SANDBOXING = YES;
				GCC_C_LANGUAGE_STANDARD = gnu17;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
				MTL_ENABLE_DEBUG_INFO = NO;
				MTL_FAST_MATH = YES;
				SDKROOT = xros;
				SWIFT_COMPILATION_MODE = wholemodule;
				VALIDATE_PRODUCT = YES;
				XROS_DEPLOYMENT_TARGET = 1.0;
			};
			name = Release;
		};
		3B3A05C32B64B14A008FF558 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"chatAVP/Preview Content\"";
				DEVELOPMENT_TEAM = 2DJDH872JZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.chatAVP;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SUPPORTED_PLATFORMS = "xros xrsimulator";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2,7";
			};
			name = Debug;
		};
		3B3A05C42B64B14A008FF558 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"chatAVP/Preview Content\"";
				DEVELOPMENT_TEAM = 2DJDH872JZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.chatAVP;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SUPPORTED_PLATFORMS = "xros xrsimulator";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2,7";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		3B3A05AA2B64B149008FF558 /* Build configuration list for PBXProject "ChatAVP" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3B3A05C02B64B14A008FF558 /* Debug */,
				3B3A05C12B64B14A008FF558 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		3B3A05C22B64B14A008FF558 /* Build configuration list for PBXNativeTarget "ChatAVP" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3B3A05C32B64B14A008FF558 /* Debug */,
				3B3A05C42B64B14A008FF558 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */

/* Begin XCSwiftPackageProductDependency section */
		3B3A05B42B64B149008FF558 /* RealityKitContent */ = {
			isa = XCSwiftPackageProductDependency;
			productName = RealityKitContent;
		};
/* End XCSwiftPackageProductDependency section */
	};
	rootObject = 3B3A05A72B64B149008FF558 /* Project object */;
}


================================================
FILE: ChatAVP/ChatAVP.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:/Users/ivancampos/Code/visionOS/ChatAVP/ChatAVP.xcodeproj">
   </FileRef>
</Workspace>


================================================
FILE: ChatAVP/ChatAVP.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: ChatAVP/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json
================================================
{
  "pathsToIds" : {
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/GridMaterial.usda" : "440DE5B4-E4E4-459B-AABF-9ACE96319272",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/procedural_sphere_grid.usda" : "34C460AE-CA1B-4348-BD05-621ACBDFFE97",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Scene.usda" : "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Untitled Scene.usda" : "03E02005-EFA6-48D6-8A76-05B2822A74E9",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/GridMaterial.usda" : "FBD8436F-6B8B-4B82-99B5-995D538B4704",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/procedural_sphere_grid.usda" : "1CBF3893-ABFD-408C-8B91-045BFD257808",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Scene.usda" : "26DBAE76-5DD8-47B6-A085-1B4ADA111097"
  }
}

================================================
FILE: ChatAVP/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json
================================================
{
  "0A9B4653-B11E-4D6A-850E-C6FCB621626C" : {
    "cameraTransform" : [
      0.9807314,
      -1.9820146e-10,
      -0.195361,
      0,
      -0.10051192,
      0.85749435,
      -0.5045798,
      0,
      0.16752096,
      0.51449335,
      0.84097165,
      0,
      0.09084191,
      0.05849296,
      0.13903293,
      1
    ],
    "objectMetadataList" : [
      [
        "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
        "Root",
        "GridMaterial"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
        "Root",
        "Sphere"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "1CBF3893-ABFD-408C-8B91-045BFD257808" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660255,
      -0.49999988,
      0,
      0,
      0.49999988,
      0.8660255,
      0,
      0,
      0.27093542,
      0.46927398,
      1
    ],
    "objectMetadataList" : [

    ]
  },
  "03E02005-EFA6-48D6-8A76-05B2822A74E9" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660254,
      -0.49999994,
      0,
      0,
      0.49999994,
      0.8660254,
      0,
      0,
      0.5981957,
      1.0361054,
      1
    ],
    "objectMetadataList" : [

    ]
  },
  "26DBAE76-5DD8-47B6-A085-1B4ADA111097" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.7071069,
      -0.7071067,
      0,
      0,
      0.7071067,
      0.7071069,
      0,
      0,
      0.2681068,
      0.26850593,
      1
    ],
    "objectMetadataList" : [
      [
        "26DBAE76-5DD8-47B6-A085-1B4ADA111097",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "34C460AE-CA1B-4348-BD05-621ACBDFFE97" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660255,
      -0.49999988,
      0,
      0,
      0.49999988,
      0.8660255,
      0,
      0,
      0.27093542,
      0.46927398,
      1
    ],
    "objectMetadataList" : [

    ]
  },
  "440DE5B4-E4E4-459B-AABF-9ACE96319272" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660254,
      -0.49999994,
      0,
      0,
      0.49999994,
      0.8660254,
      0,
      0,
      0.5981957,
      1.0361054,
      1
    ],
    "objectMetadataList" : [
      [
        "440DE5B4-E4E4-459B-AABF-9ACE96319272",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "FBD8436F-6B8B-4B82-99B5-995D538B4704" : {
    "cameraTransform" : [
      0.99999994,
      0,
      -0,
      0,
      -0,
      0.8660254,
      -0.49999994,
      0,
      0,
      0.49999994,
      0.8660254,
      0,
      0,
      0.5981957,
      1.0361054,
      1
    ],
    "objectMetadataList" : [
      [
        "FBD8436F-6B8B-4B82-99B5-995D538B4704",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  }
}

================================================
FILE: ChatAVP/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata
================================================
{
  "cameraPresets" : {

  },
  "secondaryToolbarData" : {
    "isGridVisible" : true,
    "sceneReverbPreset" : -1
  },
  "unitDefaults" : {
    "°" : "°",
    "kg" : "g",
    "m" : "cm",
    "m\/s" : "m\/s",
    "m\/s²" : "m\/s²",
    "s" : "s"
  }
}

================================================
FILE: ChatAVP/Packages/RealityKitContent/Package.swift
================================================
// swift-tools-version:5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "RealityKitContent",
    products: [
        // Products define the executables and libraries a package produces, and make them visible to other packages.
        .library(
            name: "RealityKitContent",
            targets: ["RealityKitContent"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
        .target(
            name: "RealityKitContent",
            dependencies: []),
    ]
)

================================================
FILE: ChatAVP/Packages/RealityKitContent/README.md
================================================
# RealityKitContent

A description of this package.

================================================
FILE: ChatAVP/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    def Material "GridMaterial"
    {
        reorder nameChildren = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "DefaultSurfaceShader", "MaterialXPreviewSurface", "Texcoord", "Add", "Multiply", "Fractional", "LineCounts", "Multiply_1", "Separate2", "Separate2_1", "Ifgreater", "Ifgreater_1", "Max", "Background_Color"]
        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>
        token outputs:realitykit:vertex
        token outputs:surface
        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)
        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)
        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749

        def Shader "DefaultSurfaceShader"
        {
            uniform token info:id = "UsdPreviewSurface"
            color3f inputs:diffuseColor = (1, 1, 1)
            float inputs:roughness = 0.75
            token outputs:surface
        }

        def Shader "MaterialXPreviewSurface"
        {
            uniform token info:id = "ND_UsdPreviewSurface_surfaceshader"
            float inputs:clearcoat
            float inputs:clearcoatRoughness
            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>
            color3f inputs:emissiveColor
            float inputs:ior
            float inputs:metallic = 0.15
            float3 inputs:normal
            float inputs:occlusion
            float inputs:opacity
            float inputs:opacityThreshold
            float inputs:roughness = 0.5
            token outputs:out
            float2 ui:nodegraph:node:pos = (1967, 300.5)
            float2 ui:nodegraph:node:size = (208, 297)
            int ui:nodegraph:node:stackingOrder = 870
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["Advanced"]
        }

        def Shader "Texcoord"
        {
            uniform token info:id = "ND_texcoord_vector2"
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)
            float2 ui:nodegraph:node:size = (182, 43)
            int ui:nodegraph:node:stackingOrder = 1358
        }

        def Shader "Multiply"
        {
            uniform token info:id = "ND_multiply_vector2"
            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>
            float2 inputs:in2 = (32, 15)
            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)
            float2 ui:nodegraph:node:size = (61, 36)
            int ui:nodegraph:node:stackingOrder = 1348
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["inputs:in2"]
        }

        def Shader "Fractional"
        {
            uniform token info:id = "ND_realitykit_fractional_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (440.5, 49.5)
            float2 ui:nodegraph:node:size = (155, 99)
            int ui:nodegraph:node:stackingOrder = 1345
        }

        def Shader "BaseColor"
        {
            uniform token info:id = "ND_constant_color3"
            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (
                colorSpace = "Input - Texture - sRGB - sRGB"
            )
            color3f inputs:value.connect = None
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)
            float2 ui:nodegraph:node:size = (150, 43)
            int ui:nodegraph:node:stackingOrder = 1353
        }

        def Shader "LineColor"
        {
            uniform token info:id = "ND_constant_color3"
            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (
                colorSpace = "Input - Texture - sRGB - sRGB"
            )
            color3f inputs:value.connect = None
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)
            float2 ui:nodegraph:node:size = (146, 43)
            int ui:nodegraph:node:stackingOrder = 1355
        }

        def Shader "LineWidths"
        {
            uniform token info:id = "ND_combine2_vector2"
            float inputs:in1 = 0.1
            float inputs:in2 = 0.1
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)
            float2 ui:nodegraph:node:size = (151, 43)
            int ui:nodegraph:node:stackingOrder = 1361
        }

        def Shader "LineCounts"
        {
            uniform token info:id = "ND_combine2_vector2"
            float inputs:in1 = 24
            float inputs:in2 = 12
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)
            float2 ui:nodegraph:node:size = (153, 43)
            int ui:nodegraph:node:stackingOrder = 1359
        }

        def Shader "Remap"
        {
            uniform token info:id = "ND_remap_color3"
            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>
            color3f inputs:inhigh.connect = None
            color3f inputs:inlow.connect = None
            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>
            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1755.5, 300.5)
            float2 ui:nodegraph:node:size = (95, 171)
            int ui:nodegraph:node:stackingOrder = 1282
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["inputs:outlow"]
        }

        def Shader "Separate2"
        {
            uniform token info:id = "ND_separate2_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>
            float outputs:outx
            float outputs:outy
            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)
            float2 ui:nodegraph:node:size = (116, 117)
            int ui:nodegraph:node:stackingOrder = 1363
        }

        def Shader "Combine3"
        {
            uniform token info:id = "ND_combine3_color3"
            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>
            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>
            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)
            float2 ui:nodegraph:node:size = (146, 54)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Range"
        {
            uniform token info:id = "ND_range_vector2"
            bool inputs:doclamp = 1
            float2 inputs:gamma = (2, 2)
            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>
            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>
            float2 inputs:inlow = (0.02, 0.02)
            float2 inputs:outhigh
            float2 inputs:outlow
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)
            float2 ui:nodegraph:node:size = (98, 207)
            int ui:nodegraph:node:stackingOrder = 1364
        }

        def Shader "Subtract"
        {
            uniform token info:id = "ND_subtract_vector2"
            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>
            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)
            float2 ui:nodegraph:node:size = (63, 36)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Absval"
        {
            uniform token info:id = "ND_absval_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)
            float2 ui:nodegraph:node:size = (123, 43)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Min"
        {
            uniform token info:id = "ND_min_float"
            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>
            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>
            float outputs:out
            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)
            float2 ui:nodegraph:node:size = (114, 36)
            int ui:nodegraph:node:stackingOrder = 1363
        }
    }
}



================================================
FILE: ChatAVP/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    reorder nameChildren = ["GridMaterial", "Sphere"]
    rel material:binding = None (
        bindMaterialAs = "weakerThanDescendants"
    )

    def Sphere "Sphere" (
        active = true
        prepend apiSchemas = ["MaterialBindingAPI"]
    )
    {
        rel material:binding = </Root/GridMaterial/GridMaterial> (
            bindMaterialAs = "weakerThanDescendants"
        )
        double radius = 0.05
        quatf xformOp:orient = (1, 0, 0, 0)
        float3 xformOp:scale = (1, 1, 1)
        float3 xformOp:translate = (0, 0, 0.0004)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]

        def RealityKitComponent "Collider"
        {
            uint group = 1
            uniform token info:id = "RealityKit.Collider"
            uint mask = 4294967295
            token type = "Default"

            def RealityKitStruct "Shape"
            {
                float3 extent = (0.2, 0.2, 0.2)
                float radius = 0.05
                token shapeType = "Sphere"
            }
        }

        def RealityKitComponent "InputTarget"
        {
            uniform token info:id = "RealityKit.InputTarget"
        }
    }

    def "GridMaterial" (
        active = true
        prepend references = @Materials/GridMaterial.usda@
    )
    {
        float3 xformOp:scale = (1, 1, 1)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }
}



================================================
FILE: ChatAVP/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift
================================================
import Foundation

/// Bundle for the RealityKitContent project
public let realityKitContentBundle = Bundle.module


================================================
FILE: ChatAVP/README.md
================================================
# ChatAVP
**Chat Apple Vision Pro (ChatAVP):** Chat with the OpenAI API for visionOS  

## Instructions
***Before running locally,*** be sure to update the following line in ContentView.swift:
* **From:**
`private var openAiApiKey: String = Secrets.OPENAI_API_KEY // Replace this with your actual OpenAI API key`
* **To:**
`private var openAiApiKey: String = "sk-##############..."`
<br/>

https://github.com/IvanCampos/visionOS-examples/assets/872137/11528bf5-edcf-457b-b822-7b430fc1dd30


================================================
FILE: Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  },
  "layers" : [
    {
      "filename" : "Front.solidimagestacklayer"
    },
    {
      "filename" : "Middle.solidimagestacklayer"
    },
    {
      "filename" : "Back.solidimagestacklayer"
    }
  ]
}


================================================
FILE: Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Countdown/Countdown/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

================================================
FILE: Countdown/Countdown/ContentView.swift
================================================
//
//  ContentView.swift
//  Countdown
//
//  Created by IVAN CAMPOS on 3/17/24.
//

import SwiftUI
import RealityKit
import RealityKitContent

struct ContentView: View {
    
    @State private var showImmersiveSpace = false
    @State private var immersiveSpaceIsShown = false
    
    @Environment(\.openImmersiveSpace) var openImmersiveSpace
    @Environment(\.dismissImmersiveSpace) var dismissImmersiveSpace
    
    var body: some View {
        VStack {
            Model3D(named: "Scene", bundle: realityKitContentBundle)
                .padding(.bottom, 50)
            
            Toggle("Show Immersive Space", isOn: $showImmersiveSpace)
                .toggleStyle(.button)
                .padding(.top, 50)
        }
        .padding()
        .onChange(of: showImmersiveSpace) { _, newValue in
            Task {
                if newValue {
                    switch await openImmersiveSpace(id: "ImmersiveSpace") {
                    case .opened:
                        immersiveSpaceIsShown = true
                    case .error, .userCancelled:
                        fallthrough
                    @unknown default:
                        immersiveSpaceIsShown = false
                        showImmersiveSpace = false
                    }
                } else if immersiveSpaceIsShown {
                    await dismissImmersiveSpace()
                    immersiveSpaceIsShown = false
                }
            }
        }
    }
}


================================================
FILE: Countdown/Countdown/CountdownApp.swift
================================================
//
//  CountdownApp.swift
//  Countdown
//
//  Created by IVAN CAMPOS on 3/17/24.
//

import SwiftUI

@main
struct CountdownApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        
        ImmersiveSpace(id: "ImmersiveSpace") {
            ImmersiveView()
        }
    }
}


================================================
FILE: Countdown/Countdown/Extensions.swift
================================================
//
//  Extensions.swift
//  Countdown
//
//  Created by IVAN CAMPOS on 3/17/24.
//

import SwiftUI

// Function to create UIColor from hex string
extension UIColor {
    convenience init(hex: String) {
        
        let hexString = hex.trimmingCharacters(in: .whitespacesAndNewlines)
        let scanner = Scanner(string: hexString)
        
        var color: UInt64 = 0
        scanner.scanHexInt64(&color)
        
        let r = CGFloat((color & 0xFF0000) >> 16) / 255.0
        let g = CGFloat((color & 0x00FF00) >> 8) / 255.0
        let b = CGFloat(color & 0x0000FF) / 255.0
        
        self.init(red: r, green: g, blue: b, alpha: 1.0)
    }
}


================================================
FILE: Countdown/Countdown/ImmersiveView.swift
================================================
//
//  ImmersiveView.swift
//  Countdown
//
//  Created by IVAN CAMPOS on 3/17/24.
//

import SwiftUI
import RealityKit
import RealityKitContent

struct ImmersiveView: View {
    
    let BASE_FONT = "Audiowide-Regular"
    let BASE_TEXTURE = "Starfield.jpg"
    let TEXTURE_NOT_FOUND = "Base Texture Not Found!"
    let COUNTDOWN_COLOR = "ff9900"
    let END_MESSAGE = "GAME\nOVER"
    let END_MESSAGE_COLOR = "FF0000"
    let FONT_SIZE = 0.3
    
    var body: some View {
        
        let timerEntity = createTimer()
        
        RealityView { content in
            content.add(timerEntity)
            
            var resource = try! await TextureResource.load(named: BASE_TEXTURE)
            
            var material = SimpleMaterial()
            material.color = SimpleMaterial.BaseColor(tint: .white, texture: .init(resource))
            
            let environment = Entity()
            environment.components.set(ModelComponent(
                mesh: .generateSphere(radius: 2000),
                materials: [material]
            ))
            environment.scale *= .init(x: -2, y: 2, z: 2)
            content.add(environment)
        }
    }
    
    func updatePosition(entity: Entity, x: Float, y: Float, z: Float) {
        entity.position = SIMD3<Float>(x, y, z)
    }
    
    func createTimer() -> ModelEntity {
        
        var startTime = 10
        var timer: Timer?
        
        let timerEntity = ModelEntity(
            mesh: .generateText(String(startTime), extrusionDepth: 0, font: UIFont(name: BASE_FONT, size: FONT_SIZE) ?? .systemFont(ofSize: FONT_SIZE), containerFrame: .zero,
                                alignment: .center, lineBreakMode: .byCharWrapping),
            materials: [SimpleMaterial(color: UIColor(hex: COUNTDOWN_COLOR), isMetallic: false)]
        )
        
        updatePosition(entity: timerEntity, x: 0.0, y: 1.75, z: -2)
        
        timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in
            startTime = startTime - 1
            
            if (startTime >= 0) {
                
                DispatchQueue.main.async {
                    timerEntity.model?.mesh = .generateText(String(startTime), extrusionDepth: 0, font: UIFont(name: BASE_FONT, size: FONT_SIZE) ?? .systemFont(ofSize: FONT_SIZE), containerFrame: .zero, alignment: .center, lineBreakMode: .byCharWrapping)
                    pulseEffect(entity: timerEntity)
                }
            } else {
                timer?.invalidate()
                
                DispatchQueue.main.async {
                    updatePosition(entity: timerEntity, x: -1.25, y: 1.75, z: -2)
                    timerEntity.model?.mesh = .generateText(END_MESSAGE, extrusionDepth: 0, font: UIFont(name: BASE_FONT, size: FONT_SIZE) ?? .systemFont(ofSize: FONT_SIZE), containerFrame: .zero, alignment: .center, lineBreakMode: .byCharWrapping)
                    timerEntity.model?.materials = [SimpleMaterial(color: UIColor(hex: END_MESSAGE_COLOR), isMetallic: false)]
                }
            }
        }
        
        return timerEntity
    }
    
    func pulseEffect(entity: ModelEntity) {
        
        let initialScale = entity.scale
        let SCALE: Float = 3.0
        let largerScale = SIMD3<Float>(initialScale.x * SCALE, initialScale.y * SCALE, initialScale.z * SCALE)
        
        entity.scale = largerScale
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
            entity.scale = initialScale
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
                entity.scale = initialScale
            }
        }
    }
}


================================================
FILE: Countdown/Countdown/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>UIAppFonts</key>
	<array>
		<string>Audiowide-Regular.ttf</string>
	</array>
	<key>UIApplicationSceneManifest</key>
	<dict>
		<key>UIApplicationPreferredDefaultSceneSessionRole</key>
		<string>UISceneSessionRoleImmersiveSpaceApplication</string>
		<key>UIApplicationSupportsMultipleScenes</key>
		<true/>
		<key>UISceneConfigurations</key>
		<dict/>
	</dict>
</dict>
</plist>


================================================
FILE: Countdown/Countdown/Preview Content/Preview Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: Countdown/Countdown.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 56;
	objects = {

/* Begin PBXBuildFile section */
		3B2A044F2BA78446005543D6 /* RealityKitContent in Frameworks */ = {isa = PBXBuildFile; productRef = 3B2A044E2BA78446005543D6 /* RealityKitContent */; };
		3B2A04512BA78446005543D6 /* CountdownApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A04502BA78446005543D6 /* CountdownApp.swift */; };
		3B2A04532BA78446005543D6 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A04522BA78446005543D6 /* ContentView.swift */; };
		3B2A04552BA78446005543D6 /* ImmersiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A04542BA78446005543D6 /* ImmersiveView.swift */; };
		3B2A04572BA78447005543D6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A04562BA78447005543D6 /* Assets.xcassets */; };
		3B2A045A2BA78447005543D6 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A04592BA78447005543D6 /* Preview Assets.xcassets */; };
		3B2A04692BA7878B005543D6 /* Starfield.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A04672BA78737005543D6 /* Starfield.jpg */; };
		3B2A046A2BA7878B005543D6 /* Audiowide-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3B2A04682BA7873F005543D6 /* Audiowide-Regular.ttf */; };
		3B2A046E2BA7886F005543D6 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2A046D2BA7886F005543D6 /* Extensions.swift */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
		3B2A04492BA78446005543D6 /* Countdown.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Countdown.app; sourceTree = BUILT_PRODUCTS_DIR; };
		3B2A044D2BA78446005543D6 /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = "<group>"; };
		3B2A04502BA78446005543D6 /* CountdownApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountdownApp.swift; sourceTree = "<group>"; };
		3B2A04522BA78446005543D6 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
		3B2A04542BA78446005543D6 /* ImmersiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImmersiveView.swift; sourceTree = "<group>"; };
		3B2A04562BA78447005543D6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		3B2A04592BA78447005543D6 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
		3B2A045B2BA78447005543D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		3B2A04672BA78737005543D6 /* Starfield.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = Starfield.jpg; sourceTree = "<group>"; };
		3B2A04682BA7873F005543D6 /* Audiowide-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Audiowide-Regular.ttf"; sourceTree = "<group>"; };
		3B2A046D2BA7886F005543D6 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		3B2A04462BA78446005543D6 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3B2A044F2BA78446005543D6 /* RealityKitContent in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		3B2A04402BA78446005543D6 = {
			isa = PBXGroup;
			children = (
				3B2A044B2BA78446005543D6 /* Countdown */,
				3B2A044C2BA78446005543D6 /* Packages */,
				3B2A044A2BA78446005543D6 /* Products */,
			);
			sourceTree = "<group>";
		};
		3B2A044A2BA78446005543D6 /* Products */ = {
			isa = PBXGroup;
			children = (
				3B2A04492BA78446005543D6 /* Countdown.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		3B2A044B2BA78446005543D6 /* Countdown */ = {
			isa = PBXGroup;
			children = (
				3B2A046C2BA787BB005543D6 /* Fonts */,
				3B2A046B2BA787B1005543D6 /* Textures */,
				3B2A04502BA78446005543D6 /* CountdownApp.swift */,
				3B2A04522BA78446005543D6 /* ContentView.swift */,
				3B2A04542BA78446005543D6 /* ImmersiveView.swift */,
				3B2A046D2BA7886F005543D6 /* Extensions.swift */,
				3B2A04562BA78447005543D6 /* Assets.xcassets */,
				3B2A045B2BA78447005543D6 /* Info.plist */,
				3B2A04582BA78447005543D6 /* Preview Content */,
			);
			path = Countdown;
			sourceTree = "<group>";
		};
		3B2A044C2BA78446005543D6 /* Packages */ = {
			isa = PBXGroup;
			children = (
				3B2A044D2BA78446005543D6 /* RealityKitContent */,
			);
			path = Packages;
			sourceTree = "<group>";
		};
		3B2A04582BA78447005543D6 /* Preview Content */ = {
			isa = PBXGroup;
			children = (
				3B2A04592BA78447005543D6 /* Preview Assets.xcassets */,
			);
			path = "Preview Content";
			sourceTree = "<group>";
		};
		3B2A046B2BA787B1005543D6 /* Textures */ = {
			isa = PBXGroup;
			children = (
				3B2A04672BA78737005543D6 /* Starfield.jpg */,
			);
			path = Textures;
			sourceTree = "<group>";
		};
		3B2A046C2BA787BB005543D6 /* Fonts */ = {
			isa = PBXGroup;
			children = (
				3B2A04682BA7873F005543D6 /* Audiowide-Regular.ttf */,
			);
			path = Fonts;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		3B2A04482BA78446005543D6 /* Countdown */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 3B2A045E2BA78447005543D6 /* Build configuration list for PBXNativeTarget "Countdown" */;
			buildPhases = (
				3B2A04452BA78446005543D6 /* Sources */,
				3B2A04462BA78446005543D6 /* Frameworks */,
				3B2A04472BA78446005543D6 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = Countdown;
			packageProductDependencies = (
				3B2A044E2BA78446005543D6 /* RealityKitContent */,
			);
			productName = Countdown;
			productReference = 3B2A04492BA78446005543D6 /* Countdown.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		3B2A04412BA78446005543D6 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				BuildIndependentTargetsInParallel = 1;
				LastSwiftUpdateCheck = 1520;
				LastUpgradeCheck = 1520;
				TargetAttributes = {
					3B2A04482BA78446005543D6 = {
						CreatedOnToolsVersion = 15.2;
					};
				};
			};
			buildConfigurationList = 3B2A04442BA78446005543D6 /* Build configuration list for PBXProject "Countdown" */;
			compatibilityVersion = "Xcode 14.0";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 3B2A04402BA78446005543D6;
			productRefGroup = 3B2A044A2BA78446005543D6 /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				3B2A04482BA78446005543D6 /* Countdown */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		3B2A04472BA78446005543D6 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3B2A04692BA7878B005543D6 /* Starfield.jpg in Resources */,
				3B2A046A2BA7878B005543D6 /* Audiowide-Regular.ttf in Resources */,
				3B2A045A2BA78447005543D6 /* Preview Assets.xcassets in Resources */,
				3B2A04572BA78447005543D6 /* Assets.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		3B2A04452BA78446005543D6 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				3B2A04532BA78446005543D6 /* ContentView.swift in Sources */,
				3B2A046E2BA7886F005543D6 /* Extensions.swift in Sources */,
				3B2A04512BA78446005543D6 /* CountdownApp.swift in Sources */,
				3B2A04552BA78446005543D6 /* ImmersiveView.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		3B2A045C2BA78447005543D6 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				ENABLE_USER_SCRIPT_SANDBOXING = YES;
				GCC_C_LANGUAGE_STANDARD = gnu17;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
				MTL_FAST_MATH = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = xros;
				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				XROS_DEPLOYMENT_TARGET = 1.0;
			};
			name = Debug;
		};
		3B2A045D2BA78447005543D6 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_USER_SCRIPT_SANDBOXING = YES;
				GCC_C_LANGUAGE_STANDARD = gnu17;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
				MTL_ENABLE_DEBUG_INFO = NO;
				MTL_FAST_MATH = YES;
				SDKROOT = xros;
				SWIFT_COMPILATION_MODE = wholemodule;
				VALIDATE_PRODUCT = YES;
				XROS_DEPLOYMENT_TARGET = 1.0;
			};
			name = Release;
		};
		3B2A045F2BA78447005543D6 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"Countdown/Preview Content\"";
				DEVELOPMENT_TEAM = 2DJDH872JZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.Countdown;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SUPPORTED_PLATFORMS = "xros xrsimulator";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2,7";
			};
			name = Debug;
		};
		3B2A04602BA78447005543D6 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
				CODE_SIGN_STYLE = Automatic;
				CURRENT_PROJECT_VERSION = 1;
				DEVELOPMENT_ASSET_PATHS = "\"Countdown/Preview Content\"";
				DEVELOPMENT_TEAM = 2DJDH872JZ;
				ENABLE_PREVIEWS = YES;
				GENERATE_INFOPLIST_FILE = YES;
				INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				MARKETING_VERSION = 1.0;
				PRODUCT_BUNDLE_IDENTIFIER = com.ivancampos.Countdown;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SUPPORTED_PLATFORMS = "xros xrsimulator";
				SWIFT_EMIT_LOC_STRINGS = YES;
				SWIFT_VERSION = 5.0;
				TARGETED_DEVICE_FAMILY = "1,2,7";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		3B2A04442BA78446005543D6 /* Build configuration list for PBXProject "Countdown" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3B2A045C2BA78447005543D6 /* Debug */,
				3B2A045D2BA78447005543D6 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		3B2A045E2BA78447005543D6 /* Build configuration list for PBXNativeTarget "Countdown" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3B2A045F2BA78447005543D6 /* Debug */,
				3B2A04602BA78447005543D6 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */

/* Begin XCSwiftPackageProductDependency section */
		3B2A044E2BA78446005543D6 /* RealityKitContent */ = {
			isa = XCSwiftPackageProductDependency;
			productName = RealityKitContent;
		};
/* End XCSwiftPackageProductDependency section */
	};
	rootObject = 3B2A04412BA78446005543D6 /* Project object */;
}


================================================
FILE: Countdown/Countdown.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:">
   </FileRef>
</Workspace>


================================================
FILE: Countdown/Countdown.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>IDEDidComputeMac32BitWarning</key>
	<true/>
</dict>
</plist>


================================================
FILE: Countdown/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json
================================================
{
  "pathsToIds" : {
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/GridMaterial.usda" : "CB766F92-EE55-4A63-9401-E7B8C009764D",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Immersive.usda" : "65F6F990-A780-4474-B78B-572E0E4E273D",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Scene.usda" : "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
    "\/RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Untitled Scene.usda" : "D560BB77-AAF3-4BDE-B7C4-989332A4688B",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/GridMaterial.usda" : "66168B71-AB05-424E-8B6C-D33D6E61B08F",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Immersive.usda" : "AF09ED6F-1707-48FD-8720-65B998362C09",
    "RealityKitContent\/Sources\/RealityKitContent\/RealityKitContent.rkassets\/Scene.usda" : "D66134B1-3681-4A8E-AFE5-29F257229F3B"
  }
}

================================================
FILE: Countdown/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json
================================================
{
  "0A9B4653-B11E-4D6A-850E-C6FCB621626C" : {
    "cameraTransform" : [
      1,
      0,
      0,
      0,
      0,
      0.86602545,
      -0.49999994,
      0,
      0,
      0.49999994,
      0.86602545,
      0,
      0.0035969093,
      0.35542378,
      0.62919164,
      1
    ],
    "objectMetadataList" : [
      [
        "0A9B4653-B11E-4D6A-850E-C6FCB621626C",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "65F6F990-A780-4474-B78B-572E0E4E273D" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.86602545,
      -0.49999988,
      0,
      0,
      0.49999988,
      0.86602545,
      0,
      1.1972517e-08,
      2.6179132,
      0.43191218,
      1
    ],
    "objectMetadataList" : [
      [
        "65F6F990-A780-4474-B78B-572E0E4E273D",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "66168B71-AB05-424E-8B6C-D33D6E61B08F" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.8660254,
      -0.5,
      0,
      0,
      0.5,
      0.8660254,
      0,
      0,
      0.23875366,
      0.4135335,
      1
    ],
    "objectMetadataList" : [
      [
        "66168B71-AB05-424E-8B6C-D33D6E61B08F",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "AF09ED6F-1707-48FD-8720-65B998362C09" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.7071069,
      -0.7071067,
      0,
      0,
      0.7071067,
      0.7071069,
      0,
      0,
      2.8836339,
      -0.107588194,
      1
    ],
    "objectMetadataList" : [
      [
        "AF09ED6F-1707-48FD-8720-65B998362C09",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "AF09ED6F-1707-48FD-8720-65B998362C09",
        "Root",
        "Sphere_Left"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "AF09ED6F-1707-48FD-8720-65B998362C09",
        "Root",
        "Sphere_Right"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "CB766F92-EE55-4A63-9401-E7B8C009764D" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.8660253,
      -0.5000001,
      0,
      0,
      0.5000001,
      0.8660253,
      0,
      0,
      0.27093494,
      0.4692731,
      1
    ],
    "objectMetadataList" : [
      [
        "CB766F92-EE55-4A63-9401-E7B8C009764D",
        "Root",
        "GridMaterial"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "CB766F92-EE55-4A63-9401-E7B8C009764D",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  },
  "D560BB77-AAF3-4BDE-B7C4-989332A4688B" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.8660253,
      -0.5000001,
      0,
      0,
      0.5000001,
      0.8660253,
      0,
      0,
      0.27093494,
      0.4692731,
      1
    ],
    "objectMetadataList" : [

    ]
  },
  "D66134B1-3681-4A8E-AFE5-29F257229F3B" : {
    "cameraTransform" : [
      1,
      0,
      -0,
      0,
      -0,
      0.7071069,
      -0.7071067,
      0,
      0,
      0.7071067,
      0.7071069,
      0,
      0,
      0.26894823,
      0.26934713,
      1
    ],
    "objectMetadataList" : [
      [
        "D66134B1-3681-4A8E-AFE5-29F257229F3B",
        "Root",
        "GridMaterial",
        "GridMaterial"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      },
      [
        "D66134B1-3681-4A8E-AFE5-29F257229F3B",
        "Root"
      ],
      {
        "isExpanded" : true,
        "isLocked" : false
      }
    ]
  }
}

================================================
FILE: Countdown/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata
================================================
{
  "cameraPresets" : {

  },
  "secondaryToolbarData" : {
    "isGridVisible" : true,
    "sceneReverbPreset" : -1
  },
  "unitDefaults" : {
    "°" : "°",
    "kg" : "g",
    "m" : "cm",
    "m\/s" : "m\/s",
    "m\/s²" : "m\/s²",
    "s" : "s"
  }
}

================================================
FILE: Countdown/Packages/RealityKitContent/Package.swift
================================================
// swift-tools-version:5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "RealityKitContent",
    products: [
        // Products define the executables and libraries a package produces, and make them visible to other packages.
        .library(
            name: "RealityKitContent",
            targets: ["RealityKitContent"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
        .target(
            name: "RealityKitContent",
            dependencies: []),
    ]
)

================================================
FILE: Countdown/Packages/RealityKitContent/README.md
================================================
# RealityKitContent

A description of this package.

================================================
FILE: Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    reorder nameChildren = ["Sphere_Left", "Sphere_Right", "GridMaterial"]
    def Sphere "Sphere_Right" (
        active = true
        prepend apiSchemas = ["MaterialBindingAPI"]
    )
    {
        rel material:binding = </Root/GridMaterial/GridMaterial> (
            bindMaterialAs = "weakerThanDescendants"
        )
        double radius = 0.1
        quatf xformOp:orient = (1, 0, 0, 0)
        float3 xformOp:scale = (1, 1, 1)
        float3 xformOp:translate = (0.5, 1.5, -1.5)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }

    def Sphere "Sphere_Left" (
        active = true
        prepend apiSchemas = ["MaterialBindingAPI"]
    )
    {
        rel material:binding = </Root/GridMaterial/GridMaterial> (
            bindMaterialAs = "weakerThanDescendants"
        )
        double radius = 0.1
        quatf xformOp:orient = (1, 0, 0, 0)
        float3 xformOp:scale = (1, 1, 1)
        float3 xformOp:translate = (-0.5, 1.5, -1.5)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }

    def "GridMaterial" (
        active = true
        prepend references = @Materials/GridMaterial.usda@
    )
    {
        float3 xformOp:scale = (1, 1, 1)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }
}



================================================
FILE: Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    def Material "GridMaterial"
    {
        reorder nameChildren = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "DefaultSurfaceShader", "MaterialXPreviewSurface", "Texcoord", "Add", "Multiply", "Fractional", "LineCounts", "Multiply_1", "Separate2", "Separate2_1", "Ifgreater", "Ifgreater_1", "Max", "Background_Color"]
        token outputs:mtlx:surface.connect = </Root/GridMaterial/MaterialXPreviewSurface.outputs:out>
        token outputs:realitykit:vertex
        token outputs:surface
        float2 ui:nodegraph:realitykit:subgraphOutputs:pos = (2222, 300.5)
        float2 ui:nodegraph:realitykit:subgraphOutputs:size = (182, 89)
        int ui:nodegraph:realitykit:subgraphOutputs:stackingOrder = 749

        def Shader "DefaultSurfaceShader"
        {
            uniform token info:id = "UsdPreviewSurface"
            color3f inputs:diffuseColor = (1, 1, 1)
            float inputs:roughness = 0.75
            token outputs:surface
        }

        def Shader "MaterialXPreviewSurface"
        {
            uniform token info:id = "ND_UsdPreviewSurface_surfaceshader"
            float inputs:clearcoat
            float inputs:clearcoatRoughness
            color3f inputs:diffuseColor.connect = </Root/GridMaterial/Remap.outputs:out>
            color3f inputs:emissiveColor
            float inputs:ior
            float inputs:metallic = 0.15
            float3 inputs:normal
            float inputs:occlusion
            float inputs:opacity
            float inputs:opacityThreshold
            float inputs:roughness = 0.5
            token outputs:out
            float2 ui:nodegraph:node:pos = (1967, 300.5)
            float2 ui:nodegraph:node:size = (208, 297)
            int ui:nodegraph:node:stackingOrder = 870
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["Advanced"]
        }

        def Shader "Texcoord"
        {
            uniform token info:id = "ND_texcoord_vector2"
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (94.14453, 35.29297)
            float2 ui:nodegraph:node:size = (182, 43)
            int ui:nodegraph:node:stackingOrder = 1358
        }

        def Shader "Multiply"
        {
            uniform token info:id = "ND_multiply_vector2"
            float2 inputs:in1.connect = </Root/GridMaterial/Texcoord.outputs:out>
            float2 inputs:in2 = (32, 15)
            float2 inputs:in2.connect = </Root/GridMaterial/LineCounts.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (275.64453, 47.29297)
            float2 ui:nodegraph:node:size = (61, 36)
            int ui:nodegraph:node:stackingOrder = 1348
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["inputs:in2"]
        }

        def Shader "Fractional"
        {
            uniform token info:id = "ND_realitykit_fractional_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Multiply.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (440.5, 49.5)
            float2 ui:nodegraph:node:size = (155, 99)
            int ui:nodegraph:node:stackingOrder = 1345
        }

        def Shader "BaseColor"
        {
            uniform token info:id = "ND_constant_color3"
            color3f inputs:value = (0.89737034, 0.89737034, 0.89737034) (
                colorSpace = "Input - Texture - sRGB - sRGB"
            )
            color3f inputs:value.connect = None
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1537.5977, 363.07812)
            float2 ui:nodegraph:node:size = (150, 43)
            int ui:nodegraph:node:stackingOrder = 1353
        }

        def Shader "LineColor"
        {
            uniform token info:id = "ND_constant_color3"
            color3f inputs:value = (0.55945957, 0.55945957, 0.55945957) (
                colorSpace = "Input - Texture - sRGB - sRGB"
            )
            color3f inputs:value.connect = None
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1536.9844, 287.86328)
            float2 ui:nodegraph:node:size = (146, 43)
            int ui:nodegraph:node:stackingOrder = 1355
        }

        def Shader "LineWidths"
        {
            uniform token info:id = "ND_combine2_vector2"
            float inputs:in1 = 0.1
            float inputs:in2 = 0.1
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (443.64453, 233.79297)
            float2 ui:nodegraph:node:size = (151, 43)
            int ui:nodegraph:node:stackingOrder = 1361
        }

        def Shader "LineCounts"
        {
            uniform token info:id = "ND_combine2_vector2"
            float inputs:in1 = 24
            float inputs:in2 = 12
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (94.14453, 138.29297)
            float2 ui:nodegraph:node:size = (153, 43)
            int ui:nodegraph:node:stackingOrder = 1359
        }

        def Shader "Remap"
        {
            uniform token info:id = "ND_remap_color3"
            color3f inputs:in.connect = </Root/GridMaterial/Combine3.outputs:out>
            color3f inputs:inhigh.connect = None
            color3f inputs:inlow.connect = None
            color3f inputs:outhigh.connect = </Root/GridMaterial/BaseColor.outputs:out>
            color3f inputs:outlow.connect = </Root/GridMaterial/LineColor.outputs:out>
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1755.5, 300.5)
            float2 ui:nodegraph:node:size = (95, 171)
            int ui:nodegraph:node:stackingOrder = 1282
            string[] ui:nodegraph:realitykit:node:attributesShowingChildren = ["inputs:outlow"]
        }

        def Shader "Separate2"
        {
            uniform token info:id = "ND_separate2_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Range.outputs:out>
            float outputs:outx
            float outputs:outy
            float2 ui:nodegraph:node:pos = (1212.6445, 128.91797)
            float2 ui:nodegraph:node:size = (116, 117)
            int ui:nodegraph:node:stackingOrder = 1363
        }

        def Shader "Combine3"
        {
            uniform token info:id = "ND_combine3_color3"
            float inputs:in1.connect = </Root/GridMaterial/Min.outputs:out>
            float inputs:in2.connect = </Root/GridMaterial/Min.outputs:out>
            float inputs:in3.connect = </Root/GridMaterial/Min.outputs:out>
            color3f outputs:out
            float2 ui:nodegraph:node:pos = (1578.1445, 128.91797)
            float2 ui:nodegraph:node:size = (146, 54)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Range"
        {
            uniform token info:id = "ND_range_vector2"
            bool inputs:doclamp = 1
            float2 inputs:gamma = (2, 2)
            float2 inputs:in.connect = </Root/GridMaterial/Absval.outputs:out>
            float2 inputs:inhigh.connect = </Root/GridMaterial/LineWidths.outputs:out>
            float2 inputs:inlow = (0.02, 0.02)
            float2 inputs:outhigh
            float2 inputs:outlow
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (990.64453, 128.91797)
            float2 ui:nodegraph:node:size = (98, 207)
            int ui:nodegraph:node:stackingOrder = 1364
        }

        def Shader "Subtract"
        {
            uniform token info:id = "ND_subtract_vector2"
            float2 inputs:in1.connect = </Root/GridMaterial/Fractional.outputs:out>
            float2 inputs:in2.connect = </Root/GridMaterial/LineWidths.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (612.64453, 87.04297)
            float2 ui:nodegraph:node:size = (63, 36)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Absval"
        {
            uniform token info:id = "ND_absval_vector2"
            float2 inputs:in.connect = </Root/GridMaterial/Subtract.outputs:out>
            float2 outputs:out
            float2 ui:nodegraph:node:pos = (765.64453, 87.04297)
            float2 ui:nodegraph:node:size = (123, 43)
            int ui:nodegraph:node:stackingOrder = 1348
        }

        def Shader "Min"
        {
            uniform token info:id = "ND_min_float"
            float inputs:in1.connect = </Root/GridMaterial/Separate2.outputs:outx>
            float inputs:in2.connect = </Root/GridMaterial/Separate2.outputs:outy>
            float outputs:out
            float2 ui:nodegraph:node:pos = (1388.1445, 128.91797)
            float2 ui:nodegraph:node:size = (114, 36)
            int ui:nodegraph:node:stackingOrder = 1363
        }
    }
}



================================================
FILE: Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda
================================================
#usda 1.0
(
    defaultPrim = "Root"
    metersPerUnit = 1
    upAxis = "Y"
)

def Xform "Root"
{
    reorder nameChildren = ["GridMaterial", "Sphere"]
    rel material:binding = None (
        bindMaterialAs = "weakerThanDescendants"
    )

    def Sphere "Sphere" (
        active = true
        prepend apiSchemas = ["MaterialBindingAPI"]
    )
    {
        rel material:binding = </Root/GridMaterial/GridMaterial> (
            bindMaterialAs = "weakerThanDescendants"
        )
        double radius = 0.05
        quatf xformOp:orient = (1, 0, 0, 0)
        float3 xformOp:scale = (1, 1, 1)
        float3 xformOp:translate = (0, 0, 0.0004)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]

        def RealityKitComponent "Collider"
        {
            uint group = 1
            uniform token info:id = "RealityKit.Collider"
            uint mask = 4294967295
            token type = "Default"

            def RealityKitStruct "Shape"
            {
                float3 extent = (0.2, 0.2, 0.2)
                float radius = 0.05
                token shapeType = "Sphere"
            }
        }

        def RealityKitComponent "InputTarget"
        {
            uniform token info:id = "RealityKit.InputTarget"
        }
    }

    def "GridMaterial" (
        active = true
        prepend references = @Materials/GridMaterial.usda@
    )
    {
        float3 xformOp:scale = (1, 1, 1)
        uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:orient", "xformOp:scale"]
    }
}



================================================
FILE: Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift
================================================
import Foundation

/// Bundle for the RealityKitContent project
public let realityKitContentBundle = Bundle.module


================================================
FILE: Countdown/README.md
================================================
**Countdown:** Countdown in Immersive Space

https://github.com/IvanCampos/visionOS-examples/assets/872137/9c1d8406-d95c-436c-bfd1-e4fd3daf2529


================================================
FILE: DualSense/DualSense/Assets.xcassets/AccentColor.colorset/Contents.json
================================================
{
  "colors" : [
    {
      "idiom" : "universal"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  },
  "layers" : [
    {
      "filename" : "Front.solidimagestacklayer"
    },
    {
      "filename" : "Middle.solidimagestacklayer"
    },
    {
      "filename" : "Back.solidimagestacklayer"
    }
  ]
}


================================================
FILE: DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json
================================================
{
  "images" : [
    {
      "idiom" : "vision",
      "scale" : "2x"
    }
  ],
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: DualSense/DualSense/Assets.xcassets/Contents.json
================================================
{
  "info" : {
    "author" : "xcode",
    "version" : 1
  }
}


================================================
FILE: DualSense/DualSense/ContentView.swift
================================================
//
//  ContentView.swift
//  DualSense
//
//  Created by IVAN CAMPOS on 1/12/25.
//

import SwiftUI
import GameController

struct ContentView: View {
    @StateObject private var controllerManager = ControllerManager()
    
    // MARK: - Predefined Rainbow Colors (ROYGBIV)
    private let rainbowColors: [(name: String, color: Color, rgb: (Float, Float, Float))] = [
        ("Red",    .red,    (1.0, 0.0, 0.0)),
        ("Orange", .orange, (1.0, 0.5, 0.0)),
        ("Yellow", .yellow, (1.0, 1.0, 0.0)),
        ("Green",  .green,  (0.0, 1.0, 0.0)),
        ("Blue",   .blue,   (0.0, 0.0, 1.0)),
        ("Indigo", Color(red: 0.29, green: 0.0, blue: 0.51), (0.29, 0.0, 0.51)),
        ("Violet", Color(red: 0.56, green: 0.0, blue: 1.0),  (0.56, 0.0, 1.0))
    ]
    
    var body: some View {
        VStack(spacing: 20) {
            
            if (controllerManager.controllerName != nil) {
                
                VStack(spacing: 20) {
                    
                    ZStack {
                        Group {
                            Image(systemName: "battery.0percent")
                                .font(.system(size: 50))
                        }
                        
                        // The text is drawn *in front of* the battery image
                        Text(
                            controllerManager.batteryLevel != nil
                            ? "\(String(format: "%.0f", controllerManager.batteryLevel! * 100))%"
                            : "N/A"
                        )
                        .font(.subheadline)
                        .foregroundColor(.green)
                    }

                    VStack {
                        
                        HStack(spacing: 20) {
                            VStack {
                                Text(
                                    "\(String(format: "%.2f", controllerManager.leftTriggerValue))"
                                )
                                .font(.headline)
                                if (controllerManager.leftTriggerValue > 0.00) {
                                    Image(
                                        systemName: "l2.button.angledtop.vertical.left.fill"
                                    )
                                    .font(.system(size: 50))
                                } else {
                                    Image(
                                        systemName: "l2.button.angledtop.vertical.left"
                                    )
                                    .font(.system(size: 50))
                                }
                            }
                            
                            VStack {
                                Text(
                                    "\(String(format: "%.2f", controllerManager.rightTriggerValue))"
                                )
                                .font(.headline)
                                if (
                                    controllerManager.rightTriggerValue > 0.00
                                ) {
                                    Image(
                                        systemName: "r2.button.angledtop.vertical.right.fill"
                                    )
                                    .font(.system(size: 50))
                                } else {
                                    Image(
                                        systemName: "r2.button.angledtop.vertical.right"
                                    )
                                    .font(.system(size: 50))
                                }
                            }
                        }
                        
                        HStack {
                            
                            if (controllerManager.leftShoulderValue > 0.00) {
                                Image(
                                    systemName: "l1.button.roundedbottom.horizontal.fill"
                                )
                                .font(.system(size: 50))
                            } else {
                                Image(
                                    systemName: "l1.button.roundedbottom.horizontal"
                                )
                                .font(.system(size: 50))
                            }
                            
                            if (controllerManager.rightShoulderValue > 0.00) {
                                Image(
                                    systemName: "r1.button.roundedbottom.horizontal.fill"
                                )
                                .font(.system(size: 50))
                            } else {
                                Image(
                                    systemName: "r1.button.roundedbottom.horizontal"
                                )
                                .font(.system(size: 50))
                            }
                        }
                    }
                    
                    HStack(spacing: 20) {
                        
                        //Options
                        if (controllerManager.buttonOptions > 0.0) {
                            Image(systemName: "light.max")
                                .font(.system(size: 50))
                                .foregroundColor(controllerManager.lightBar?.imageColor)
                        } else {
                            Image(systemName: "light.max")
                                .font(.system(size: 50))
                        }
                        
                        if (controllerManager.touchpad == true) {
                            Image(systemName: "inset.filled.rectangle")
                                .font(.system(size: 50))
                                .foregroundColor(controllerManager.lightBar?.imageColor)
                        } else {
                            Image(systemName: "rectangle")
                                .font(.system(size: 50))
                        }
                        
                        //Menu
                        if (controllerManager.buttonMenu > 0.0) {
                            Image(systemName: "line.3.horizontal")
                                .font(.system(size: 50))
                                .foregroundColor(controllerManager.lightBar?.imageColor)
                        } else {
                            Image(systemName: "line.3.horizontal")
                                .font(.system(size: 50))
                        }
                    }
                    
                    HStack(spacing: 20) {
                        
                        if (controllerManager.dPadDown > 0.0) {
                            Image(systemName: "dpad.down.fill")
                                .font(.system(size: 50))
                                .padding(.trailing, 20)
                        } else if (controllerManager.dPadLeft > 0.0) {
                            Image(systemName: "dpad.left.fill")
                                .font(.system(size: 50))
                                .padding(.trailing, 20)
                        } else if (controllerManager.dPadRight > 0.0) {
                            Image(systemName: "dpad.right.fill")
                                .font(.system(size: 50))
                                .padding(.trailing, 20)
                        } else if (controllerManager.dPadUp > 0.0) {
                            Image(systemName: "dpad.up.fill")
                                .font(.system(size: 50))
                                .padding(.trailing, 20)
                        } else {
                            Image(systemName: "dpad")
                                .font(.system(size: 50))
                                .padding(.trailing, 20)
                        }
                            
                        if (controllerManager.buttonX == true) {
                            Image(systemName: "square.circle.fill")
                                .font(.system(size: 50))
                        } else {
                            Image(systemName: "square.circle")
                                .font(.system(size: 50))
                        }
                        
                        if (controllerManager.buttonY == true) {
                            Image(systemName: "triangle.circle.fill")
                                .font(.system(size: 50))
                        } else {
                            Image(systemName: "triangle.circle")
                                .font(.system(size: 50))
                        }
                        
                        if (controllerManager.buttonA == true) {
                            Image(systemName: "x.circle.fill")
                                .font(.system(size: 50))
                        } else {
                            Image(systemName: "x.circle")
                                .font(.system(size: 50))
                        }
                        
                        if (controllerManager.buttonB == true) {
                            Image(systemName: "circle.circle.fill")
                                .font(.system(size: 50))
                        } else {
                            Image(systemName: "circle.circle")
                                .font(.system(size: 50))
                        }
                    
                    }
                    
                    HStack(spacing: 20) {
                        
                        if (controllerManager.leftThumbstick > 0.0) {
                            Image(systemName: "l.joystick.tilt.down.fill")
                                .font(.system(size: 50))
                        } else {
                            Image(systemName: "l.joystick.tilt.down")
                                .font(.system(size: 50))
                        }
                        
                        Text("\(Image(systemName: "playstation.logo"))")
                            .font(.system(size: 35))
                            .foregroundColor(Color(UIColor.darkGray))
                            .padding(.horizontal, 25)
                        
                        if (controllerManager.rightThumbstick > 0.0) {
                            Image(systemName: "r.joystick.tilt.down.fill")
                                .font(.system(size: 50))
                        } else {
                            Image(systemName: "r.joystick.tilt.down")
                                .font(.system(size: 50))
                        }
                        
                    }
                    
                    // MARK: - Thumbstick Axes & Angles
                    VStack(spacing: 6) {
                        Text("Left Thumbstick: X=\(String(format: "%.2f", controllerManager.leftThumbstickX))  Y=\(String(format: "%.2f", controllerManager.leftThumbstickY))")
                            .font(.subheadline)
                        Text("Angle=\(String(format: "%.0f", controllerManager.leftThumbstickAngle))°")
                            .font(.subheadline)
                            .foregroundColor(.secondary)
                    }
                    
                    VStack(spacing: 6) {
                        Text("Right Thumbstick: X=\(String(format: "%.2f", controllerManager.rightThumbstickX))  Y=\(String(format: "%.2f", controllerManager.rightThumbstickY))")
                            .font(.subheadline)
                        Text("Angle=\(String(format: "%.0f", controllerManager.rightThumbstickAngle))°")
                            .font(.subheadline)
                            .foregroundColor(.secondary)
                    }
                    
                    // MARK: - Touchpad Finger Locations
                    VStack(spacing: 6) {
                        Text("Touchpad Primary: (X=\(String(format: "%.2f", controllerManager.touchpadPrimaryX)), Y=\(String(format: "%.2f", controllerManager.touchpadPrimaryY)))")
                            .font(.subheadline)
                        Text("Swipe Direction: \(String(describing: controllerManager.touchpadSwipeDirection))")
                            .font(.subheadline)
                    }
                    
                    // MARK: - Color Circles (ROYGBIV)
                    HStack(spacing: 12) {
                        ForEach(rainbowColors, id: \.name) { colorItem in
                            Button {
                                let (r, g, b) = colorItem.rgb
                                // Call your manager's function to change the light bar color
                                controllerManager.setLightBarColor(red: r, green: g, blue: b)
                            } label: {
                                Circle()
                                    .fill(colorItem.color)
                                    .frame(width: 30, height: 30)
                                    .overlay(
                                        Circle()
                                            .strokeBorder(Color.white.opacity(0.8), lineWidth: 1)
                                    )
                            }
                            .buttonStyle(.plain)
                            .accessibilityLabel(colorItem.name)
                        }
                    }
                    .padding(.top, 10)
                    
                }
                .padding()
                
            } else {
                Text("\(Image(systemName: "playstation.logo"))")
                    .font(.system(size: 50))
                Text("No PS5 DualSense controller connected")
                    .font(.headline)
                    .foregroundColor(.red)
            }
            
        }
        .onAppear {
            controllerManager.startMonitoringControllers()
        }
        .onDisappear {
            controllerManager.stopMonitoringControllers()
        }
    }
}

extension GCColor {
    var imageColor: Color {
        Color(red: Double(self.red), green: Double(self.green), blue:  Double(self.blue))
    }
}


================================================
FILE: DualSense/DualSense/ControllerManager.swift
================================================
//
//  ControllerManager.swift
//  DualSense
//
//  Created by IVAN CAMPOS on 1/12/25.
//
import SwiftUI
import GameController
import AVFoundation

class ControllerManager: ObservableObject {
    @Published var controllerName: String?
    @Published var lightBar: GCColor?
    @Published var batteryLevel: Float?
    
    // Face Buttons
    @Published var buttonA: Bool = false
    @Published var buttonB: Bool = false
    @Published var buttonX: Bool = false
    @Published var buttonY: Bool = false

    // Trigger values
    @Published var leftTriggerValue: Float = 0.0
    @Published var rightTriggerValue: Float = 0.0
    
    // Shoulder values
    @Published var leftShoulderValue: Float = 0.0
    @Published var rightShoulderValue: Float = 0.0
    
    // DualSense’s touchpad
    @Published var touchpad: Bool = false
    
    // Finger locations on the touchpad (0.0 to 1.0)
    @Published var touchpadPrimaryX: Float = 0.0
    @Published var touchpadPrimaryY: Float = 0.0
    @Published var touchpadSwipeDirection: SwipeDirection?
    
    // Misc Buttons
    @Published var buttonMenu: Float = 0.0
    @Published var buttonOptions: Float = 0.0

    // D-Pad
    @Published var dPadUp: Float = 0.0
    @Published var dPadDown: Float = 0.0
    @Published var dPadLeft: Float = 0.0
    @Published var dPadRight: Float = 0.0
    
    // Thumbsticks
    @Published var leftThumbstick: Float = 0.0
    @Published var rightThumbstick: Float = 0.0
    
    // Thumbstick axis values
    @Published var leftThumbstickX: Float = 0.0
    @Published var leftThumbstickY: Float = 0.0
    @Published var rightThumbstickX: Float = 0.0
    @Published var rightThumbstickY: Float = 0.0
    
    // Thumbstick angles (in degrees, -180...180)
    @Published var leftThumbstickAngle: Float = 0.0
    @Published var rightThumbstickAngle: Float = 0.0
    
    // MARK: - Sequence Tracking
    enum ControllerInput {
        case dPadUp
        case dPadDown
        case dPadLeft
        case dPadRight
        case buttonA
        case buttonB
        case buttonX
        case buttonY
        case buttonMenu
        case buttonOptions
    }
    
    enum SwipeDirection {
        case left
        case right
        case up
        case down
    }
    
    struct CheatSequence {
        let name: String
        let steps: [ControllerInput]
        let audioFile: String
        var currentIndex: Int = 0
    }
    
    private var cheatSequences: [CheatSequence] = [
        CheatSequence(
            name: "Konami Code",
            steps: [
                .dPadUp, .dPadUp, .dPadDown, .dPadDown,
                .dPadLeft, .dPadRight, .dPadLeft, .dPadRight,
                .buttonA, .buttonB, .buttonMenu
            ],
            audioFile: "cheat1.mp3"
        ),
        CheatSequence(
            name: "Secret Mode",
            steps: [
                .dPadLeft, .dPadLeft, .buttonB, .buttonA
            ],
            audioFile: "cheat2.mp3"
        )
        // Add more if needed...
    ]
    
    // MARK: - Audio
    private var audioPlayer: AVAudioPlayer?
    
    // MARK: - For Gesture Detection
    // A simple approach to detect tap/swipe on the primary touch.
    private var lastTouchPosition: CGPoint?
    private var touchStartTime: Date?
    private let swipeThreshold: CGFloat = 0.5    // 0.5 of the trackpad's range
    private let tapMaxDuration: TimeInterval = 0.25
    
    private var currentController: GCController?
    private var dualSensePad: GCDualSenseGamepad?

    // MARK: - Start Monitoring
    func startMonitoringControllers() {
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(controllerDidConnect(_:)),
            name: .GCControllerDidConnect,
            object: nil
        )
        
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(controllerDidDisconnect(_:)),
            name: .GCControllerDidDisconnect,
            object: nil
        )

        // If a controller is already connected at launch
        if let controller = GCController.controllers().first {
            setupController(controller)
        }
    }

    // MARK: - Stop Monitoring
    func stopMonitoringControllers() {
        NotificationCenter.default.removeObserver(self, name: .GCControllerDidConnect, object: nil)
        NotificationCenter.default.removeObserver(self, name: .GCControllerDidDisconnect, object: nil)
    }

    // MARK: - Notifications
    @objc private func controllerDidConnect(_ notification: Notification) {
        guard let controller = notification.object as? GCController else { return }
        setupController(controller)
    }

    @objc private func controllerDidDisconnect(_ notification: Notification) {
        guard let controller = notification.object as? GCController else { return }
        // If the currently tracked controller disconnected, clear references
        if controller == currentController {
            clearCurrentController()
        }
    }

    private func clearCurrentController() {
        DispatchQueue.main.async {
            self.currentController = nil
            self.dualSensePad = nil
            self.controllerName = nil
            // Reset all published properties to default
            self.resetAllValues()
        }
    }
    
    private func resetAllValues() {
        batteryLevel = nil
        lightBar = nil
        buttonA = false
        buttonB = false
        buttonX = false
        buttonY = false
        leftTriggerValue = 0.0
        rightTriggerValue = 0.0
        leftShoulderValue = 0.0
        rightShoulderValue = 0.0
        touchpad = false
        buttonMenu = 0.0
        buttonOptions = 0.0
        dPadUp = 0.0
        dPadDown = 0.0
        dPadLeft = 0.0
        dPadRight = 0.0
        leftThumbstick = 0.0
        rightThumbstick = 0.0
        lastTouchPosition = nil
        touchStartTime = nil
    }

    // MARK: - Setup Controller
    private func setupController(_ controller: GCController) {
        currentController = controller
        controllerName = controller.vendorName ?? "Unknown Controller"

        guard let dualSense = controller.extendedGamepad as? GCDualSenseGamepad else {
            print("Controller is not recognized as a DualSense.")
            return
        }
        
        // Store the DualSense reference for later (e.g. adaptive triggers)
        dualSensePad = dualSense
        
        // MARK: Battery
        if let battery = controller.battery {
            DispatchQueue.main.as
Download .txt
gitextract_0bsx795n/

├── .gitignore
├── AnchorToHead/
│   ├── AnchorToHead/
│   │   ├── AnchorToHeadApp.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── AnchorToHead.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── Battery Life/
│   ├── Battery Life/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Battery_LifeApp.swift
│   │   ├── ContentView.swift
│   │   ├── Fonts/
│   │   │   └── SF-Pro-Display-Regular.otf
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── Battery Life.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── README.md
│   └── ViewModel.swift
├── ChatAVP/
│   ├── ChatAVP/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ChatAVPApp.swift
│   │   ├── ContentView.swift
│   │   ├── Info.plist
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       └── Contents.json
│   │   ├── SearchBar.swift
│   │   └── TypewriterEffect.swift
│   ├── ChatAVP.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── Countdown/
│   ├── Countdown/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── CountdownApp.swift
│   │   ├── Extensions.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── Countdown.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── DualSense/
│   ├── DualSense/
│   │   ├── Assets.xcassets/
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── ControllerManager.swift
│   │   ├── DualSenseApp.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── DualSense.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       └── contents.xcworkspacedata
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── FearAndGreed/
│   ├── FearAndGreed/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Colors.swift
│   │   ├── ContentView.swift
│   │   ├── FearAndGreedApp.swift
│   │   ├── FearGreedIndexService.swift
│   │   ├── FearGreedIndexViewModel.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── FearAndGreed.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── HandTracking/
│   ├── HandTracking/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Extensions.swift
│   │   ├── HandTrackingApp.swift
│   │   ├── HandTrackingModel.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── HandTracking.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── LICENSE
├── LLLM/
│   ├── LLLM/
│   │   ├── APIResponseService.swift
│   │   ├── APIResponseView.swift
│   │   ├── APIResponseViewModel.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Info.plist
│   │   ├── LLLMApp.swift
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       └── Contents.json
│   │   └── SearchBar.swift
│   ├── LLLM.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   └── README.md
├── Music Kit/
│   ├── Music Kit/
│   │   ├── AppModel.swift
│   │   ├── Assets.xcassets/
│   │   │   ├── AccentColor.colorset/
│   │   │   │   └── Contents.json
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Extensions.swift
│   │   ├── Helpers.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   ├── MusicManager.swift
│   │   ├── Music_KitApp.swift
│   │   └── ToggleImmersiveSpaceButton.swift
│   ├── Music Kit.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       └── contents.xcworkspacedata
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Ground/
│   │               │   │   ├── DefaultAttenuationMap.exr
│   │               │   │   └── Ground.usda
│   │               │   ├── Immersive.usda
│   │               │   └── SkyDome.usdz
│   │               └── RealityKitContent.swift
│   └── README.md
├── Pencil/
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── Pencil/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Info.plist
│   │   ├── PencilApp.swift
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── Pencil.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   └── README.md
├── Plane Detection/
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Immersive.usda
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── Plane Detection/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── Colors.swift
│   │   ├── ContentView.swift
│   │   ├── ImmersiveView.swift
│   │   ├── Info.plist
│   │   ├── PlaneDetectionModel.swift
│   │   ├── Plane_DetectionApp.swift
│   │   └── Preview Content/
│   │       └── Preview Assets.xcassets/
│   │           └── Contents.json
│   ├── Plane Detection.xcodeproj/
│   │   ├── project.pbxproj
│   │   └── project.xcworkspace/
│   │       ├── contents.xcworkspacedata
│   │       └── xcshareddata/
│   │           └── IDEWorkspaceChecks.plist
│   └── README.md
├── README.md
├── Timer Vision/
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── README.md
│   ├── Timer Vision/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   ├── Contents.json
│   │   │   │   │   └── bg-green.imageset/
│   │   │   │   │       └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Info.plist
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       └── Contents.json
│   │   ├── TimerViewModel.swift
│   │   └── Timer_VisionApp.swift
│   └── Timer Vision.xcodeproj/
│       ├── project.pbxproj
│       └── project.xcworkspace/
│           ├── contents.xcworkspacedata
│           └── xcshareddata/
│               └── IDEWorkspaceChecks.plist
├── WebSockets/
│   ├── Packages/
│   │   └── RealityKitContent/
│   │       ├── Package.realitycomposerpro/
│   │       │   ├── ProjectData/
│   │       │   │   └── main.json
│   │       │   └── WorkspaceData/
│   │       │       ├── SceneMetadataList.json
│   │       │       └── Settings.rcprojectdata
│   │       ├── Package.swift
│   │       ├── README.md
│   │       └── Sources/
│   │           └── RealityKitContent/
│   │               ├── RealityKitContent.rkassets/
│   │               │   ├── Materials/
│   │               │   │   └── GridMaterial.usda
│   │               │   └── Scene.usda
│   │               └── RealityKitContent.swift
│   ├── README.md
│   ├── WebSockets/
│   │   ├── Assets.xcassets/
│   │   │   ├── AppIcon.solidimagestack/
│   │   │   │   ├── Back.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   ├── Contents.json
│   │   │   │   ├── Front.solidimagestacklayer/
│   │   │   │   │   ├── Content.imageset/
│   │   │   │   │   │   └── Contents.json
│   │   │   │   │   └── Contents.json
│   │   │   │   └── Middle.solidimagestacklayer/
│   │   │   │       ├── Content.imageset/
│   │   │   │       │   └── Contents.json
│   │   │   │       └── Contents.json
│   │   │   └── Contents.json
│   │   ├── ContentView.swift
│   │   ├── Info.plist
│   │   ├── Preview Content/
│   │   │   └── Preview Assets.xcassets/
│   │   │       └── Contents.json
│   │   ├── WebSocketService.swift
│   │   └── WebSocketsApp.swift
│   └── WebSockets.xcodeproj/
│       ├── project.pbxproj
│       └── project.xcworkspace/
│           ├── contents.xcworkspacedata
│           └── xcshareddata/
│               └── IDEWorkspaceChecks.plist
└── bsky 3D/
    ├── Packages/
    │   └── RealityKitContent/
    │       ├── Package.realitycomposerpro/
    │       │   ├── ProjectData/
    │       │   │   └── main.json
    │       │   └── WorkspaceData/
    │       │       ├── SceneMetadataList.json
    │       │       └── Settings.rcprojectdata
    │       ├── Package.swift
    │       ├── README.md
    │       └── Sources/
    │           └── RealityKitContent/
    │               ├── RealityKitContent.rkassets/
    │               │   ├── Ground/
    │               │   │   ├── DefaultAttenuationMap.exr
    │               │   │   └── Ground.usda
    │               │   ├── Immersive.usda
    │               │   └── SkyDome.usdz
    │               └── RealityKitContent.swift
    ├── README.md
    ├── bsky 3D/
    │   ├── AppModel.swift
    │   ├── Assets.xcassets/
    │   │   ├── AccentColor.colorset/
    │   │   │   └── Contents.json
    │   │   ├── AppIcon.solidimagestack/
    │   │   │   ├── Back.solidimagestacklayer/
    │   │   │   │   ├── Content.imageset/
    │   │   │   │   │   └── Contents.json
    │   │   │   │   └── Contents.json
    │   │   │   ├── Contents.json
    │   │   │   ├── Front.solidimagestacklayer/
    │   │   │   │   ├── Content.imageset/
    │   │   │   │   │   └── Contents.json
    │   │   │   │   └── Contents.json
    │   │   │   └── Middle.solidimagestacklayer/
    │   │   │       ├── Content.imageset/
    │   │   │       │   └── Contents.json
    │   │   │       └── Contents.json
    │   │   └── Contents.json
    │   ├── ContentView.swift
    │   ├── ImmersiveView.swift
    │   ├── Info.plist
    │   ├── Preview Content/
    │   │   └── Preview Assets.xcassets/
    │   │       └── Contents.json
    │   ├── Root.swift
    │   ├── ToggleImmersiveSpaceButton.swift
    │   ├── WebSocketService.swift
    │   └── bsky_3DApp.swift
    └── bsky 3D.xcodeproj/
        ├── project.pbxproj
        └── project.xcworkspace/
            └── contents.xcworkspacedata
Condensed preview — 382 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,105K chars).
[
  {
    "path": ".gitignore",
    "chars": 2246,
    "preview": "# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/AnchorToHeadApp.swift",
    "chars": 331,
    "preview": "//\n//  AnchorToHeadApp.swift\n//  AnchorToHead\n//\n//  Created by IVAN CAMPOS on 2/21/24.\n//\n\nimport SwiftUI\n\n@main\nstruct"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "chars": 265,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimages"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "AnchorToHead/AnchorToHead/ContentView.swift",
    "chars": 1412,
    "preview": "//\n//  ContentView.swift\n//  AnchorToHead\n//\n//  Created by IVAN CAMPOS on 2/21/24.\n//\n\nimport SwiftUI\nimport RealityKit"
  },
  {
    "path": "AnchorToHead/AnchorToHead/ImmersiveView.swift",
    "chars": 1304,
    "preview": "//\n//  ImmersiveView.swift\n//  AnchorToHead\n//\n//  Created by IVAN CAMPOS on 2/21/24.\n//\n\nimport SwiftUI\nimport RealityK"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Info.plist",
    "chars": 462,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "AnchorToHead/AnchorToHead/Preview Content/Preview Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "AnchorToHead/AnchorToHead.xcodeproj/project.pbxproj",
    "chars": 14139,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "AnchorToHead/AnchorToHead.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "AnchorToHead/AnchorToHead.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "chars": 1002,
    "preview": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "chars": 3858,
    "preview": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n  "
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "chars": 252,
    "preview": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Package.swift",
    "chars": 948,
    "preview": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this packa"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/README.md",
    "chars": 51,
    "preview": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "chars": 1469,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "chars": 8820,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"Grid"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "chars": 1559,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "AnchorToHead/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "chars": 115,
    "preview": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "AnchorToHead/README.md",
    "chars": 183,
    "preview": "# Anchor To Head\n\n_Allow an entity to automatically follow your head, hands-free._\n\nhttps://github.com/IvanCampos/vision"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "chars": 265,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimages"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Battery Life/Battery Life/Battery_LifeApp.swift",
    "chars": 283,
    "preview": "//\n//  Battery_LifeApp.swift\n//  Battery Life\n//\n//  Created by IVAN CAMPOS on 3/13/24.\n//\n\nimport SwiftUI\n\n@main\nstruct"
  },
  {
    "path": "Battery Life/Battery Life/ContentView.swift",
    "chars": 1212,
    "preview": "//\n//  ContentView.swift\n//  Battery Life\n//\n//  Created by IVAN CAMPOS on 3/13/24.\n//\n\nimport SwiftUI\n\nstruct ContentVi"
  },
  {
    "path": "Battery Life/Battery Life/Info.plist",
    "chars": 550,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Battery Life/Battery Life/Preview Content/Preview Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Battery Life/Battery Life.xcodeproj/project.pbxproj",
    "chars": 14813,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Battery Life/Battery Life.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "Battery Life/Battery Life.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "chars": 1028,
    "preview": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "chars": 3265,
    "preview": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      0.9807314,\n      -1.9820146e-10,\n      -0"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "chars": 252,
    "preview": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Package.swift",
    "chars": 948,
    "preview": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this packa"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/README.md",
    "chars": 51,
    "preview": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "chars": 8820,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"Grid"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "chars": 1559,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "Battery Life/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "chars": 115,
    "preview": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "Battery Life/README.md",
    "chars": 172,
    "preview": "# Battery Life\n\nDisplay the Apple Vision Pro's battery level and status\n\nhttps://github.com/IvanCampos/visionOS-examples"
  },
  {
    "path": "Battery Life/ViewModel.swift",
    "chars": 1025,
    "preview": "//\n//  ViewModel.swift\n//  Battery Life\n//\n//  Created by IVAN CAMPOS on 3/13/24.\n//\n\nimport SwiftUI\n\n// BatteryViewMode"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "chars": 265,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimages"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "ChatAVP/ChatAVP/ChatAVPApp.swift",
    "chars": 222,
    "preview": "//\n//  ChatAVPApp.swift\n//  ChatAVP\n//\n//  Created by IVAN CAMPOS on 1/26/24.\n//\n\nimport SwiftUI\n\n@main\nstruct ChatAVPAp"
  },
  {
    "path": "ChatAVP/ChatAVP/ContentView.swift",
    "chars": 3630,
    "preview": "//\n//  ContentView.swift\n//  ChatAVP\n//\n//  Created by IVAN CAMPOS on 1/26/24.\n//\n\nimport SwiftUI\nimport RealityKit\nimpo"
  },
  {
    "path": "ChatAVP/ChatAVP/Info.plist",
    "chars": 462,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "ChatAVP/ChatAVP/Preview Content/Preview Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "ChatAVP/ChatAVP/SearchBar.swift",
    "chars": 1329,
    "preview": "//\n//  SearchBar.swift\n//  ChatAVP\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport SwiftUI\n\nstruct SearchBar: UIVie"
  },
  {
    "path": "ChatAVP/ChatAVP/TypewriterEffect.swift",
    "chars": 1294,
    "preview": "//\n//  TypewriterEffect.swift\n//  ChatAVP\n//\n//  Created by IVAN CAMPOS on 2/18/24.\n//\n\nimport SwiftUI\n\nstruct Typewrite"
  },
  {
    "path": "ChatAVP/ChatAVP.xcodeproj/project.pbxproj",
    "chars": 14886,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "ChatAVP/ChatAVP.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 192,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:/Users/ivancamp"
  },
  {
    "path": "ChatAVP/ChatAVP.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "chars": 1028,
    "preview": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "chars": 3265,
    "preview": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      0.9807314,\n      -1.9820146e-10,\n      -0"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "chars": 252,
    "preview": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Package.swift",
    "chars": 948,
    "preview": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this packa"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/README.md",
    "chars": 51,
    "preview": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "chars": 8820,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"Grid"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "chars": 1559,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "ChatAVP/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "chars": 115,
    "preview": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "ChatAVP/README.md",
    "chars": 489,
    "preview": "# ChatAVP\n**Chat Apple Vision Pro (ChatAVP):** Chat with the OpenAI API for visionOS  \n\n## Instructions\n***Before runnin"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "chars": 265,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimages"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "Countdown/Countdown/ContentView.swift",
    "chars": 1475,
    "preview": "//\n//  ContentView.swift\n//  Countdown\n//\n//  Created by IVAN CAMPOS on 3/17/24.\n//\n\nimport SwiftUI\nimport RealityKit\nim"
  },
  {
    "path": "Countdown/Countdown/CountdownApp.swift",
    "chars": 322,
    "preview": "//\n//  CountdownApp.swift\n//  Countdown\n//\n//  Created by IVAN CAMPOS on 3/17/24.\n//\n\nimport SwiftUI\n\n@main\nstruct Count"
  },
  {
    "path": "Countdown/Countdown/Extensions.swift",
    "chars": 660,
    "preview": "//\n//  Extensions.swift\n//  Countdown\n//\n//  Created by IVAN CAMPOS on 3/17/24.\n//\n\nimport SwiftUI\n\n// Function to creat"
  },
  {
    "path": "Countdown/Countdown/ImmersiveView.swift",
    "chars": 3652,
    "preview": "//\n//  ImmersiveView.swift\n//  Countdown\n//\n//  Created by IVAN CAMPOS on 3/17/24.\n//\n\nimport SwiftUI\nimport RealityKit\n"
  },
  {
    "path": "Countdown/Countdown/Info.plist",
    "chars": 553,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Countdown/Countdown/Preview Content/Preview Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "Countdown/Countdown.xcodeproj/project.pbxproj",
    "chars": 15717,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "Countdown/Countdown.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "Countdown/Countdown.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "chars": 1002,
    "preview": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "chars": 3858,
    "preview": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n  "
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "chars": 252,
    "preview": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Package.swift",
    "chars": 948,
    "preview": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this packa"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/README.md",
    "chars": 51,
    "preview": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "chars": 1469,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "chars": 8820,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"Grid"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "chars": 1559,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "Countdown/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "chars": 115,
    "preview": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "Countdown/README.md",
    "chars": 144,
    "preview": "**Countdown:** Countdown in Immersive Space\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/872137/9c1d8406-d95c"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AccentColor.colorset/Contents.json",
    "chars": 123,
    "preview": "{\n  \"colors\" : [\n    {\n      \"idiom\" : \"universal\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "chars": 265,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimages"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense/ContentView.swift",
    "chars": 14249,
    "preview": "//\n//  ContentView.swift\n//  DualSense\n//\n//  Created by IVAN CAMPOS on 1/12/25.\n//\n\nimport SwiftUI\nimport GameControlle"
  },
  {
    "path": "DualSense/DualSense/ControllerManager.swift",
    "chars": 19174,
    "preview": "//\n//  ControllerManager.swift\n//  DualSense\n//\n//  Created by IVAN CAMPOS on 1/12/25.\n//\nimport SwiftUI\nimport GameCont"
  },
  {
    "path": "DualSense/DualSense/DualSenseApp.swift",
    "chars": 293,
    "preview": "//\n//  DualSenseApp.swift\n//  DualSense\n//\n//  Created by IVAN CAMPOS on 1/12/25.\n//\n\nimport SwiftUI\n\n@main\nstruct DualS"
  },
  {
    "path": "DualSense/DualSense/Info.plist",
    "chars": 462,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "DualSense/DualSense/Preview Content/Preview Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "DualSense/DualSense.xcodeproj/project.pbxproj",
    "chars": 12156,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 77;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "DualSense/DualSense.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "chars": 1028,
    "preview": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "chars": 3265,
    "preview": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      0.9807314,\n      -1.9820146e-10,\n      -0"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "chars": 252,
    "preview": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Package.swift",
    "chars": 1037,
    "preview": "// swift-tools-version:6.0\n// The swift-tools-version declares the minimum version of Swift required to build this packa"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/README.md",
    "chars": 51,
    "preview": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "chars": 8820,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"Grid"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "chars": 1559,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "DualSense/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "chars": 115,
    "preview": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "DualSense/README.md",
    "chars": 154,
    "preview": "**DualSense**\n\nPS5 DualSense Controller integration for Apple Vision Pro\n\nhttps://github.com/user-attachments/assets/b75"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "chars": 265,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimages"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Colors.swift",
    "chars": 2274,
    "preview": "//\n//  Colors.swift\n//  Swift Helpers\n//\n//  Created by IVAN CAMPOS on 2/13/24.\n//\n\nimport UIKit\n\nenum ColorName: String"
  },
  {
    "path": "FearAndGreed/FearAndGreed/ContentView.swift",
    "chars": 2238,
    "preview": "//\n//  ContentView.swift\n//  FearAndGreed\n//\n//  Created by IVAN CAMPOS on 2/16/24.\n//\n\nimport SwiftUI\n\nlet EXTREME_FEAR"
  },
  {
    "path": "FearAndGreed/FearAndGreed/FearAndGreedApp.swift",
    "chars": 393,
    "preview": "//\n//  FearAndGreedApp.swift\n//  FearAndGreed\n//\n//  Created by IVAN CAMPOS on 2/16/24.\n//\n\nimport SwiftUI\n\n@main\nstruct"
  },
  {
    "path": "FearAndGreed/FearAndGreed/FearGreedIndexService.swift",
    "chars": 813,
    "preview": "//\n//  FearGreedIndexService.swift\n//  FearAndGreed\n//\n//  Created by IVAN CAMPOS on 2/16/24.\n//\n\nimport Foundation\n\ncla"
  },
  {
    "path": "FearAndGreed/FearAndGreed/FearGreedIndexViewModel.swift",
    "chars": 773,
    "preview": "//\n//  FearGreedIndexViewModel.swift\n//  FearAndGreed\n//\n//  Created by IVAN CAMPOS on 2/16/24.\n//\n\nimport Combine\nimpor"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Info.plist",
    "chars": 472,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "FearAndGreed/FearAndGreed/Preview Content/Preview Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "FearAndGreed/FearAndGreed.xcodeproj/project.pbxproj",
    "chars": 15119,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "FearAndGreed/FearAndGreed.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 135,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef"
  },
  {
    "path": "FearAndGreed/FearAndGreed.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "chars": 579,
    "preview": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "chars": 2248,
    "preview": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n  "
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "chars": 252,
    "preview": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Package.swift",
    "chars": 948,
    "preview": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this packa"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/README.md",
    "chars": 51,
    "preview": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "chars": 8820,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"Grid"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "chars": 1544,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "FearAndGreed/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "chars": 115,
    "preview": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "FearAndGreed/README.md",
    "chars": 206,
    "preview": "# Fear and Greed\n_Volumetric View of the Fear & Greed Index for Bitcoin and other large cryptocurrencies_\n\nhttps://githu"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "chars": 265,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimages"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "HandTracking/HandTracking/ContentView.swift",
    "chars": 1405,
    "preview": "//\n//  ContentView.swift\n//  HandTracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport SwiftUI\nimport RealityKit"
  },
  {
    "path": "HandTracking/HandTracking/Extensions.swift",
    "chars": 1543,
    "preview": "//\n//  ModelEntity+Extensions.swift\n//  HandTracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport SwiftUI\nimport"
  },
  {
    "path": "HandTracking/HandTracking/HandTrackingApp.swift",
    "chars": 456,
    "preview": "//\n//  HandTrackingApp.swift\n//  Hand Tracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport SwiftUI\n\n@main\nstruc"
  },
  {
    "path": "HandTracking/HandTracking/HandTrackingModel.swift",
    "chars": 18570,
    "preview": "//\n//  HandTrackingModel.swift\n//  HandTracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport RealityKit\nimport A"
  },
  {
    "path": "HandTracking/HandTracking/ImmersiveView.swift",
    "chars": 671,
    "preview": "//\n//  ImmersiveView.swift\n//  HandTracking\n//\n//  Created by IVAN CAMPOS on 2/23/24.\n//\n\nimport SwiftUI\nimport RealityK"
  },
  {
    "path": "HandTracking/HandTracking/Info.plist",
    "chars": 536,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "HandTracking/HandTracking/Preview Content/Preview Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "HandTracking/HandTracking.xcodeproj/project.pbxproj",
    "chars": 15044,
    "preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 56;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
  },
  {
    "path": "HandTracking/HandTracking.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "chars": 203,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:/Users/ivancamp"
  },
  {
    "path": "HandTracking/HandTracking.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "chars": 238,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Package.realitycomposerpro/ProjectData/main.json",
    "chars": 1002,
    "preview": "{\n  \"pathsToIds\" : {\n    \"\\/RealityKitContent\\/Sources\\/RealityKitContent\\/RealityKitContent.rkassets\\/GridMaterial.usda"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/SceneMetadataList.json",
    "chars": 3858,
    "preview": "{\n  \"0A9B4653-B11E-4D6A-850E-C6FCB621626C\" : {\n    \"cameraTransform\" : [\n      1,\n      0,\n      0,\n      0,\n      0,\n  "
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Package.realitycomposerpro/WorkspaceData/Settings.rcprojectdata",
    "chars": 252,
    "preview": "{\n  \"cameraPresets\" : {\n\n  },\n  \"secondaryToolbarData\" : {\n    \"isGridVisible\" : true,\n    \"sceneReverbPreset\" : -1\n  },"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Package.swift",
    "chars": 948,
    "preview": "// swift-tools-version:5.9\n// The swift-tools-version declares the minimum version of Swift required to build this packa"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/README.md",
    "chars": 51,
    "preview": "# RealityKitContent\n\nA description of this package."
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Immersive.usda",
    "chars": 1469,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Materials/GridMaterial.usda",
    "chars": 8820,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    def Material \"Grid"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.rkassets/Scene.usda",
    "chars": 1559,
    "preview": "#usda 1.0\n(\n    defaultPrim = \"Root\"\n    metersPerUnit = 1\n    upAxis = \"Y\"\n)\n\ndef Xform \"Root\"\n{\n    reorder nameChildr"
  },
  {
    "path": "HandTracking/Packages/RealityKitContent/Sources/RealityKitContent/RealityKitContent.swift",
    "chars": 115,
    "preview": "import Foundation\n\n/// Bundle for the RealityKitContent project\npublic let realityKitContentBundle = Bundle.module\n"
  },
  {
    "path": "HandTracking/README.md",
    "chars": 164,
    "preview": "# Hand Tracking\nQuickly add hand tracking to your visionOS app.\n\nhttps://github.com/IvanCampos/visionOS-examples/assets/"
  },
  {
    "path": "LICENSE",
    "chars": 1068,
    "preview": "MIT License\n\nCopyright (c) 2024 Ivan Campos\n\nPermission is hereby granted, free of charge, to any person obtaining a cop"
  },
  {
    "path": "LLLM/LLLM/APIResponseService.swift",
    "chars": 2215,
    "preview": "//\n//  APIResponseService.swift\n//  LLLM\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport Foundation\n\nstruct APIServ"
  },
  {
    "path": "LLLM/LLLM/APIResponseView.swift",
    "chars": 777,
    "preview": "//\n//  APIResponseView.swift\n//  LLLM\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport SwiftUI\n\nstruct APIResponseVi"
  },
  {
    "path": "LLLM/LLLM/APIResponseViewModel.swift",
    "chars": 503,
    "preview": "//\n//  APIResponseViewModel.swift\n//  LLLM\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport SwiftUI\nimport Combine\n\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Back.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Contents.json",
    "chars": 265,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  },\n  \"layers\" : [\n    {\n      \"filename\" : \"Front.solidimages"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Front.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Content.imageset/Contents.json",
    "chars": 142,
    "preview": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"vision\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"author\" : \"xcode\",\n  "
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/AppIcon.solidimagestack/Middle.solidimagestacklayer/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  },
  {
    "path": "LLLM/LLLM/Assets.xcassets/Contents.json",
    "chars": 62,
    "preview": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "LLLM/LLLM/Info.plist",
    "chars": 635,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
  },
  {
    "path": "LLLM/LLLM/LLLMApp.swift",
    "chars": 240,
    "preview": "//\n//  LLLMApp.swift\n//  LLLM\n//\n//  Created by IVAN CAMPOS on 2/15/24.\n//\n\nimport SwiftUI\n\n@main\nstruct LLLMApp: App {\n"
  },
  {
    "path": "LLLM/LLLM/Preview Content/Preview Assets.xcassets/Contents.json",
    "chars": 63,
    "preview": "{\n  \"info\" : {\n    \"author\" : \"xcode\",\n    \"version\" : 1\n  }\n}\n"
  }
]

// ... and 182 more files (download for full content)

About this extraction

This page contains the full source code of the IvanCampos/visionOS-examples GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 382 files (995.9 KB), approximately 426.5k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!