mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-07 11:28:28 +00:00
Prepare to manage multiple windows
This commit is contained in:
parent
938808966c
commit
1a36e6593a
@ -1,7 +1,4 @@
|
|||||||
use std::{
|
use std::{collections::BTreeMap, sync::mpsc::Receiver};
|
||||||
collections::BTreeMap,
|
|
||||||
sync::mpsc::{Receiver, sync_channel},
|
|
||||||
};
|
|
||||||
|
|
||||||
use fj_interop::TriMesh;
|
use fj_interop::TriMesh;
|
||||||
use futures::executor::block_on;
|
use futures::executor::block_on;
|
||||||
@ -28,24 +25,18 @@ pub struct Viewer {}
|
|||||||
|
|
||||||
impl Viewer {
|
impl Viewer {
|
||||||
/// # Construct a new model viewer
|
/// # Construct a new model viewer
|
||||||
pub fn new(tri_mesh: TriMesh, invert_zoom: bool) -> Result<Viewer, Error> {
|
pub fn new(
|
||||||
|
tri_mesh: Receiver<TriMesh>,
|
||||||
|
invert_zoom: bool,
|
||||||
|
) -> Result<Viewer, Error> {
|
||||||
let event_loop = EventLoop::new()?;
|
let event_loop = EventLoop::new()?;
|
||||||
|
|
||||||
let (tri_mesh_tx, tri_mesh_rx) = sync_channel(1);
|
|
||||||
|
|
||||||
let mut display_state = DisplayState {
|
let mut display_state = DisplayState {
|
||||||
next_tri_mesh: tri_mesh_rx,
|
next_tri_mesh: tri_mesh,
|
||||||
invert_zoom,
|
invert_zoom,
|
||||||
windows: BTreeMap::new(),
|
windows: BTreeMap::new(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let Ok(()) = tri_mesh_tx.send(tri_mesh) else {
|
|
||||||
unreachable!(
|
|
||||||
"Receiver has not been dropped, so it's not possible for the \
|
|
||||||
send to fail."
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
event_loop.run_app(&mut display_state)?;
|
event_loop.run_app(&mut display_state)?;
|
||||||
|
|
||||||
Ok(Viewer {})
|
Ok(Viewer {})
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use std::{error::Error as _, fmt};
|
use std::{error::Error as _, fmt, sync::mpsc::sync_channel};
|
||||||
|
|
||||||
use fj_core::{
|
use fj_core::{
|
||||||
Core,
|
Core,
|
||||||
@ -90,7 +90,15 @@ impl Instance {
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
Viewer::new(mesh, false)?;
|
let (tri_mesh_tx, tri_mesh_rx) = sync_channel(1);
|
||||||
|
let Ok(()) = tri_mesh_tx.send(mesh) else {
|
||||||
|
unreachable!(
|
||||||
|
"Receiver has not been dropped, so it's not possible for the \
|
||||||
|
send to fail."
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Viewer::new(tri_mesh_rx, false)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user