bevyistr-visualization 0.2.0

Finite-element mesh and result rendering for bevyistr
Documentation
mod boundary_viz;
mod colorbar;
mod contour;
mod contour_range;
pub use contour_range::ContourRangeMode;
pub mod result_probe;
mod demo_mesh;
mod material_colors;
pub use material_colors::{
    INVALID_MATERIAL_COLOR, MaterialColorMode, UNASSIGNED_MATERIAL_COLOR, material_identity_color,
};

use bevy::prelude::*;
use interaction::InteractionSystems;

use boundary_viz::{spawn_boundary_load_preview, spawn_boundary_visuals};
use colorbar::{spawn_colorbar, update_colorbar};
use contour::{ContourSurface, apply_contour_visibility, update_contour_surface};
use demo_mesh::{
    apply_contact_review, apply_visualization_mode, respawn_elements_on_setup_change,
    respawn_visuals_on_reload, restore_selection_on_new_visuals,
    spawn_contact_candidate_highlights, spawn_demo_mesh, spawn_rigid_spider_highlights,
    spawn_topology_highlights, update_contact_candidate_highlights, update_contact_review_pose,
    update_hover_materials, update_rigid_spider_highlights, update_topology_highlights,
    update_visual_layer_visibility,
};

pub use boundary_viz::{
    BoundaryLoadPreview, BoundaryLoadPreviewArrow, BoundaryLoadPreviewKind,
    BoundaryLoadPreviewMoment, BoundaryLoadPreviewVisual, BoundaryVisual, BoundaryVisualSettings,
};
pub use colorbar::ColorbagRoot;
pub use demo_mesh::{
    ContactDraftPreview, ContactDraftSlave, ContactDraftSurface, ContactReviewSettings,
    ContourSettings, DefinedContactPreview, DefinedMpcPreview, FemMeshVisual, FemPartVisual,
    FlatMaterial, MpcPairDraftPreview, RigidSpiderReviewSettings, TransparentMaterial,
    VisualizationMode, VisualizationSettings, build_part_edge_mesh, build_part_surface_mesh,
};

pub struct VisualizationPlugin;

impl Plugin for VisualizationPlugin {
    fn build(&self, app: &mut App) {
        app.init_resource::<VisualizationSettings>();
        app.init_resource::<ContourRangeMode>();
        app.init_resource::<MaterialColorMode>();
        app.init_resource::<ContourSurface>();
        app.init_resource::<ContactReviewSettings>();
        app.init_resource::<DefinedContactPreview>();
        app.init_resource::<ContactDraftPreview>();
        app.init_resource::<RigidSpiderReviewSettings>();
        app.init_resource::<DefinedMpcPreview>();
        app.init_resource::<MpcPairDraftPreview>();
        app.init_resource::<demo_mesh::ContactReviewPose>();
        app.init_resource::<fem_core::FemModelVersion>();
        app.init_resource::<fem_core::ContactCandidateState>();
        app.init_resource::<fem_core::RigidSpiderCandidateState>();
        app.init_resource::<fem_core::FemResultSet>();
        app.init_resource::<fem_core::AnalysisSetup>();
        app.init_resource::<fem_core::HoverPreviewTargets>();
        app.init_resource::<BoundaryVisualSettings>();
        app.init_resource::<BoundaryLoadPreview>();
        app.add_systems(
            Startup,
            (
                spawn_demo_mesh,
                spawn_topology_highlights,
                spawn_contact_candidate_highlights,
                spawn_rigid_spider_highlights,
                spawn_colorbar,
            ),
        );

        app.add_systems(
            Update,
            (
                respawn_visuals_on_reload,
                respawn_elements_on_setup_change.after(respawn_visuals_on_reload),
                restore_selection_on_new_visuals
                    .after(respawn_elements_on_setup_change)
                    .after(InteractionSystems::Selection),
                update_hover_materials
                    .after(InteractionSystems::Selection)
                    .after(restore_selection_on_new_visuals)
                    .after(apply_visualization_mode),
                update_visual_layer_visibility.after(respawn_elements_on_setup_change),
                apply_visualization_mode.after(update_visual_layer_visibility),
                update_contact_review_pose,
                apply_contact_review
                    .after(update_contact_review_pose)
                    .after(update_hover_materials)
                    .after(apply_visualization_mode),
                update_topology_highlights.after(InteractionSystems::Selection),
                update_contact_candidate_highlights
                    .after(update_contact_review_pose)
                    .after(apply_contact_review),
                update_rigid_spider_highlights.after(update_contact_candidate_highlights),
                update_contour_surface
                    .after(apply_contact_review)
                    .after(respawn_elements_on_setup_change),
                apply_contour_visibility.after(update_contour_surface),
                contour::hide_pre_overlays_in_result_view.after(update_topology_highlights).after(spawn_boundary_visuals),
                update_colorbar,
                spawn_boundary_visuals,
                spawn_boundary_load_preview,
            ),
        );
    }
}