Closed BradyBrenot closed 5 years ago
// Scene is // - A bunch of effects // - Those effects' properties
// Routine is // - One or more scenes and the rooms to apply them to // - A trigger condition // - Schedule, hotkey, button // // A routine can be used to // - Trigger multiple scenes // - Triggers scenes on special events (hotkeys, times, ...)
//Fold 'routine' into the Scene object
// Multiple scenes may be in effect against the same room at the same time (see below for exceptions) // The same scene may affect multiple rooms at the same time.
// Types of scenes // - Background scene - Cut off any layers below them. // - Blend scene - More than one may apply to a given room at one time! // "Background scene" is implied if a scene has certain effects
// Scenes layer with opacity // - Color after applying layer B: layer A's color (1 - layer B's opacity) + layer B's color layer B's opacity // (processing top-down as an optimization)
Update loop
I could complicate this by making it more asynchronous, threading it, whatever, but it's likely unnecessary.
Requirements
Effects
Triggers
User stories
Cinema mode
I click on my "cinema scene"; some of my lights dim, some turn off, and the light behind my TV enters screen sync mode.
Hockey mode (#20)
I click on "hockey scene"; my side lights turn to my team's color, while the light behind the TV enters a nice cool white. When my team scores, all of my lights pulse red for a few moments before returning to their previous colors.
Dimmer switch
The dimmer switch can activate or deactivate screen sync mode. It can also change the options on the currently-used screen sync mode, e.g. changing the current brightness multiplier.
Design
Glossary