rustial-engine 0.0.1

Framework-agnostic 2.5D map engine for rustial
Documentation
//! Tagged enum for `FrameOutput` integration.

use super::{ColorRamp, ColumnInstanceSet, GeoGrid, PointInstanceSet, ScalarField2D};
use crate::layer::LayerId;

/// Extrusion rendering parameters.
#[derive(Debug, Clone)]
pub struct ExtrusionParams {
    /// Height scaling multiplier applied to scalar values.
    pub height_scale: f64,
    /// Base elevation in meters (added to altitude-mode-resolved base).
    pub base_meters: f64,
}

impl Default for ExtrusionParams {
    fn default() -> Self {
        Self {
            height_scale: 1.0,
            base_meters: 0.0,
        }
    }
}

/// A single visualization overlay collected from the layer stack during
/// [`MapState::update_with_dt`](crate::MapState::update_with_dt).
///
/// Renderers read these from [`FrameOutput::visualization`] alongside
/// terrain, vectors, and models.
#[derive(Debug, Clone)]
pub enum VisualizationOverlay {
    /// Flat georeferenced colour grid.
    GridScalar {
        /// Layer identity.
        layer_id: LayerId,
        /// Grid geometry.
        grid: GeoGrid,
        /// Scalar values.
        field: ScalarField2D,
        /// Colour transfer function.
        ramp: ColorRamp,
    },
    /// Extruded georeferenced grid.
    GridExtrusion {
        /// Layer identity.
        layer_id: LayerId,
        /// Grid geometry.
        grid: GeoGrid,
        /// Scalar values driving extrusion height.
        field: ScalarField2D,
        /// Colour transfer function.
        ramp: ColorRamp,
        /// Extrusion parameters.
        params: ExtrusionParams,
    },
    /// Instanced columns.
    Columns {
        /// Layer identity.
        layer_id: LayerId,
        /// Column instances.
        columns: ColumnInstanceSet,
        /// Colour transfer function (fallback for columns without per-instance colour).
        ramp: ColorRamp,
    },
    /// Point-cloud / scatter instances.
    Points {
        /// Layer identity.
        layer_id: LayerId,
        /// Point instances.
        points: PointInstanceSet,
        /// Colour transfer function (fallback for points without per-instance colour).
        ramp: ColorRamp,
    },
}