# SteamVR Overlay Project Breakdown

This Unity project implements SteamVR overlays with several interacting components:

## 1. Beamy (WatchOverlay.cs)
- Creates and manages a SteamVR overlay attached to VR controllers
- Renders camera output to an overlay via render texture
- Provides configurable position, rotation, and size parameters
- Implements auto-hiding functionality with a 3-second timer
- Can be attached to either left or right controller

## 2. WatchSettingController.cs
- Handles UI for switching the overlay between left/right controllers
- Connects UI buttons to the main Beamy component

## 3. DashboardOverlay.cs
- Creates and manages an interactive overlay in the SteamVR dashboard
- Sets up both the dashboard overlay and its thumbnail image
- Implements mouse interaction and UI event handling
- Translates SteamVR overlay events to Unity UI system events

## 4. InputController.cs
- Manages SteamVR input integration through the action system
- Loads the SteamVR action manifest
- Monitors the "WakeUp" action and triggers corresponding events
- Initializes and maintains OpenVR input subsystem

## 5. OpenVRUtil.cs
- Utility namespace with helper functions for OpenVR integration
- **System class**: Handles initialization and shutdown of OpenVR
- **Overlay class**: Comprehensive overlay manipulation methods including:
  - Creation and destruction of overlays
  - Transform management (position/rotation)
  - Texture management with graphics API adaptation
  - Visibility and property controls

## 6. Watch.cs
- Displays the current time on a TextMeshProUGUI component
- Updates every frame with the current HH:MM:SS time format

## 7. Rotate.cs
- Simple utility that rotates an object continuously around Y-axis
- Provides constant rotation at 0.5 degrees per frame

The project architecture creates two main overlay systems:
1. A wrist-mounted overlay displaying time information
2. An interactive dashboard panel with UI elements

This implementation demonstrates key SteamVR concepts including overlay positioning, rendering, input handling, and UI interaction within VR space, all while maintaining proper OpenVR resource management.