Skip to content

Commit

Permalink
Simplify feature update (Maximkaaa#32)
Browse files Browse the repository at this point in the history
* Move lods out of render bundle

* Move updating render bundles from wgpu module
  • Loading branch information
Maximkaaa authored Jan 27, 2024
1 parent 55c5086 commit d984043
Show file tree
Hide file tree
Showing 21 changed files with 453 additions and 512 deletions.
19 changes: 8 additions & 11 deletions galileo/examples/feature_layers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use galileo::layer::feature_layer::symbol::Symbol;
use galileo::layer::feature_layer::FeatureLayer;
use galileo::render::point_paint::PointPaint;
use galileo::render::render_bundle::RenderBundle;
use galileo::render::{PrimitiveId, UnpackedBundle};
use galileo::render::PrimitiveId;
use galileo::Color;
use galileo_types::cartesian::traits::cartesian_point::CartesianPoint3d;
use galileo_types::geo::crs::Crs;
Expand Down Expand Up @@ -55,7 +55,7 @@ pub async fn run(builder: MapBuilder) {
countries,
CountrySymbol {},
Crs::EPSG3857,
vec![8000.0, 1000.0, 1.0],
&vec![8000.0, 1000.0, 1.0],
);
let feature_layer = Arc::new(RwLock::new(feature_layer));

Expand All @@ -65,7 +65,7 @@ pub async fn run(builder: MapBuilder) {
builder
.with_layer(feature_layer.clone())
.with_layer(point_layer)
.with_event_handler(move |ev, map, backend| {
.with_event_handler(move |ev, map, _backend| {
if let UserEvent::Click(button, event) = ev {
if *button == MouseButton::Left {
let layer = feature_layer.write().unwrap();
Expand Down Expand Up @@ -114,7 +114,7 @@ pub async fn run(builder: MapBuilder) {
}

if !to_update.is_empty() {
layer.update_features(&to_update, backend);
layer.update_features(&to_update);
}

return EventPropagation::Stop;
Expand Down Expand Up @@ -149,17 +149,13 @@ impl Symbol<Country> for CountrySymbol {
feature: &Country,
geometry: &Geom<P>,
bundle: &mut RenderBundle,
min_resolution: f64,
) -> Vec<PrimitiveId> {
self.get_polygon_symbol(feature)
.render(&(), geometry, bundle)
.render(&(), geometry, bundle, min_resolution)
}

fn update(
&self,
feature: &Country,
render_ids: &[PrimitiveId],
bundle: &mut Box<dyn UnpackedBundle>,
) {
fn update(&self, feature: &Country, render_ids: &[PrimitiveId], bundle: &mut RenderBundle) {
let renders_by_feature = render_ids.len() / feature.geometry.parts().len();
let mut next_index = 0;
for _ in feature.geometry.parts() {
Expand All @@ -184,6 +180,7 @@ impl Symbol<City> for CitySymbol {
feature: &City,
geometry: &Geom<P>,
bundle: &mut RenderBundle,
_min_resolution: f64,
) -> Vec<PrimitiveId> {
let size = (feature.population / 1000.0).log2() as f32;
let ids = vec![];
Expand Down
16 changes: 6 additions & 10 deletions galileo/examples/lambert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use galileo::layer::feature_layer::symbol::polygon::SimplePolygonSymbol;
use galileo::layer::feature_layer::symbol::Symbol;
use galileo::layer::feature_layer::FeatureLayer;
use galileo::render::render_bundle::RenderBundle;
use galileo::render::{PrimitiveId, UnpackedBundle};
use galileo::render::PrimitiveId;
use galileo::view::MapView;
use galileo::Color;
use galileo_types::cartesian::impls::point::Point2d;
Expand Down Expand Up @@ -50,7 +50,7 @@ pub async fn run(builder: MapBuilder) {
),
))
.with_layer(feature_layer.clone())
.with_event_handler(move |ev, map, backend| {
.with_event_handler(move |ev, map, _backend| {
if let UserEvent::PointerMoved(event) = ev {
let mut layer = feature_layer.write().unwrap();

Expand Down Expand Up @@ -92,7 +92,7 @@ pub async fn run(builder: MapBuilder) {
}

if !to_update.is_empty() {
layer.update_features(&to_update, backend);
layer.update_features(&to_update);
}

return EventPropagation::Stop;
Expand Down Expand Up @@ -127,17 +127,13 @@ impl Symbol<Country> for CountrySymbol {
feature: &Country,
geometry: &Geom<P>,
bundle: &mut RenderBundle,
min_resolution: f64,
) -> Vec<PrimitiveId> {
self.get_polygon_symbol(feature)
.render(&(), geometry, bundle)
.render(&(), geometry, bundle, min_resolution)
}

fn update(
&self,
feature: &Country,
render_ids: &[PrimitiveId],
bundle: &mut Box<dyn UnpackedBundle>,
) {
fn update(&self, feature: &Country, render_ids: &[PrimitiveId], bundle: &mut RenderBundle) {
let renders_by_feature = render_ids.len() / feature.geometry.parts().len();
let mut next_index = 0;
for _ in feature.geometry.parts() {
Expand Down
1 change: 1 addition & 0 deletions galileo/examples/las.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ impl Symbol<ColoredPoint> for ColoredPointSymbol {
feature: &ColoredPoint,
geometry: &Geom<P>,
bundle: &mut RenderBundle,
_min_resolution: f64,
) -> Vec<PrimitiveId> {
if let Geom::Point(point) = geometry {
vec![bundle.add_point(point, PointPaint::dot(feature.color))]
Expand Down
1 change: 1 addition & 0 deletions galileo/examples/many_points.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ impl Symbol<ColoredPoint> for ColoredPointSymbol {
feature: &ColoredPoint,
geometry: &Geom<P>,
bundle: &mut RenderBundle,
_min_resolution: f64,
) -> Vec<PrimitiveId> {
if let Geom::Point(point) = geometry {
vec![bundle.add_point(point, PointPaint::dot(feature.color))]
Expand Down
Loading

0 comments on commit d984043

Please sign in to comment.