Files: CommandProcessor.cs, OS.cs, VirtualFileSystemHandler.cs
UI: Unity UI Text and InputField components
Purpose: Simulates serial connection to Purity OS
Status: FULLY IMPLEMENTED AND WORKING
Commands: All operational commands (ls, mount, purearray, purehw, etc.)
This is your REAL terminal that users interact with. It's already connected to your 3D scene and handles all Pure Storage commands.
Files: Assets/Scripts/Console/ConsoleController.cs and related
UI: TextMeshPro components (TMP_InputField, TMP_Text)
Purpose: Simulator control overlay (jump steps, inject faults, debug)
Status: CODE EXISTS BUT NO UI SCENE SETUP
Commands: jump, steps, inject, usb state, help, clear
Copilot created this NEW system for simulator control. It's separate from your existing terminal.
Action: Nothing! Your existing CommandProcessor.cs works perfectly.
When to add Quake Console: Later, when you need simulator debugging features.
The Quake Console is for developer/trainer features like:
- Jumping to different workflow steps without going through the full process
- Injecting faults for testing (USB removed, cable unplugged, etc.)
- Viewing internal simulation state
- NOT for normal Pure Storage commands
If you want the developer console overlay, you need to:
-
Create a new Canvas in your scene:
- Right-click Hierarchy → UI → Canvas
- Name it "QuakeConsoleCanvas"
- Set Render Mode to "Screen Space - Overlay"
-
Add Console Panel:
- Create Panel under Canvas (name it "ConsolePanel")
- Set to fill top half of screen or as overlay
- Add Background image (semi-transparent black)
-
Add TextMeshPro Components:
- Add TMP_InputField for input (bottom of panel)
- Add TMP_Text for output (scrollable area)
- Add ScrollRect for scrolling
-
Attach ConsoleController:
- Add
ConsoleControllercomponent to a GameObject - Drag references in Inspector:
- Console Panel →
consolePanel - TMP_InputField →
inputField - TMP_Text →
outputText - ScrollRect →
scrollRect
- Console Panel →
- Add
-
Test: Press ` (backquote/tilde) to toggle console
| Feature | Serial Terminal (CommandProcessor) | Quake Console (ConsoleController) |
|---|---|---|
| Toggle | Always visible | Press ` to toggle |
| UI Type | Unity UI (Text/InputField) | TextMeshPro |
| Purpose | Run Purity OS commands | Control simulator |
| Commands | ls, mount, purearray, etc. | jump, inject, steps, etc. |
| Status | ✅ Working |
CRITICAL: These are TWO SEPARATE systems:
-
CommandProcessor.cs= Serial Terminal- Routes to
OS.cs→VirtualFileSystemHandler.cs - Uses Unity UI components
- Handles ALL operational Pure Storage commands
- Already fully integrated with 3D scene
- Routes to
-
ConsoleController.cs= Quake Console- Routes to
ConsoleRegistry→[ConsoleCommand]handlers - Uses TextMeshPro
- Handles ONLY simulator control commands
- NEW - not yet integrated into scene
- Routes to
When adding commands:
- Operational commands (ls, mount, purearray) → Add to
OS.csorVirtualFileSystemHandler.cs - Simulator control (jump, inject) → Add to
Assets/Scripts/Console/Commands/*.cs
Eventually you might want to:
- Keep
CommandProcessor.csas the Serial Terminal (operational commands) - Add
ConsoleController.csas an overlay for trainer features - OR migrate
CommandProcessor.csto use the newSerialCommandattribute system
For now, stick with what works (CommandProcessor.cs).
All errors resolved:
- ✅ Application.dataPath → UnityEngine.Application.dataPath
- ✅ URP references removed (not needed)
- ✅ TextMeshPro imported (for Quake Console when you set it up)
Your existing serial terminal still works exactly as before!