RoboXR Viroo — Unity Project

Technical Documentation & Architecture Overview  |  Generated 2026-05-18
Table of Contents
  1. Project Overview
  2. Technology Stack
  3. Asset & Code Structure
  4. Scenes
  5. Key Scripts
  6. AAXLP Module
  7. REACH / VR Builder Integration
  8. VIROO Packages
  9. Full Package List
  10. MCP for Unity
  11. Applied Compiler Fixes
  12. Known Issues
  13. Referenced Manuals

1. Project Overview

Unity Version
6.3 LTS
Project Path
C:\RoboXR_Working\RoboXR_Viroo
Render Pipeline
URP 17.3.0
Active Scene
01 Alpha Scene
Compiler Status
✓ Clean

RoboXR Viroo is an industrial VR training application built on the VIROO Studio 2.6 multi-user XR framework. The project combines three integrated modules:

2. Technology Stack

🎮 Engine & Rendering
  • Unity 6.3 LTS
  • URP 17.3.0
  • ProBuilder (mesh editing)
  • XR Interaction Toolkit 3.3.1
🌐 Networking & XR
  • VIROO Studio 2.6.941
  • com.virtualware.networking
  • SignalR protocols
  • OpenXR / SteamVR
🤖 AI / LLM
  • LLMUnity (local LLM)
  • Unity Sentis 2.2.0 (Inference Engine)
  • Whisper Tiny (STT)
  • OpenAI Unity (ChatGPT)
🔧 Tooling
  • Visual Scripting 1.9.9
  • DOTween (animation)
  • glTFast 6.14.1 (model import)
  • Addressables (asset loading)
🖥 Target Platforms
  • Windows PC (Desktop)
  • VR Headsets (OpenXR)
  • Multi-user via VIROO cloud
📦 Package Sources
  • Unity Registry
  • VIROO Azure DevOps registry
  • OpenUPM (UniTask, LitMotion)
  • GitHub (MCP-Unity, OpenAI)

3. Asset & Code Structure

Assets/Code/Runtime

FilePurpose
AssemblyGroup.csGroups assembly parts together
AssemblyPart.csIndividual part in assembly sequence
AssemblyTarget.csSnap target for part placement
Completables/Completable sequence data & UI (Audio, Click, Video, Trigger, PartOnTarget)
GrabbableConfiguration.csXR grab settings per object
XRSocketInteractorWithTag.csTag-filtered XR socket
XRTargetFilterByPartType.csFilters snap targets by part type
XRTargetFilterByPose.csFilters snap targets by pose proximity

Assets/Code/Editor

FilePurpose
AssemblyPartsEditor.csCustom inspector for assembly configuration
AutoAssignGUIDs.csAuto-assigns unique IDs to scene objects
FindMissingScripts.csEditor tool to detect missing script references

Assets/Scripts (Runtime)

FileRole
ScenarioManager.csControls scenario flow across 3 learning scenarios
CommonVariables.csShared global state/variables
ItemHandler.csAAXLP: spawn, move, rotate, delete factory items
RoomGenerator.csAAXLP: generates room from layout data
WallPlacer.csAAXLP: places boundary walls
BoundaryChecker.csAAXLP: prevents item placement outside bounds
PathVisualizer.csAAXLP: draws connections between items
AinakJSONReader.csAAXLP: loads saved layout JSON files
ChatGPTController.csAAXLP: sends voice commands to OpenAI, parses response
CommandWheel.csAAXLP: radial menu for item commands
FileControl.csAAXLP: saves/loads layout files
DoWhenLookedAt.csGaze-triggered interactions
VRLaserPointer.csLaser pointer for VR UI interaction
VoiceCommandController.csRoutes voice input to action handlers
SubtitleManager.csDisplays subtitles for narration/voice
Notification.csIn-world notification display
InputManager.csHandles keyboard/controller input
MouseLook.csDesktop placeholder camera look (VIROO takes over in VR)
Menu.csMain menu logic
Settings.csApp settings (volume, quality, snapping)

Visual Scripting — ScriptMachines

Assets/ScriptMachines
  • AT_Completable_Sequence — main sequence state machine
  • AT_GrabbableObject — per-object grab state
  • AT_GrabbablesManager — manages all grabbables in scene
  • AT_DisplayResults — end-of-sequence results UI
  • Completables/: Audio, Click, Video, Trigger, PartOnTarget, PlayableDirector, ICompletable
Assets/ScriptMachines_Common
  • FadeWhenVirooReady — fade-in on session start
  • Viroo_XRInteractionConfiguration_SM — XRIT setup
  • Utilities/ComponentsExtensions_Library
  • Utilities/Serialization_Library
  • Utilities/CreateOrSetDictionaryKeyValue
  • Utilities/TransformDeltaThreshold

4. Scenes

Scene FilePurposeStatus
01 Alpha Scene.unityActive development scene — currently open in UnityActive
VIROO Main.unityMain VIROO-managed scene (networking, XR bootstrap)Production
VR.unityAAXLP entry point — contains Manager with ChatGPTController, ItemHandler, WallPlacer; must have OpenAI API key configuredProduction
main.unityApplication bootstrap / launcher sceneProduction

