mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-05 18:38:28 +00:00
Track selected operation in OpsLog
This is going to simplify things, as both are going to be needed together.
This commit is contained in:
parent
d7ec3fa57c
commit
0c840553f4
@ -10,13 +10,14 @@ use winit::{
|
||||
|
||||
use crate::{geometry::OpsLog, render::Renderer};
|
||||
|
||||
pub fn run(ops: OpsLog) -> anyhow::Result<()> {
|
||||
pub fn run(mut ops: OpsLog) -> anyhow::Result<()> {
|
||||
let event_loop = EventLoop::new()?;
|
||||
|
||||
let selected_op = ops.operations.len().saturating_sub(1);
|
||||
ops.selected = selected_op;
|
||||
|
||||
let mut app = App {
|
||||
ops,
|
||||
selected_op,
|
||||
window: None,
|
||||
renderer: None,
|
||||
pressed_keys: BTreeSet::new(),
|
||||
@ -28,7 +29,6 @@ pub fn run(ops: OpsLog) -> anyhow::Result<()> {
|
||||
|
||||
struct App {
|
||||
ops: OpsLog,
|
||||
selected_op: usize,
|
||||
window: Option<Arc<Window>>,
|
||||
renderer: Option<Renderer>,
|
||||
pressed_keys: BTreeSet<Key>,
|
||||
@ -96,12 +96,12 @@ impl ApplicationHandler for App {
|
||||
|
||||
match logical_key {
|
||||
Key::Named(NamedKey::ArrowDown) => {
|
||||
if self.selected_op < self.ops.operations.len() {
|
||||
self.selected_op += 1;
|
||||
if self.ops.selected < self.ops.operations.len() {
|
||||
self.ops.selected += 1;
|
||||
}
|
||||
}
|
||||
Key::Named(NamedKey::ArrowUp) => {
|
||||
self.selected_op = self.selected_op.saturating_sub(1);
|
||||
self.ops.selected = self.ops.selected.saturating_sub(1);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
@ -110,7 +110,7 @@ impl ApplicationHandler for App {
|
||||
}
|
||||
WindowEvent::RedrawRequested => {
|
||||
if let Some(selected) =
|
||||
self.ops.operations.get(self.selected_op)
|
||||
self.ops.operations.get(self.ops.selected)
|
||||
{
|
||||
if let Err(err) = renderer.render(selected, &self.ops) {
|
||||
eprintln!("Render error: {err}");
|
||||
|
@ -7,6 +7,7 @@ use super::{Operation, Triangle, Vertex};
|
||||
#[derive(Default)]
|
||||
pub struct OpsLog {
|
||||
pub operations: Vec<OperationInSequence>,
|
||||
pub selected: usize,
|
||||
}
|
||||
|
||||
impl OpsLog {
|
||||
|
Loading…
Reference in New Issue
Block a user