//! Data-oriented cutscene playback.
//!
//! A [`Cutscene`](components::Cutscene) is a flat, serializable timeline of
//! [`CutsceneEvent`](components::CutsceneEvent)s. Each event owns a time window
//! (`start`, `duration`), an easing curve, and a [`CutsceneAction`](components::CutsceneAction)
//! describing what changes: camera moves and cuts, actor motion, dialogue,
//! titles, fades, and letterbox bars.
//!
//! Playback lives in the [`CutsceneDirector`](resources::CutsceneDirector)
//! resource. Actors are plain engine entities referenced by logical name; the
//! director resolves names to entities through its bindings, so a cutscene is
//! pure data with no entity handles baked in. [`advance_cutscene_system`] reads
//! the director each frame, drives the bound camera and actor transforms, and
//! paints the dialogue, title, fade, and letterbox overlay.

pub mod components;
pub mod resources;
pub mod systems;

pub use components::{Cutscene, CutsceneAction, CutsceneEvent, CutsceneShot, camera_look_rotation};
pub use resources::{
    CutsceneDirector, CutsceneOverlay, bind_cutscene_actor, cutscene_finished, cutscene_playing,
    cutscene_progress, cutscene_time, pause_cutscene, play_cutscene, play_cutscene_reel,
    queue_cutscene, resume_cutscene, seek_cutscene, set_cutscene_camera, set_cutscene_localization,
    stop_cutscene, take_cutscene_markers,
};
pub use systems::advance_cutscene_system;
