Files
ytLlive/Models/index.md
T

3.0 KiB

Models — index

Plain data types. No logic beyond what a property can carry. See schema.md for the memory-map conventions.

File Purpose
Scene.cs A scene: Name, IsHidden, IsChatScene, IsEditing, HasBackdrop (Live-only policy flag, default off — only the canonical Live scene has one, see SceneCatalog), Elements collection (images + webcam config), WebcamConfig accessor
SceneCatalog.cs The five canonical scenes (Starting/Live/BRB/Chat/Ending) — the product, by name: All, IsCanonical, Is(name, canonical) (case-insensitive trim), IsChat, HasBackdrop(name) (true only for Live). Drives the empty-DB seed, the "+" missing-scenes menu, and MainViewModel.EnforceBackdropPolicy
Source.cs A source: SourceType enum (DisplayCapture/WindowCapture/Background/Image/TextOverlay — Webcam removed), X/Y/Width/Height, Opacity, IsEnabled, ImageSource (static) / VideoImageSource (live frames), DisplaySource (IsLiveCapture → video, else static), ClipShape enum (Traditional/Round), IsMirrored + MirrorScale, MirrorButtonText/ShapeButtonText, asset identity, IsImageSource (XAML binds this, never Type), backdrop surface: IsBackdrop (permanent bottom layer, never removable), CaptureKey (persisted monitor:<n>/window:<hwnd>/picker:<name>), IsLiveCapture (Type is Display/WindowCapture)
SceneElement.cs Base for anything placeable in a scene: shared layout/clip/mirror/border surface, virtual IsWebcam/virtual IsImageSource; ToggleClipShape + persisted RectWidth/RectHeight (pre-Round rect so round→rect restores after reload)
Webcam.cs Singleton webcam identity: Id, DeviceId, Name (one row app-wide)
WebcamSceneConfig.cs Per-scene webcam placement (subclass of SceneElement): geometry + IsVisible + border (BorderColor/BorderOpacity/BorderWidth/BorderAnimation) + VideoImageSource; WebcamId links to Webcam
QualityOption.cs Resolution tier record (Display, Fps, Bitrate, Width, Height); Label formats as 1080p60 (8Mbps) — drives the bottom-bar dropdown and the output-rect math
StreamConfig.cs StreamConfig (note: TargetBitrate/Resolution defaults are stale — not yet wired to the dropdown), StreamHealth (bitrate/FPS/dropped/duration), StreamStatus enum
YouTube.cs YouTubeChannel and ChatMessage (chat feed)
Socials.cs Social bar (global resource, per-scene presence): SocialService enum (YouTube/Twitch/X/Instagram/TikTok/Facebook/Discord/Kick/Threads/Bluesky/GitHub/LinkedIn/Pinterest/Snapchat/Reddit/WhatsApp/Telegram/Link/Website), SocialEntry (Service/Handle/ProfileUrl + Initials/AccentColor), SocialsConfig (Entries + BarPosition Top/Bottom + BarJustify LCR), SocialServiceIcons (canonical URL builder + initials/color per service)

Related: ViewModels/index.md consume these; Services/LayoutStore.cs persists Scene/Source.