mirror of
https://github.com/SpaceManiac/SpacemanDMM.git
synced 2025-12-23 05:36:47 +00:00
Allow showing multiple z-levels onscreen at once
This commit is contained in:
parent
7ebd47e856
commit
c852b7bd13
1 changed files with 40 additions and 15 deletions
|
|
@ -97,6 +97,8 @@ pub struct EditorScene {
|
|||
ui_debug_window: bool,
|
||||
ui_errors: bool,
|
||||
ui_extra_vars: bool,
|
||||
stacked_rendering: bool,
|
||||
stacked_inverted: bool,
|
||||
}
|
||||
|
||||
pub struct Environment {
|
||||
|
|
@ -193,6 +195,8 @@ impl EditorScene {
|
|||
ui_debug_window: true,
|
||||
ui_errors: false,
|
||||
ui_extra_vars: false,
|
||||
stacked_rendering: false,
|
||||
stacked_inverted: false,
|
||||
};
|
||||
ed.finish_init();
|
||||
ed
|
||||
|
|
@ -337,24 +341,38 @@ impl EditorScene {
|
|||
|
||||
if let Some(map) = self.maps.get_mut(self.map_current) {
|
||||
if let Some(hist) = map.state.hist() {
|
||||
let z_current = map.z_current;
|
||||
let map_renderer = &mut self.map_renderer;
|
||||
let factory = &mut self.factory;
|
||||
if let Some(rendered) = map.rendered.get_mut(map.z_current) {
|
||||
rendered.fulfill(|| {
|
||||
map_renderer.render(
|
||||
let mut levels = Vec::new();
|
||||
if !self.stacked_rendering { // normal rendering
|
||||
levels.push(map.z_current);
|
||||
} else if !self.stacked_inverted { // stacked rendering
|
||||
for z in map.z_current..map.rendered.len() {
|
||||
levels.push(z);
|
||||
}
|
||||
} else { // inverted stacked rendering
|
||||
for z in (0..=map.z_current).rev() {
|
||||
levels.push(z);
|
||||
}
|
||||
}
|
||||
|
||||
for &z in levels.iter().rev() {
|
||||
if let Some(rendered) = map.rendered.get_mut(z) {
|
||||
rendered.fulfill(|| {
|
||||
map_renderer.render(
|
||||
hist.current(),
|
||||
z as u32,
|
||||
)
|
||||
}).paint(
|
||||
map_renderer,
|
||||
hist.current(),
|
||||
z_current as u32,
|
||||
)
|
||||
}).paint(
|
||||
map_renderer,
|
||||
hist.current(),
|
||||
map.z_current as u32,
|
||||
map.center,
|
||||
factory,
|
||||
encoder,
|
||||
&self.target,
|
||||
);
|
||||
z as u32,
|
||||
map.center,
|
||||
factory,
|
||||
encoder,
|
||||
&self.target,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -489,6 +507,13 @@ impl EditorScene {
|
|||
.selected(&mut self.ui_extra_vars)
|
||||
.build();
|
||||
ui.separator();
|
||||
ui.menu_item(im_str!("Stacked rendering"))
|
||||
.selected(&mut self.stacked_rendering)
|
||||
.build();
|
||||
ui.menu_item(im_str!("Invert order"))
|
||||
.selected(&mut self.stacked_inverted)
|
||||
.build();
|
||||
ui.separator();
|
||||
for &zoom in [0.5, 1.0, 2.0, 4.0].iter() {
|
||||
let mut selected = self.map_renderer.zoom == zoom;
|
||||
if ui.menu_item(im_str!("{}%", 100.0 * zoom)).selected(&mut selected).build() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue