bevy_simple_screenshot 0.1.2

A plug-and-play screenshot library for Bevy 0.17+ with ring-buffered capture and automatic saving
//! Screenshot macros for convenient capture triggering.

/// Take a screenshot with optional key specification.
///
/// # Usage
///
/// ```rust,ignore
/// // With default key
/// screenshot!(&trigger, "player jumped");
///
/// // With specific key
/// screenshot!(&trigger, "combat", "boss defeated");
/// ```
#[macro_export]
macro_rules! screenshot {
    ($trigger:expr, $description:expr) => {
        $trigger.capture($description)
    };
    ($trigger:expr, $key:expr, $description:expr) => {
        $trigger.capture_with_key($key, $description)
    };
}

/// Take a screenshot of a specific entity, cropped to the entity bounds with padding.
///
/// Requires `EntityScreenshotTrigger` system parameter instead of `ScreenshotTrigger`.
///
/// # Usage
///
/// ```rust,ignore
/// fn my_system(trigger: EntityScreenshotTrigger, hero: Query<Entity, With<Hero>>) {
///     let hero_entity = hero.single();
///
///     // With default key and settings (20px padding)
///     screenshot_entity!(&trigger, hero_entity);
///
///     // With specific key
///     screenshot_entity!(&trigger, hero_entity, "hero");
///
///     // With key and description
///     screenshot_entity!(&trigger, hero_entity, "hero", "special_attack");
///
///     // With key, description, and custom settings
///     let settings = EntityScreenshotSettings::default().with_padding(50);
///     screenshot_entity!(&trigger, hero_entity, "hero", "special_attack", settings);
/// }
/// ```
#[macro_export]
macro_rules! screenshot_entity {
    // Entity only (default key, empty description, default settings)
    ($trigger:expr, $entity:expr) => {
        $trigger.capture($entity)
    };
    // Entity + key
    ($trigger:expr, $entity:expr, $key:expr) => {
        $trigger.capture_key($entity, $key)
    };
    // Entity + key + description
    ($trigger:expr, $entity:expr, $key:expr, $description:expr) => {
        $trigger.capture_key_desc($entity, $key, $description)
    };
    // Entity + key + description + settings
    ($trigger:expr, $entity:expr, $key:expr, $description:expr, $settings:expr) => {
        $trigger.capture_with_key($entity, $key, $description, $settings)
    };
}