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}