forked from 1b-agent/opencadstudio-upstream
fix(save): preserve 3D view and thumbnails
Persist camera, render state, and solid fallback geometry across saves. Generate previews from a clean live viewport and refresh recent-file thumbnails immediately.
This commit is contained in:
1 parent
c4515cbbc1
commit
e94cbedaa2
15 files changed
+658
-629
No files matched your search
@@ -16,6 +16,7 @@ use iced::{mouse, Event, Rectangle};
|
||||
pub struct ViewportPane<'a> {
|
||||
pub scene: &'a Scene,
|
||||
pub show_viewcube: bool,
|
||||
pub show_interaction: bool,
|
||||
/// Render mode applied to the active Model tile or active paper viewport.
|
||||
/// The app may supply a temporary gallery-hover mode; inactive viewports
|
||||
/// keep the values stored on their own tile/entity.
|
||||
@@ -33,12 +34,14 @@ impl<'a> ViewportPane<'a> {
|
||||
pub fn model(
|
||||
scene: &'a Scene,
|
||||
show_viewcube: bool,
|
||||
show_interaction: bool,
|
||||
render_mode: acadrust::entities::ViewportRenderMode,
|
||||
viewcube_text_color: [f32; 4],
|
||||
) -> Self {
|
||||
Self {
|
||||
scene,
|
||||
show_viewcube,
|
||||
show_interaction,
|
||||
render_mode,
|
||||
pane: None,
|
||||
viewcube_text_color,
|
||||
@@ -50,6 +53,7 @@ impl<'a> ViewportPane<'a> {
|
||||
pub fn for_pane(
|
||||
scene: &'a Scene,
|
||||
show_viewcube: bool,
|
||||
show_interaction: bool,
|
||||
render_mode: acadrust::entities::ViewportRenderMode,
|
||||
tile_idx: usize,
|
||||
viewcube_text_color: [f32; 4],
|
||||
@@ -57,6 +61,7 @@ impl<'a> ViewportPane<'a> {
|
||||
Self {
|
||||
scene,
|
||||
show_viewcube,
|
||||
show_interaction,
|
||||
render_mode,
|
||||
pane: Some(tile_idx),
|
||||
viewcube_text_color,
|
||||
@@ -82,6 +87,7 @@ impl<'a, Msg: std::fmt::Debug + Clone> shader::Program<Msg> for ViewportPane<'a>
|
||||
idx,
|
||||
self.render_mode,
|
||||
self.show_viewcube,
|
||||
self.show_interaction,
|
||||
self.viewcube_text_color,
|
||||
),
|
||||
None => self.scene.build_viewports(
|
||||
@@ -89,6 +95,7 @@ impl<'a, Msg: std::fmt::Debug + Clone> shader::Program<Msg> for ViewportPane<'a>
|
||||
self.render_mode,
|
||||
state.hover_region,
|
||||
self.show_viewcube,
|
||||
self.show_interaction,
|
||||
self.viewcube_text_color,
|
||||
),
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user