Fix viewport culling with nested layers (#939)

* Fix viewport culling with nested layers

* Clean up naming
This commit is contained in:
0HyperCube
2023-01-02 15:27:11 +00:00
committed by Keavon Chambers
parent df44e8d978
commit 7cc1a192cb
6 changed files with 41 additions and 19 deletions
+6 -3
View File
@@ -6,7 +6,6 @@ use crate::{DocumentError, LayerId};
use glam::DVec2;
use serde::{Deserialize, Serialize};
use std::fmt::Write;
/// A layer that encapsulates other layers, including potentially more folders.
/// The contained layers are rendered in the same order they are
@@ -22,10 +21,14 @@ pub struct FolderLayer {
}
impl LayerData for FolderLayer {
fn render(&mut self, svg: &mut String, svg_defs: &mut String, transforms: &mut Vec<glam::DAffine2>, render_data: RenderData) {
fn render(&mut self, svg: &mut String, svg_defs: &mut String, transforms: &mut Vec<glam::DAffine2>, render_data: RenderData) -> bool {
let mut any_child_requires_refresh = false;
for layer in &mut self.layers {
let _ = writeln!(svg, "{}", layer.render(transforms, svg_defs, render_data));
let (svg_value, requires_refresh) = layer.render(transforms, svg_defs, render_data);
*svg += svg_value;
any_child_requires_refresh = any_child_requires_refresh || requires_refresh;
}
!any_child_requires_refresh
}
fn intersects_quad(&self, quad: Quad, path: &mut Vec<LayerId>, intersections: &mut Vec<Vec<LayerId>>, font_cache: &FontCache) {