5. Key Script Notes

The VR scene's Manager GameObject is the central hub for AAXLP: it holds ChatGPTController, ItemHandler, WallPlacer, RoomGenerator, and all event wiring. OpenAI API key must be set here before testing.
ScenarioManager drives the three educational scenarios sequentially. It references VIROO session events to synchronize across users.
MouseLook.cs & OnFootController.cs are desktop-only placeholders — the VIROO XR rig replaces these in full VR deployment.

6. AAXLP Module — AI-Assisted XR Layout Planning

AAXLP is a factory floor layout planning tool with AI-assisted item placement, voice commands, and scenario-based training. It is fully embedded in the project (not a separate installed package).

System Architecture Diagram (from manual)

Load / Create Layout
  • Load Previous Layout → AinakJSONReader + RoomGenerator
  • Make New Layout → WallPlacer + RoomGenerator
Layout Editing
  • Spawn / Move / Rotate / Delete → ItemHandler + CommandWheel
  • Boundary Avoidance → BoundaryChecker
  • Manage Connections → PathVisualizer
Voice AI Pipeline
  • Voice Input → RunWhisper (STT Whisper Tiny)
  • Internet Upload → ChatGPTController
  • Command Parse → ChatGPTController
Unity Events (20+ endpoints)
  • AinakJSONReader: onLayoutLoaded, onLayoutSaved, onItemsProcessed
  • ItemHandler: onItemSpawn, onItemDelete, onItemMove, onItemRotate
  • CommandWheel: onStartedMoving, onFinishedMoving, onConnected
  • ChatGPTController: onResponseFinishedProcessing
  • Menu: onPause, onReset, onExit, onLoadingStarted/Ended

Required Unity Layers (AAXLP-specific, must be set manually)

Layer IndexName
16Floor
17Placing
18Ceiling
19Wall
20Boundary
21WallPoint

AAXLP Configuration Checklist

3D Factory Items (in project)

Prefabs/Factory Planning
  • Assembly-Desk
  • Forklift
  • Robotic-Arm
  • Tool-Rack
Prefabs/New Models
  • AgvMover, ForkLift, PalletJack
  • AssemblyDesk, Table_small, Table_office
  • Conveyor_straight, Box_platform
  • RoboticArm, RoboticArm_Wall
  • Human (worker avatar)
  • MachineM, MaxMover
  • Doors: doorBasic, doorRoller, doorRoller_tall
Project Assets (raw imports)
  • UR_UR12e.glb — Universal Robots UR12e arm
  • gripper-visualization.glb
  • AGV.glb
  • InjectionMoldZelleEnvironment (Blender)
  • Industrial Floor, ASST Security Cabin
  • light_barrier.glb
  • display stand, hanging_monitor
Building Modules (Prefabs/Modules)
  • Walls: W2_H4_WALL, W4_H4_WALL, W4_H4_WINDOW
  • Corners: W2_H4_D2_Corner, CEIL_CORNER
  • Ceiling: CEIL_WALL_FILL
  • Structure: H_BEAM, H_PILAR, LAMP

7. REACH / VR Builder Integration (D9 Manual)

The D9 integration package connects VR Builder (node-based training scenario authoring) with VIROO Studio for multi-user VR training sessions. "REACH" refers to the RoboXR deliverable context.

Process Architecture
  • Process → Chapters → Steps → Behaviors + Conditions
  • Each Step is a node in the Process Editor
  • Behaviors: make things happen (ExecuteVIROOActions, etc.)
  • Conditions: gate progression (GripButton, PushButton, PullLever, SetSlider, TurnKnob)
  • Parallel Execution Nodes for simultaneous paths
VIROO-Specific Conditions
  • Grip Button Condition
  • Pull Lever Condition
  • Push Button Condition
  • Set Slider Condition
  • Turn Knob Condition
  • Execute VIROO Actions Behavior
Role & Permission System
  • Roles configured in Project Settings → VR Builder → Roles and Permissions
  • SetDefaultUserRoles component (Root → VR Builder → PERMISSION_HANDLER)
  • SetUserRolesOnInteract — assigns role on hover/select/activate
  • Policies: Grab Objects, Touch Objects, Grab/Touch Object Group
Scene Requirements
  • Root parent GameObject required
  • Tag VIROORoot on Root object
  • Layer 8 assigned to floor objects
  • Generate Object ID for all Process Scene Objects via VIROO Network Object component
  • Process Scene Object component on every interactable
Multi-User Limitation: VR Builder process state is NOT automatically synchronized across all users in multi-user VIROO sessions. The VIROO integration replicates the majority of VR Builder's core functionality but multi-user sync of process execution requires additional configuration.

8. VIROO Packages (PackageCache)

Core VIROO

