Skip to main content

visualization/
lib.rs

1mod boundary_viz;
2mod colorbar;
3mod contour;
4mod contour_range;
5pub use contour_range::ContourRangeMode;
6pub mod result_probe;
7mod demo_mesh;
8mod material_colors;
9pub use material_colors::{
10    INVALID_MATERIAL_COLOR, MaterialColorMode, UNASSIGNED_MATERIAL_COLOR, material_identity_color,
11};
12
13use bevy::prelude::*;
14use interaction::InteractionSystems;
15
16use boundary_viz::{spawn_boundary_load_preview, spawn_boundary_visuals};
17use colorbar::{spawn_colorbar, update_colorbar};
18use contour::{ContourSurface, apply_contour_visibility, update_contour_surface};
19use demo_mesh::{
20    apply_contact_review, apply_visualization_mode, respawn_elements_on_setup_change,
21    respawn_visuals_on_reload, restore_selection_on_new_visuals,
22    spawn_contact_candidate_highlights, spawn_demo_mesh, spawn_rigid_spider_highlights,
23    spawn_topology_highlights, update_contact_candidate_highlights, update_contact_review_pose,
24    update_hover_materials, update_rigid_spider_highlights, update_topology_highlights,
25    update_visual_layer_visibility,
26};
27
28pub use boundary_viz::{
29    BoundaryLoadPreview, BoundaryLoadPreviewArrow, BoundaryLoadPreviewKind,
30    BoundaryLoadPreviewMoment, BoundaryLoadPreviewVisual, BoundaryVisual, BoundaryVisualSettings,
31};
32pub use colorbar::ColorbagRoot;
33pub use demo_mesh::{
34    ContactDraftPreview, ContactDraftSlave, ContactDraftSurface, ContactReviewSettings,
35    ContourSettings, DefinedContactPreview, DefinedMpcPreview, FemMeshVisual, FemPartVisual,
36    FlatMaterial, MpcPairDraftPreview, RigidSpiderReviewSettings, TransparentMaterial,
37    VisualizationMode, VisualizationSettings, build_part_edge_mesh, build_part_surface_mesh,
38};
39
40pub struct VisualizationPlugin;
41
42impl Plugin for VisualizationPlugin {
43    fn build(&self, app: &mut App) {
44        app.init_resource::<VisualizationSettings>();
45        app.init_resource::<ContourRangeMode>();
46        app.init_resource::<MaterialColorMode>();
47        app.init_resource::<ContourSurface>();
48        app.init_resource::<ContactReviewSettings>();
49        app.init_resource::<DefinedContactPreview>();
50        app.init_resource::<ContactDraftPreview>();
51        app.init_resource::<RigidSpiderReviewSettings>();
52        app.init_resource::<DefinedMpcPreview>();
53        app.init_resource::<MpcPairDraftPreview>();
54        app.init_resource::<demo_mesh::ContactReviewPose>();
55        app.init_resource::<fem_core::FemModelVersion>();
56        app.init_resource::<fem_core::ContactCandidateState>();
57        app.init_resource::<fem_core::RigidSpiderCandidateState>();
58        app.init_resource::<fem_core::FemResultSet>();
59        app.init_resource::<fem_core::AnalysisSetup>();
60        app.init_resource::<fem_core::HoverPreviewTargets>();
61        app.init_resource::<BoundaryVisualSettings>();
62        app.init_resource::<BoundaryLoadPreview>();
63        app.add_systems(
64            Startup,
65            (
66                spawn_demo_mesh,
67                spawn_topology_highlights,
68                spawn_contact_candidate_highlights,
69                spawn_rigid_spider_highlights,
70                spawn_colorbar,
71            ),
72        );
73
74        app.add_systems(
75            Update,
76            (
77                respawn_visuals_on_reload,
78                respawn_elements_on_setup_change.after(respawn_visuals_on_reload),
79                restore_selection_on_new_visuals
80                    .after(respawn_elements_on_setup_change)
81                    .after(InteractionSystems::Selection),
82                update_hover_materials
83                    .after(InteractionSystems::Selection)
84                    .after(restore_selection_on_new_visuals)
85                    .after(apply_visualization_mode),
86                update_visual_layer_visibility.after(respawn_elements_on_setup_change),
87                apply_visualization_mode.after(update_visual_layer_visibility),
88                update_contact_review_pose,
89                apply_contact_review
90                    .after(update_contact_review_pose)
91                    .after(update_hover_materials)
92                    .after(apply_visualization_mode),
93                update_topology_highlights.after(InteractionSystems::Selection),
94                update_contact_candidate_highlights
95                    .after(update_contact_review_pose)
96                    .after(apply_contact_review),
97                update_rigid_spider_highlights.after(update_contact_candidate_highlights),
98                update_contour_surface
99                    .after(apply_contact_review)
100                    .after(respawn_elements_on_setup_change),
101                apply_contour_visibility.after(update_contour_surface),
102                contour::hide_pre_overlays_in_result_view.after(update_topology_highlights).after(spawn_boundary_visuals),
103                update_colorbar,
104                spawn_boundary_visuals,
105                spawn_boundary_load_preview,
106            ),
107        );
108    }
109}