Skip to content

Virtual Screens And Media

Last reviewed: 2026-06-30

Screen Surfaces

The repo contains implementation artifacts for three virtual screen surfaces:

Surface Implemented evidence Status
Main Screen mainScreen models, mainscreen.html, MainScreenFlatQuad, MainScreenCurvedQuad, VirtualScreenCanvas. Present; scene wiring varies.
Companion Screen companionScreen models, companionscreen.html, CompanionScreenCanvas, CompanionScreenRT. Present in config/assets; runtime wiring partially confirmed.
Emphasis Projection emphasisProjection models, emphasisscreen.html, EmphasisScreenQuad, EmphasisScreenRT. Present in config/assets; runtime wiring partially confirmed.

Media Types

Media Loader/player Paths/examples Notes
Images UnityWebRequestTexture.GetTexture() screen.images[0].url, local StreamingAssets/*.png Main controller uses first image only.
Voiceover audio UnityWebRequestMultimedia.GetAudioClip() voiceover.audio.url Supports extension-inferred audio types.
Background audio UnityWebRequestMultimedia.GetAudioClip() audio.background.url, bg_audio.mp3 Looped/mixed through Unity audio and manual capture path.
Video files Unity video module and AVPro Video assets are present; StreamingAssets/video.mp4 and AVPro samples exist. Runtime use by first-party controller Unknown / not confirmed in repo.
HTML/Reveal Vuplex WebView, generated HTML, Reveal.js distribution under StreamingAssets/dist. Used by screen bridge and legacy reveal scripts.

Generated Virtual Screens

AnuvaScreenHtmlBuilder reads Assets/StreamingAssets/PresentationConfig.json and writes generated HTML under Assets/StreamingAssets/AnuvaVirtualScreens/generated/. It extracts surface blocks and rendererPayload.markup from the raw JSON text.

Runtime bridge:

Component Responsibility
AnuvaScreenBridgeHost Loads a generated HTML file into a CanvasWebViewPrefab and executes bridge JavaScript commands.
AnuvaVirtualScreensPlaybackController Builds a command schedule from screenContent.playbackOrder, fragment timings, and emphasis event timings.
anuva-screen-bridge.js Browser-side command receiver for slide/event/fragment operations.
Template/theme registries template-registry.json, theme-registry.json, and theme CSS files.

Legacy Reveal/Vuplex Path

VuplexRevealBridge and SyncWebTime freeze or drive browser time to make Reveal/Chart-style animation deterministic for AVPro capture. These scripts directly use Vuplex WebView APIs and execute JavaScript such as Reveal.next() or virtual clock ticks.

This path appears experimental or legacy beside the generated multi-surface virtual screen package. Keep it documented, but avoid treating it as the only screen architecture.

Limitations

  • Main controller image playback uses the first image in screen.images; multiple image sequencing is not confirmed.
  • Runtime video playback as a virtual screen surface is Unknown / not confirmed in first-party controller code.
  • Generated HTML builder uses regex over raw JSON, not the structured PresentationConfig model.
  • Direct integration between the main playback controller and generated virtual-screen scheduler is Unknown / not confirmed in repo.
  • Full-screen mode is implemented by toggling a Unity canvas between world space and screen-space overlay for camera shot FullScreen.