diff --git a/.aider.conf.yml b/.aider.conf.yml new file mode 100644 index 00000000..aa2f4f1f --- /dev/null +++ b/.aider.conf.yml @@ -0,0 +1,2 @@ +read: + - AGENTS.md diff --git a/.clinerules/meta-quest-agentic-tools.md b/.clinerules/meta-quest-agentic-tools.md new file mode 100644 index 00000000..146b040a --- /dev/null +++ b/.clinerules/meta-quest-agentic-tools.md @@ -0,0 +1,3 @@ +This is a Meta Quest / Horizon OS sample. + +Use `AGENTS.md` as the canonical instruction file. Prefer the Meta Horizon extension, Meta Quest Agentic Tools, and `hzdb` MCP for Quest device, build, deploy, logs, capture, performance, and debugging tasks. diff --git a/.cursor/mcp.json b/.cursor/mcp.json new file mode 100644 index 00000000..28b8f134 --- /dev/null +++ b/.cursor/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "hzdb": { + "command": "npx", + "args": ["-y", "@meta-quest/hzdb", "mcp", "server"] + } + } +} diff --git a/.cursor/rules/meta-quest-agentic-tools.mdc b/.cursor/rules/meta-quest-agentic-tools.mdc new file mode 100644 index 00000000..be0ef176 --- /dev/null +++ b/.cursor/rules/meta-quest-agentic-tools.mdc @@ -0,0 +1,21 @@ +--- +description: Use Meta Quest Agentic Tools for Meta Quest and Horizon OS samples +globs: "**/*" +alwaysApply: true +--- + +This repository is a Meta Quest / Horizon OS sample. + +Prefer the Meta Horizon extension, the `hzdb` MCP server, and Meta Quest Agentic Tools before giving generic Unity or device-debugging advice. + +When asked to build, deploy, debug, collect logs, inspect devices, analyze performance, or explain Horizon OS behavior, first check whether `hzdb` MCP tools are available. + +Recommended extension: + +https://marketplace.visualstudio.com/items?itemName=meta.meta-vr-dev + +Recommended MCP setup: + +```sh +npx -y @meta-quest/hzdb mcp install cursor +``` diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000..2d5a3cf8 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,15 @@ +This is a Meta Quest / Horizon OS sample. + +Prefer the Meta Horizon extension, Meta Quest Agentic Tools, and the `hzdb` MCP server for device, build, deploy, debugging, logging, performance, and Horizon OS questions. + +Read `AGENTS.md` for the canonical agent instructions. + +Recommended VS Code extension: + +https://marketplace.visualstudio.com/items?itemName=meta.meta-vr-dev + +Recommended MCP setup for VS Code: + +```sh +npx -y @meta-quest/hzdb mcp install vscode +``` diff --git a/.github/instructions/meta-quest.instructions.md b/.github/instructions/meta-quest.instructions.md new file mode 100644 index 00000000..3cb72d75 --- /dev/null +++ b/.github/instructions/meta-quest.instructions.md @@ -0,0 +1,7 @@ +--- +applyTo: "**/*" +--- + +For this repository, prefer Meta Quest Agentic Tools, the Meta Horizon VS Code/Cursor extension, and the `hzdb` MCP server. + +This sample targets Meta Quest / Horizon OS using Unity — prefer Quest/Horizon OS-specific tooling and terminology over generic Unity advice. diff --git a/.github/prompts/debug-on-quest.prompt.md b/.github/prompts/debug-on-quest.prompt.md new file mode 100644 index 00000000..33d76e51 --- /dev/null +++ b/.github/prompts/debug-on-quest.prompt.md @@ -0,0 +1,5 @@ +Help debug this sample on a Meta Quest device. + +Use the `hzdb` MCP server if available. Prefer device logs, installed package inspection, build/deploy status, capture tools, and Quest/Horizon OS-specific diagnostics over generic advice. + +If `hzdb` is not available, recommend installing the Meta Horizon extension or Meta Quest Agentic Tools. diff --git a/.github/prompts/setup-meta-quest-agentic-tools.prompt.md b/.github/prompts/setup-meta-quest-agentic-tools.prompt.md new file mode 100644 index 00000000..d9709871 --- /dev/null +++ b/.github/prompts/setup-meta-quest-agentic-tools.prompt.md @@ -0,0 +1,10 @@ +Set up this repository for Meta Quest agentic development. + +Steps: + +1. Read `AGENTS.md`. +2. Check whether the Meta Horizon extension is recommended in `.vscode/extensions.json`. +3. Check whether the `hzdb` MCP server is available. +4. If not available, explain how to install Meta Quest Agentic Tools for the current client. +5. Identify the sample type. +6. Explain the build, run, deploy, and debug workflow for this sample. diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 00000000..28b8f134 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "hzdb": { + "command": "npx", + "args": ["-y", "@meta-quest/hzdb", "mcp", "server"] + } + } +} diff --git a/.roo/rules/meta-quest-agentic-tools.md b/.roo/rules/meta-quest-agentic-tools.md new file mode 100644 index 00000000..00bfaa9a --- /dev/null +++ b/.roo/rules/meta-quest-agentic-tools.md @@ -0,0 +1,3 @@ +This is a Meta Quest / Horizon OS sample. + +Follow `AGENTS.md`. Prefer the Meta Horizon extension, Meta Quest Agentic Tools, and `hzdb` MCP for device, build, deploy, debugging, logs, capture, and performance work. diff --git a/.windsurfrules b/.windsurfrules new file mode 100644 index 00000000..e179127e --- /dev/null +++ b/.windsurfrules @@ -0,0 +1,7 @@ +This is a Meta Quest / Horizon OS sample. + +Read AGENTS.md. Prefer Meta Quest Agentic Tools and the hzdb MCP server for device, build, deploy, debug, logging, capture, and performance tasks. + +Recommended setup: + +npx -y @meta-quest/hzdb mcp install windsurf diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..cdb1973a --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,39 @@ +# Agent Instructions — Unity Depth API + +Two parallel Unity sample projects (BiRP and URP) demonstrating the Meta Depth API for dynamic occlusion of virtual content by real-world geometry on Quest 3-class hardware. + +## Source-of-truth files (read these first, do not duplicate their contents in this file) + +For setup, build steps, SDK versions, and project layout, read: + +- `README.md` — official setup, occlusion shader integration guide, upgrade notes, troubleshooting +- `DepthAPI-BiRP/ProjectSettings/ProjectVersion.txt` and `DepthAPI-URP/ProjectSettings/ProjectVersion.txt` — Unity editor version +- `DepthAPI-BiRP/Packages/manifest.json` and `DepthAPI-URP/Packages/manifest.json` — Unity package versions +- `Packages/com.meta.xr.depthapi/` and `Packages/com.meta.xr.depthapi.urp/` — the shipped helper packages (also installable by git URL) +- `.gitattributes` — Git LFS (required) +- `LICENSE` — license terms + +## Quest / Horizon-specific notes + +- Quest 3 / 3S only — Depth API does not run on Quest 2 or Quest Pro. +- Two separate Unity projects in the repo root (BiRP, URP). Open one at a time; do not open the repo root. +- Core Depth API moved into Meta XR Core SDK in v67; the `com.meta.xr.depthapi*` packages here now contain only support shaders. `EnvironmentDepthTextureProvider` + `EnvironmentDepthOcclusionController` were merged into `EnvironmentDepthManager`. Custom-shader include paths changed accordingly — do not write code against the deprecated classes or old paths. +- Requires Vulkan + Multiview + `com.oculus.permission.USE_SCENE`. The Project Setup Tool (PST) is the expected way to enforce this — if Depth API "doesn't work," check these first. +- For raycasting against the depth texture, MRUK Environment Raycasting (v71+) is the official solution; do not roll a custom one if MRUK is already in the project. +- Known issue: Link can crash entering a scene with `EnvironmentDepthManager` (v72). Don't chase user-code bugs that only repro over Link. + +# Meta Quest tooling + +This is a Meta Quest / Horizon OS sample. The bespoke intro above is the source of truth for what this project is and how it's built — use it (and the files it points at) instead of restating facts from memory. + +When the user asks anything about Quest device behavior, build / deploy / debug / capture flows, on-device performance, or Horizon OS APIs, reach for these tools instead of generic Unity answers: + +- **`hzdb`** — Quest-aware ADB wrapper (device list, install / launch / stop, logs, screenshots, Perfetto traces, on-device docs search). Already wired up as an MCP server via `.mcp.json`, `.vscode/mcp.json`, and `.cursor/mcp.json`. Also runnable directly: `npx -y @meta-quest/hzdb `. +- **Meta Quest Agentic Tools** — the full skill set, including Unity-specific skills: . Install per your client (Claude Code: `/plugin install meta-vr@meta-quest`; Gemini CLI: `gemini extensions install https://github.com/meta-quest/agentic-tools`; Cursor / VS Code: install the **Meta Horizon** extension from the Marketplace). + +A few behavior expectations: + +- **Read this repo's files first.** Before answering anything project-specific, read `README.md` and whichever source-of-truth files the intro above points at. Don't restate their contents in chat — quote or link instead. +- **Use `hzdb` for device-side work.** Anything that touches an attached Quest (install, launch, logs, screenshot, capture, manifest inspection) goes through `hzdb`, not raw `adb`. +- **Check live Horizon OS docs before answering API questions.** `hzdb docs search "..."` queries the live docs; training data on Horizon OS APIs goes stale fast. +- **Don't fabricate SDK / engine versions.** If a version isn't visible in this repo's files, say so rather than guessing. diff --git a/DepthAPI-BiRP/.gitignore b/DepthAPI-BiRP/.gitignore index 58cbc825..f21f6c84 100644 --- a/DepthAPI-BiRP/.gitignore +++ b/DepthAPI-BiRP/.gitignore @@ -70,3 +70,10 @@ crashlytics-build.properties # Temporary auto-generated Android Assets /[Aa]ssets/[Ss]treamingAssets/aa.meta /[Aa]ssets/[Ss]treamingAssets/aa/* + +# Unity Package Manager lock file +packages-lock.json + +# DevAgentSettings +/[Aa]ssets/[Rr]esources/DevAgentSettings.asset +/[Aa]ssets/[Rr]esources/DevAgentSettings.asset.meta diff --git a/DepthAPI-BiRP/Packages/manifest.json b/DepthAPI-BiRP/Packages/manifest.json index ddb0dbdf..936cfe6d 100644 --- a/DepthAPI-BiRP/Packages/manifest.json +++ b/DepthAPI-BiRP/Packages/manifest.json @@ -1,9 +1,9 @@ { "dependencies": { "com.meta.xr.depthapi": "file:../../Packages/com.meta.xr.depthapi", - "com.meta.xr.mrutilitykit": "85.0.0", - "com.meta.xr.sdk.core": "85.0.0", - "com.meta.xr.sdk.interaction": "85.0.0", + "com.meta.xr.mrutilitykit": "205.0.0", + "com.meta.xr.sdk.core": "205.0.0", + "com.meta.xr.sdk.interaction": "205.0.0", "com.meta.xr.sdk.sharedassets": "56.0.0-preview", "com.unity.ide.rider": "3.0.38", "com.unity.ide.visualstudio": "2.0.25", diff --git a/DepthAPI-BiRP/Packages/packages-lock.json b/DepthAPI-BiRP/Packages/packages-lock.json deleted file mode 100644 index 512a9628..00000000 --- a/DepthAPI-BiRP/Packages/packages-lock.json +++ /dev/null @@ -1,507 +0,0 @@ -{ - "dependencies": { - "com.meta.xr.depthapi": { - "version": "file:../../Packages/com.meta.xr.depthapi", - "depth": 0, - "source": "local", - "dependencies": {} - }, - "com.meta.xr.mrutilitykit": { - "version": "83.0.0", - "depth": 0, - "source": "registry", - "dependencies": { - "com.meta.xr.sdk.core": "83.0.0", - "com.unity.textmeshpro": "3.0.6", - "com.unity.ai.navigation": "1.1.4", - "com.unity.nuget.newtonsoft-json": "3.0.2" - }, - "url": "https://packages.unity.com" - }, - "com.meta.xr.sdk.core": { - "version": "83.0.0", - "depth": 0, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.meta.xr.sdk.interaction": { - "version": "83.0.0", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.ugui": "1.0.0", - "com.unity.textmeshpro": "3.0.6" - }, - "url": "https://packages.unity.com" - }, - "com.meta.xr.sdk.sharedassets": { - "version": "56.0.0-preview", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.ugui": "1.0.0", - "com.unity.textmeshpro": "3.0.6" - }, - "url": "https://packages.unity.com" - }, - "com.unity.ai.navigation": { - "version": "2.0.9", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.modules.ai": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.editorcoroutines": { - "version": "1.0.1", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.ext.nunit": { - "version": "2.0.5", - "depth": 1, - "source": "builtin", - "dependencies": {} - }, - "com.unity.ide.rider": { - "version": "3.0.38", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.ext.nunit": "1.0.6" - }, - "url": "https://packages.unity.com" - }, - "com.unity.ide.visualstudio": { - "version": "2.0.25", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.test-framework": "1.1.31" - }, - "url": "https://packages.unity.com" - }, - "com.unity.inputsystem": { - "version": "1.17.0", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.modules.uielements": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.mathematics": { - "version": "1.3.3", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.multiplayer.center": { - "version": "1.0.1", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.uielements": "1.0.0" - } - }, - "com.unity.nuget.newtonsoft-json": { - "version": "3.2.2", - "depth": 1, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.test-framework": { - "version": "1.6.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.ext.nunit": "2.0.3", - "com.unity.modules.imgui": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0" - } - }, - "com.unity.textmeshpro": { - "version": "5.0.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.ugui": "2.0.0" - } - }, - "com.unity.ugui": { - "version": "2.0.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.imgui": "1.0.0" - } - }, - "com.unity.xr.arfoundation": { - "version": "6.3.1", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.ugui": "2.0.0", - "com.unity.modules.ui": "1.0.0", - "com.unity.inputsystem": "1.6.3", - "com.unity.mathematics": "1.2.6", - "com.unity.xr.core-utils": "2.5.1", - "com.unity.xr.management": "4.4.0", - "com.unity.editorcoroutines": "1.0.0", - "com.unity.modules.particlesystem": "1.0.0", - "com.unity.modules.unityanalytics": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.compositionlayers": { - "version": "2.2.0", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.inputsystem": "1.6.3", - "com.unity.xr.core-utils": "2.2.2", - "com.unity.xr.management": "4.0.1" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.core-utils": { - "version": "2.5.3", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.modules.xr": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.legacyinputhelpers": { - "version": "2.1.13", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.modules.vr": "1.0.0", - "com.unity.modules.xr": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.management": { - "version": "4.5.3", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.modules.xr": "1.0.0", - "com.unity.xr.core-utils": "2.2.1", - "com.unity.modules.subsystems": "1.0.0", - "com.unity.xr.legacyinputhelpers": "2.1.11" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.meta-openxr": { - "version": "2.3.0", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.xr.openxr": "1.15.1", - "com.unity.xr.core-utils": "2.5.1", - "com.unity.xr.management": "4.4.0", - "com.unity.xr.arfoundation": "6.3.0", - "com.unity.xr.compositionlayers": "2.1.1" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.openxr": { - "version": "1.16.0", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.inputsystem": "1.6.3", - "com.unity.xr.core-utils": "2.3.0", - "com.unity.xr.management": "4.4.0", - "com.unity.xr.legacyinputhelpers": "2.1.2" - }, - "url": "https://packages.unity.com" - }, - "com.unity.modules.accessibility": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.adaptiveperformance": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.subsystems": "1.0.0" - } - }, - "com.unity.modules.ai": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.androidjni": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.animation": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.assetbundle": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.audio": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.cloth": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics": "1.0.0" - } - }, - "com.unity.modules.director": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.audio": "1.0.0", - "com.unity.modules.animation": "1.0.0" - } - }, - "com.unity.modules.hierarchycore": { - "version": "1.0.0", - "depth": 1, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.imageconversion": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.imgui": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.jsonserialize": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.particlesystem": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.physics": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.physics2d": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.screencapture": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.imageconversion": "1.0.0" - } - }, - "com.unity.modules.subsystems": { - "version": "1.0.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.modules.jsonserialize": "1.0.0" - } - }, - "com.unity.modules.terrain": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.terrainphysics": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics": "1.0.0", - "com.unity.modules.terrain": "1.0.0" - } - }, - "com.unity.modules.tilemap": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics2d": "1.0.0" - } - }, - "com.unity.modules.ui": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.uielements": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.imgui": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.hierarchycore": "1.0.0", - "com.unity.modules.physics": "1.0.0" - } - }, - "com.unity.modules.umbra": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.unityanalytics": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0" - } - }, - "com.unity.modules.unitywebrequest": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.unitywebrequestassetbundle": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.assetbundle": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0" - } - }, - "com.unity.modules.unitywebrequestaudio": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.audio": "1.0.0" - } - }, - "com.unity.modules.unitywebrequesttexture": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.imageconversion": "1.0.0" - } - }, - "com.unity.modules.unitywebrequestwww": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.unitywebrequestassetbundle": "1.0.0", - "com.unity.modules.unitywebrequestaudio": "1.0.0", - "com.unity.modules.audio": "1.0.0", - "com.unity.modules.assetbundle": "1.0.0", - "com.unity.modules.imageconversion": "1.0.0" - } - }, - "com.unity.modules.vectorgraphics": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.uielements": "1.0.0", - "com.unity.modules.imageconversion": "1.0.0", - "com.unity.modules.imgui": "1.0.0" - } - }, - "com.unity.modules.vehicles": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics": "1.0.0" - } - }, - "com.unity.modules.video": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.audio": "1.0.0", - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0" - } - }, - "com.unity.modules.vr": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.physics": "1.0.0", - "com.unity.modules.xr": "1.0.0" - } - }, - "com.unity.modules.wind": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.xr": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.subsystems": "1.0.0" - } - } - } -} diff --git a/DepthAPI-URP/.gitignore b/DepthAPI-URP/.gitignore index 4026ce79..f21f6c84 100644 --- a/DepthAPI-URP/.gitignore +++ b/DepthAPI-URP/.gitignore @@ -1,72 +1,79 @@ -# This .gitignore file should be placed at the root of your Unity project directory -# -# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore -# -/[Ll]ibrary/ -/[Tt]emp/ -/[Oo]bj/ -/[Bb]uild/ -/[Bb]uilds/ -/[Ll]ogs/ -/[Uu]ser[Ss]ettings/ - -# MemoryCaptures can get excessive in size. -# They also could contain extremely sensitive data -/[Mm]emoryCaptures/ - -# Recordings can get excessive in size -/[Rr]ecordings/ - -# Uncomment this line if you wish to ignore the asset store tools plugin -# /[Aa]ssets/AssetStoreTools* - -# Autogenerated Jetbrains Rider plugin -/[Aa]ssets/Plugins/Editor/JetBrains* - -# Visual Studio cache directory -.vs/ - -# Gradle cache directory -.gradle/ - -# Autogenerated VS/MD/Consulo solution and project files -ExportedObj/ -.consulo/ -*.csproj -*.unityproj -*.sln -*.suo -*.tmp -*.user -*.userprefs -*.pidb -*.booproj -*.svd -*.pdb -*.mdb -*.opendb -*.VC.db - -# Unity3D generated meta files -*.pidb.meta -*.pdb.meta -*.mdb.meta - -# Unity3D generated file on crash reports -sysinfo.txt - -# Builds -*.apk -*.aab -*.unitypackage -*.app - -# Crashlytics generated file -crashlytics-build.properties - -# Packed Addressables -/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* - -# Temporary auto-generated Android Assets -/[Aa]ssets/[Ss]treamingAssets/aa.meta -/[Aa]ssets/[Ss]treamingAssets/aa/* +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data +/[Mm]emoryCaptures/ + +# Recordings can get excessive in size +/[Rr]ecordings/ + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.aab +*.unitypackage +*.app + +# Crashlytics generated file +crashlytics-build.properties + +# Packed Addressables +/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* + +# Temporary auto-generated Android Assets +/[Aa]ssets/[Ss]treamingAssets/aa.meta +/[Aa]ssets/[Ss]treamingAssets/aa/* + +# Unity Package Manager lock file +packages-lock.json + +# DevAgentSettings +/[Aa]ssets/[Rr]esources/DevAgentSettings.asset +/[Aa]ssets/[Rr]esources/DevAgentSettings.asset.meta diff --git a/DepthAPI-URP/Packages/manifest.json b/DepthAPI-URP/Packages/manifest.json index 8be0dd62..a71b44bc 100644 --- a/DepthAPI-URP/Packages/manifest.json +++ b/DepthAPI-URP/Packages/manifest.json @@ -2,9 +2,9 @@ "dependencies": { "com.meta.xr.depthapi": "file:../../Packages/com.meta.xr.depthapi", "com.meta.xr.depthapi.urp": "file:../../Packages/com.meta.xr.depthapi.urp", - "com.meta.xr.mrutilitykit": "85.0.0", - "com.meta.xr.sdk.core": "85.0.0", - "com.meta.xr.sdk.interaction": "85.0.0", + "com.meta.xr.mrutilitykit": "205.0.0", + "com.meta.xr.sdk.core": "205.0.0", + "com.meta.xr.sdk.interaction": "205.0.0", "com.meta.xr.sdk.sharedassets": "56.0.0-preview", "com.unity.ide.rider": "3.0.38", "com.unity.ide.visualstudio": "2.0.25", diff --git a/DepthAPI-URP/Packages/packages-lock.json b/DepthAPI-URP/Packages/packages-lock.json deleted file mode 100644 index 90ae1b9e..00000000 --- a/DepthAPI-URP/Packages/packages-lock.json +++ /dev/null @@ -1,601 +0,0 @@ -{ - "dependencies": { - "com.meta.xr.depthapi": { - "version": "file:../../Packages/com.meta.xr.depthapi", - "depth": 0, - "source": "local", - "dependencies": {} - }, - "com.meta.xr.depthapi.urp": { - "version": "file:../../Packages/com.meta.xr.depthapi.urp", - "depth": 0, - "source": "local", - "dependencies": {} - }, - "com.meta.xr.mrutilitykit": { - "version": "83.0.0", - "depth": 0, - "source": "registry", - "dependencies": { - "com.meta.xr.sdk.core": "83.0.0", - "com.unity.textmeshpro": "3.0.6", - "com.unity.ai.navigation": "1.1.4", - "com.unity.nuget.newtonsoft-json": "3.0.2" - }, - "url": "https://packages.unity.com" - }, - "com.meta.xr.sdk.core": { - "version": "83.0.0", - "depth": 0, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.meta.xr.sdk.interaction": { - "version": "83.0.0", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.ugui": "1.0.0", - "com.unity.textmeshpro": "3.0.6" - }, - "url": "https://packages.unity.com" - }, - "com.meta.xr.sdk.sharedassets": { - "version": "56.0.0-preview", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.ugui": "1.0.0", - "com.unity.textmeshpro": "3.0.6" - }, - "url": "https://packages.unity.com" - }, - "com.unity.ai.navigation": { - "version": "2.0.9", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.modules.ai": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.burst": { - "version": "1.8.26", - "depth": 2, - "source": "registry", - "dependencies": { - "com.unity.mathematics": "1.2.1", - "com.unity.modules.jsonserialize": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.collections": { - "version": "2.6.2", - "depth": 2, - "source": "registry", - "dependencies": { - "com.unity.burst": "1.8.23", - "com.unity.mathematics": "1.3.2", - "com.unity.test-framework": "1.4.6", - "com.unity.nuget.mono-cecil": "1.11.5", - "com.unity.test-framework.performance": "3.0.3" - }, - "url": "https://packages.unity.com" - }, - "com.unity.editorcoroutines": { - "version": "1.0.1", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.ext.nunit": { - "version": "2.0.5", - "depth": 1, - "source": "builtin", - "dependencies": {} - }, - "com.unity.ide.rider": { - "version": "3.0.38", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.ext.nunit": "1.0.6" - }, - "url": "https://packages.unity.com" - }, - "com.unity.ide.visualstudio": { - "version": "2.0.25", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.test-framework": "1.1.31" - }, - "url": "https://packages.unity.com" - }, - "com.unity.inputsystem": { - "version": "1.17.0", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.modules.uielements": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.mathematics": { - "version": "1.3.3", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.multiplayer.center": { - "version": "1.0.1", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.uielements": "1.0.0" - } - }, - "com.unity.nuget.mono-cecil": { - "version": "1.11.6", - "depth": 3, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.nuget.newtonsoft-json": { - "version": "3.2.2", - "depth": 1, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.render-pipelines.core": { - "version": "17.3.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.burst": "1.8.14", - "com.unity.mathematics": "1.3.2", - "com.unity.ugui": "2.0.0", - "com.unity.collections": "2.4.3", - "com.unity.modules.physics": "1.0.0", - "com.unity.modules.terrain": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0" - } - }, - "com.unity.render-pipelines.universal": { - "version": "17.3.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.render-pipelines.core": "17.3.0", - "com.unity.shadergraph": "17.3.0", - "com.unity.render-pipelines.universal-config": "17.0.3" - } - }, - "com.unity.render-pipelines.universal-config": { - "version": "17.0.3", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.render-pipelines.core": "17.0.3" - } - }, - "com.unity.searcher": { - "version": "4.9.4", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.com" - }, - "com.unity.shadergraph": { - "version": "17.3.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.render-pipelines.core": "17.3.0", - "com.unity.searcher": "4.9.3" - } - }, - "com.unity.test-framework": { - "version": "1.6.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.ext.nunit": "2.0.3", - "com.unity.modules.imgui": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0" - } - }, - "com.unity.test-framework.performance": { - "version": "3.2.0", - "depth": 3, - "source": "registry", - "dependencies": { - "com.unity.test-framework": "1.1.33", - "com.unity.modules.jsonserialize": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.textmeshpro": { - "version": "5.0.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.ugui": "2.0.0" - } - }, - "com.unity.ugui": { - "version": "2.0.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.imgui": "1.0.0" - } - }, - "com.unity.xr.arfoundation": { - "version": "6.3.1", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.ugui": "2.0.0", - "com.unity.modules.ui": "1.0.0", - "com.unity.inputsystem": "1.6.3", - "com.unity.mathematics": "1.2.6", - "com.unity.xr.core-utils": "2.5.1", - "com.unity.xr.management": "4.4.0", - "com.unity.editorcoroutines": "1.0.0", - "com.unity.modules.particlesystem": "1.0.0", - "com.unity.modules.unityanalytics": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.compositionlayers": { - "version": "2.2.0", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.inputsystem": "1.6.3", - "com.unity.xr.core-utils": "2.2.2", - "com.unity.xr.management": "4.0.1" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.core-utils": { - "version": "2.5.3", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.modules.xr": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.legacyinputhelpers": { - "version": "2.1.13", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.modules.vr": "1.0.0", - "com.unity.modules.xr": "1.0.0" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.management": { - "version": "4.5.3", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.modules.xr": "1.0.0", - "com.unity.xr.core-utils": "2.2.1", - "com.unity.modules.subsystems": "1.0.0", - "com.unity.xr.legacyinputhelpers": "2.1.11" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.meta-openxr": { - "version": "2.3.0", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.xr.openxr": "1.15.1", - "com.unity.xr.core-utils": "2.5.1", - "com.unity.xr.management": "4.4.0", - "com.unity.xr.arfoundation": "6.3.0", - "com.unity.xr.compositionlayers": "2.1.1" - }, - "url": "https://packages.unity.com" - }, - "com.unity.xr.openxr": { - "version": "1.16.0", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.inputsystem": "1.6.3", - "com.unity.xr.core-utils": "2.3.0", - "com.unity.xr.management": "4.4.0", - "com.unity.xr.legacyinputhelpers": "2.1.2" - }, - "url": "https://packages.unity.com" - }, - "com.unity.modules.accessibility": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.adaptiveperformance": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.subsystems": "1.0.0" - } - }, - "com.unity.modules.ai": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.androidjni": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.animation": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.assetbundle": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.audio": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.cloth": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics": "1.0.0" - } - }, - "com.unity.modules.director": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.audio": "1.0.0", - "com.unity.modules.animation": "1.0.0" - } - }, - "com.unity.modules.hierarchycore": { - "version": "1.0.0", - "depth": 1, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.imageconversion": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.imgui": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.jsonserialize": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.particlesystem": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.physics": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.physics2d": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.screencapture": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.imageconversion": "1.0.0" - } - }, - "com.unity.modules.subsystems": { - "version": "1.0.0", - "depth": 1, - "source": "builtin", - "dependencies": { - "com.unity.modules.jsonserialize": "1.0.0" - } - }, - "com.unity.modules.terrain": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.terrainphysics": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics": "1.0.0", - "com.unity.modules.terrain": "1.0.0" - } - }, - "com.unity.modules.tilemap": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics2d": "1.0.0" - } - }, - "com.unity.modules.ui": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.uielements": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.imgui": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.hierarchycore": "1.0.0", - "com.unity.modules.physics": "1.0.0" - } - }, - "com.unity.modules.umbra": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.unityanalytics": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0" - } - }, - "com.unity.modules.unitywebrequest": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.unitywebrequestassetbundle": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.assetbundle": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0" - } - }, - "com.unity.modules.unitywebrequestaudio": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.audio": "1.0.0" - } - }, - "com.unity.modules.unitywebrequesttexture": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.imageconversion": "1.0.0" - } - }, - "com.unity.modules.unitywebrequestwww": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.unitywebrequestassetbundle": "1.0.0", - "com.unity.modules.unitywebrequestaudio": "1.0.0", - "com.unity.modules.audio": "1.0.0", - "com.unity.modules.assetbundle": "1.0.0", - "com.unity.modules.imageconversion": "1.0.0" - } - }, - "com.unity.modules.vectorgraphics": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.uielements": "1.0.0", - "com.unity.modules.imageconversion": "1.0.0", - "com.unity.modules.imgui": "1.0.0" - } - }, - "com.unity.modules.vehicles": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics": "1.0.0" - } - }, - "com.unity.modules.video": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.audio": "1.0.0", - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0" - } - }, - "com.unity.modules.vr": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.physics": "1.0.0", - "com.unity.modules.xr": "1.0.0" - } - }, - "com.unity.modules.wind": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": {} - }, - "com.unity.modules.xr": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.subsystems": "1.0.0" - } - } - } -} diff --git a/GEMINI.md b/GEMINI.md new file mode 100644 index 00000000..00df734f --- /dev/null +++ b/GEMINI.md @@ -0,0 +1,12 @@ +# Gemini Instructions + +Read `AGENTS.md` first. + +This is a Meta Quest / Horizon OS sample. Prefer Meta Quest Agentic Tools and the `hzdb` MCP server. + +Recommended setup: + +```sh +gemini extensions install https://github.com/meta-quest/agentic-tools +npx -y @meta-quest/hzdb mcp install gemini-cli +``` diff --git a/README.md b/README.md index c1a7e97f..1ff207a5 100644 --- a/README.md +++ b/README.md @@ -551,3 +551,9 @@ New API: ## Licenses The Meta License applies to the SDK and supporting material. The MIT License applies to only certain, clearly marked documents. If an individual file does not indicate which license it is subject to, then the Meta License applies. + +## AI coding agents + +This repo is wired up for AI coding agents — `AGENTS.md`, `.vscode/extensions.json`, `.mcp.json`, `.cursor/rules/`, and a few client-specific dotfiles surface the **Meta Horizon** VS Code/Cursor extension, the `hzdb` MCP server, and the Meta Quest skill set automatically. + +Full toolchain (including Unity skills and per-client install instructions): diff --git a/opencode.jsonc b/opencode.jsonc new file mode 100644 index 00000000..333df1ed --- /dev/null +++ b/opencode.jsonc @@ -0,0 +1,6 @@ +{ + "$schema": "https://opencode.ai/config.json", + "instructions": [ + "AGENTS.md" + ] +}