PackageRole
com.viroo.studio@2.6.941Core VIROO Studio XR framework
com.viroo.interactionsVIROO XR interaction layer
com.viroo.sceneloaderMulti-scene loading pipeline
com.viroo.vivoxSpatial voice chat
com.viroo.shared.arenaShared virtual arena/space
com.nmersoVIROO Community package

Virtualware Infrastructure

PackageRole
com.virtualware.networkingLow-level networking layer
com.virtualware.dependencyinjectionDI container
com.virtualware.localizationMulti-language support + TMP
com.virtualware.downloadAsset download manager
com.virtualware.restREST API client
com.virtualware.loggingStructured logging

VIROO packages are served from the Azure DevOps scoped registry: pkgs.dev.azure.com/virtualwaregroup/.../Viroo@Release/npm/registry/

9. Full Package Manifest (manifest.json)

PackageVersion / SourceCategory
com.gamelovers.mcp-unityGitHub (CoderGamester)MCP/Dev Tool
com.demigiant.dotweenfile:.tgz (local)Animation
com.srcnalt.openai-unityGitHubAI
com.unity.asset-manager-for-unity1.9.1Tooling
com.unity.cloud.gltfast6.14.13D Import
com.unity.formats.fbx5.1.43D Import
com.unity.multiplayer.center1.0.1Networking
com.unity.render-pipelines.universal17.3.0Rendering
com.unity.sentis2.2.0 (Inference Engine)AI/ML
com.unity.visualscripting1.9.9Visual Scripting
com.unity.xr.interaction.toolkit3.3.1XR
com.viroo.studio2.6.941VIROO
com.viroo.studio.extensions.visualscripting2.6.7VIROO
com.viroo.studio.visualscripting2.6.941VIROO

10. MCP for Unity (Claude Code Integration)

Unity Editor is connected to Claude Code via the MCP for Unity server, enabling AI-assisted scene editing, script generation, and console monitoring directly from the Claude Code CLI.

Package
  • com.gamelovers.mcp-unity (CoderGamester)
  • Server: Node.js (built into PackageCache)
  • Protocol: WebSocket + stdio
Claude Code Config
"mcp-unity": { "type": "stdio", "command": "node", "args": ["C:/RoboXR_Working/RoboXR_Viroo/ Library/PackageCache/ com.gamelovers.mcp-unity@a32e47d4ec87/ Server~/build/index.js"] }

11. Applied Compiler Fixes

Fix 1 — DefaultSceneManager.cs (UniTask 2.5.10 compatibility)
File: Library/PackageCache/com.virtualware.networking@a3f9fa8c6640/Runtime/Client/SceneManagement/DefaultSceneManager.cs
Problem: CS0311AsyncOperation does not implement IEnumerator, so direct await via GetAwaiter<T> failed.
Fix: Changed both LoadScene and UnloadScene to use .ToUniTask().AsTask().
Fix 2 — LinkXmlFileResolver.cs (System.IO.Abstractions 22.x breaking change)
File: Library/PackageCache/com.virtualware.networking@a3f9fa8c6640/Editor/LinkXmlFileResolver.cs
Problem: CS1069IFileSystem was moved to the Testably.Abstractions.FileSystem.Interface assembly in 22.x and was no longer available via the standard System.IO.Abstractions namespace.
Fix: Replaced the entire file to use System.IO.Path directly (no external dependency needed for this use case).
Important: Both fixes are in the Library/PackageCache folder. This folder is regenerated when Unity clears its library or reinstalls packages. If either fix disappears after a reinstall, re-apply both changes. A permanent solution would be to add a local package override in the Packages/ folder.

12. Known Issues

IssueSeverityStatus
Visual Scripting SerializationException: Unable to find type 'Viroo.VisualScripting.Extensions.XRIT.*' — appears in Unity Console as warnings after project load Warning Cosmetic — caused by VS type database caching old XRIT types after XRI upgraded from 3.2.1 → 3.3.1. Does not affect runtime. Fix: Tools → Visual Scripting → Regenerate Nodes
PackageCache fixes (above) are not persistent across Library regeneration Medium Document fix locations; re-apply if Unity reinstalls packages
REACH robot package (CustomIkSolver.exe, VORAUS WebSocket) not yet installed in this project Pending Available in D:\Downloads\download reach\
MCP WebSocket drops between Claude Code sessions Expected Start new Claude Code session to reconnect; MCP server auto-reconnects in Unity

13. Referenced Manuals & Resources

FileContentPages
01.D9_REACH_VIROO-Integration-Manual.pdf VIROO + VR Builder integration: architecture, installation, process editor, permission system, VIROO-specific behaviors & conditions, multi-user limitations, best practices 18
02.How-to-use AAXLP Software Module.pdf AAXLP installation checklist, layer configuration, OpenAI setup, testing guide, system architecture diagram, script responsibilities, Unity Events reference, custom model integration guide 7
RoboXR educational template draft.docx.pdf Project educational template / scenario design document
RoboXR scenes.pdf Scene overview documentation
Credentials for viroo etc.txt VIROO portal credentials and access info