Skip to content

Commit

Permalink
Merge branch 'main' into feature/ui-roots-fix
Browse files Browse the repository at this point in the history
  • Loading branch information
oceantume committed Sep 5, 2022
2 parents 63c6bb4 + 092bb71 commit f8240c9
Show file tree
Hide file tree
Showing 13 changed files with 88 additions and 83 deletions.
2 changes: 1 addition & 1 deletion crates/bevy_ecs/examples/events.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use bevy_ecs::{event::Events, prelude::*};
use bevy_ecs::prelude::*;

// In this example a system sends a custom event with a 50/50 chance during any frame.
// If an event was send, it will be printed by the console in a receiving system.
Expand Down
5 changes: 2 additions & 3 deletions crates/bevy_ecs/src/event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,9 +207,8 @@ impl<'w, 's, E: Event> EventReader<'w, 's, E> {
&mut self,
) -> impl DoubleEndedIterator<Item = (&E, EventId<E>)> + ExactSizeIterator<Item = (&E, EventId<E>)>
{
self.reader.iter_with_id(&self.events).map(|r @ (_, id)| {
self.reader.iter_with_id(&self.events).inspect(|(_, id)| {
trace!("EventReader::iter() -> {}", id);
r
})
}

Expand Down Expand Up @@ -313,7 +312,7 @@ impl<'w, 's, E: Event> EventWriter<'w, 's, E> {
self.events.send(event);
}

pub fn send_batch(&mut self, events: impl Iterator<Item = E>) {
pub fn send_batch(&mut self, events: impl IntoIterator<Item = E>) {
self.events.extend(events);
}

Expand Down
9 changes: 9 additions & 0 deletions crates/bevy_ecs/src/system/system_param.rs
Original file line number Diff line number Diff line change
Expand Up @@ -780,6 +780,15 @@ impl<'a, T: Component> RemovedComponents<'a, T> {
}
}

impl<'a, T: Component> IntoIterator for &'a RemovedComponents<'a, T> {
type Item = Entity;
type IntoIter = std::iter::Cloned<std::slice::Iter<'a, Entity>>;

fn into_iter(self) -> Self::IntoIter {
self.iter()
}
}

// SAFETY: Only reads World components
unsafe impl<T: Component> ReadOnlySystemParamFetch for RemovedComponentsState<T> {}

Expand Down
114 changes: 57 additions & 57 deletions crates/bevy_render/src/mesh/mesh/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -615,35 +615,35 @@ impl VertexAttributeValues {
/// mesh, all of the [`VertexAttributeValues`] must have the same length.
#[allow(clippy::match_same_arms)]
pub fn len(&self) -> usize {
match *self {
VertexAttributeValues::Float32(ref values) => values.len(),
VertexAttributeValues::Sint32(ref values) => values.len(),
VertexAttributeValues::Uint32(ref values) => values.len(),
VertexAttributeValues::Float32x2(ref values) => values.len(),
VertexAttributeValues::Sint32x2(ref values) => values.len(),
VertexAttributeValues::Uint32x2(ref values) => values.len(),
VertexAttributeValues::Float32x3(ref values) => values.len(),
VertexAttributeValues::Sint32x3(ref values) => values.len(),
VertexAttributeValues::Uint32x3(ref values) => values.len(),
VertexAttributeValues::Float32x4(ref values) => values.len(),
VertexAttributeValues::Sint32x4(ref values) => values.len(),
VertexAttributeValues::Uint32x4(ref values) => values.len(),
VertexAttributeValues::Sint16x2(ref values) => values.len(),
VertexAttributeValues::Snorm16x2(ref values) => values.len(),
VertexAttributeValues::Uint16x2(ref values) => values.len(),
VertexAttributeValues::Unorm16x2(ref values) => values.len(),
VertexAttributeValues::Sint16x4(ref values) => values.len(),
VertexAttributeValues::Snorm16x4(ref values) => values.len(),
VertexAttributeValues::Uint16x4(ref values) => values.len(),
VertexAttributeValues::Unorm16x4(ref values) => values.len(),
VertexAttributeValues::Sint8x2(ref values) => values.len(),
VertexAttributeValues::Snorm8x2(ref values) => values.len(),
VertexAttributeValues::Uint8x2(ref values) => values.len(),
VertexAttributeValues::Unorm8x2(ref values) => values.len(),
VertexAttributeValues::Sint8x4(ref values) => values.len(),
VertexAttributeValues::Snorm8x4(ref values) => values.len(),
VertexAttributeValues::Uint8x4(ref values) => values.len(),
VertexAttributeValues::Unorm8x4(ref values) => values.len(),
match self {
VertexAttributeValues::Float32(values) => values.len(),
VertexAttributeValues::Sint32(values) => values.len(),
VertexAttributeValues::Uint32(values) => values.len(),
VertexAttributeValues::Float32x2(values) => values.len(),
VertexAttributeValues::Sint32x2(values) => values.len(),
VertexAttributeValues::Uint32x2(values) => values.len(),
VertexAttributeValues::Float32x3(values) => values.len(),
VertexAttributeValues::Sint32x3(values) => values.len(),
VertexAttributeValues::Uint32x3(values) => values.len(),
VertexAttributeValues::Float32x4(values) => values.len(),
VertexAttributeValues::Sint32x4(values) => values.len(),
VertexAttributeValues::Uint32x4(values) => values.len(),
VertexAttributeValues::Sint16x2(values) => values.len(),
VertexAttributeValues::Snorm16x2(values) => values.len(),
VertexAttributeValues::Uint16x2(values) => values.len(),
VertexAttributeValues::Unorm16x2(values) => values.len(),
VertexAttributeValues::Sint16x4(values) => values.len(),
VertexAttributeValues::Snorm16x4(values) => values.len(),
VertexAttributeValues::Uint16x4(values) => values.len(),
VertexAttributeValues::Unorm16x4(values) => values.len(),
VertexAttributeValues::Sint8x2(values) => values.len(),
VertexAttributeValues::Snorm8x2(values) => values.len(),
VertexAttributeValues::Uint8x2(values) => values.len(),
VertexAttributeValues::Unorm8x2(values) => values.len(),
VertexAttributeValues::Sint8x4(values) => values.len(),
VertexAttributeValues::Snorm8x4(values) => values.len(),
VertexAttributeValues::Uint8x4(values) => values.len(),
VertexAttributeValues::Unorm8x4(values) => values.len(),
}
}

Expand All @@ -666,34 +666,34 @@ impl VertexAttributeValues {
#[allow(clippy::match_same_arms)]
pub fn get_bytes(&self) -> &[u8] {
match self {
VertexAttributeValues::Float32(values) => cast_slice(&values[..]),
VertexAttributeValues::Sint32(values) => cast_slice(&values[..]),
VertexAttributeValues::Uint32(values) => cast_slice(&values[..]),
VertexAttributeValues::Float32x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Sint32x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Uint32x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Float32x3(values) => cast_slice(&values[..]),
VertexAttributeValues::Sint32x3(values) => cast_slice(&values[..]),
VertexAttributeValues::Uint32x3(values) => cast_slice(&values[..]),
VertexAttributeValues::Float32x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Sint32x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Uint32x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Sint16x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Snorm16x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Uint16x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Unorm16x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Sint16x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Snorm16x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Uint16x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Unorm16x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Sint8x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Snorm8x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Uint8x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Unorm8x2(values) => cast_slice(&values[..]),
VertexAttributeValues::Sint8x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Snorm8x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Uint8x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Unorm8x4(values) => cast_slice(&values[..]),
VertexAttributeValues::Float32(values) => cast_slice(values),
VertexAttributeValues::Sint32(values) => cast_slice(values),
VertexAttributeValues::Uint32(values) => cast_slice(values),
VertexAttributeValues::Float32x2(values) => cast_slice(values),
VertexAttributeValues::Sint32x2(values) => cast_slice(values),
VertexAttributeValues::Uint32x2(values) => cast_slice(values),
VertexAttributeValues::Float32x3(values) => cast_slice(values),
VertexAttributeValues::Sint32x3(values) => cast_slice(values),
VertexAttributeValues::Uint32x3(values) => cast_slice(values),
VertexAttributeValues::Float32x4(values) => cast_slice(values),
VertexAttributeValues::Sint32x4(values) => cast_slice(values),
VertexAttributeValues::Uint32x4(values) => cast_slice(values),
VertexAttributeValues::Sint16x2(values) => cast_slice(values),
VertexAttributeValues::Snorm16x2(values) => cast_slice(values),
VertexAttributeValues::Uint16x2(values) => cast_slice(values),
VertexAttributeValues::Unorm16x2(values) => cast_slice(values),
VertexAttributeValues::Sint16x4(values) => cast_slice(values),
VertexAttributeValues::Snorm16x4(values) => cast_slice(values),
VertexAttributeValues::Uint16x4(values) => cast_slice(values),
VertexAttributeValues::Unorm16x4(values) => cast_slice(values),
VertexAttributeValues::Sint8x2(values) => cast_slice(values),
VertexAttributeValues::Snorm8x2(values) => cast_slice(values),
VertexAttributeValues::Uint8x2(values) => cast_slice(values),
VertexAttributeValues::Unorm8x2(values) => cast_slice(values),
VertexAttributeValues::Sint8x4(values) => cast_slice(values),
VertexAttributeValues::Snorm8x4(values) => cast_slice(values),
VertexAttributeValues::Uint8x4(values) => cast_slice(values),
VertexAttributeValues::Unorm8x4(values) => cast_slice(values),
}
}
}
Expand Down
15 changes: 13 additions & 2 deletions crates/bevy_ui/src/flex/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use bevy_ecs::{
entity::Entity,
event::EventReader,
query::{Changed, Or, With, Without, WorldQuery},
system::{Query, Res, ResMut, Resource},
system::{Query, RemovedComponents, Res, ResMut, Resource},
};
use bevy_hierarchy::{Children, Parent};
use bevy_log::warn;
Expand Down Expand Up @@ -176,6 +176,15 @@ without UI components as a child of an entity with UI components, results may be
}
}

/// Removes each entity from the internal map and then removes their associated node from taffy
pub fn remove_entities(&mut self, entities: impl IntoIterator<Item = Entity>) {
for entity in entities {
if let Some(node) = self.entity_to_taffy.remove(&entity) {
self.taffy.remove(node);
}
}
}

pub fn get_layout(&self, entity: Entity) -> Result<&taffy::layout::Layout, FlexError> {
if let Some(taffy_node) = self.entity_to_taffy.get(&entity) {
self.taffy
Expand Down Expand Up @@ -213,6 +222,7 @@ pub fn flex_node_system(
full_children_query: Query<&Children, With<Node>>,
changed_children_query: Query<(Entity, &Children), (With<Node>, Changed<Children>)>,
mut node_transform_query: Query<(Entity, &mut Node, &mut Transform)>,
removed_nodes: RemovedComponents<Node>,
) {
let flex_roots = get_flex_roots(&windows, &ui_scale, &camera_query, &root_node_query);

Expand Down Expand Up @@ -250,7 +260,8 @@ pub fn flex_node_system(
}
}

// TODO: handle removed nodes
// clean up removed nodes
flex_surface.remove_entities(&removed_nodes);

// update root children (for now assuming all Nodes live in the primary window)
flex_surface.update_root_children(root_node_query.iter().map(|(entity, _)| entity));
Expand Down
5 changes: 1 addition & 4 deletions examples/ecs/custom_query_param.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@
//!
//! For more details on the `WorldQuery` derive macro, see the trait documentation.

use bevy::{
ecs::{component::Component, query::WorldQuery},
prelude::*,
};
use bevy::{ecs::query::WorldQuery, prelude::*};
use std::fmt::Debug;

fn main() {
Expand Down
2 changes: 1 addition & 1 deletion examples/ecs/iter_combinations.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//! Shows how to iterate over combinations of query results.

use bevy::{pbr::AmbientLight, prelude::*, render::camera::Camera, time::FixedTimestep};
use bevy::{pbr::AmbientLight, prelude::*, time::FixedTimestep};
use rand::{thread_rng, Rng};

#[derive(Debug, Hash, PartialEq, Eq, Clone, StageLabel)]
Expand Down
5 changes: 1 addition & 4 deletions examples/input/keyboard_input.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
//! Demonstrates handling a key press/release.

use bevy::{
input::{keyboard::KeyCode, Input},
prelude::*,
};
use bevy::prelude::*;

fn main() {
App::new()
Expand Down
5 changes: 1 addition & 4 deletions examples/input/keyboard_modifiers.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
//! Demonstrates using key modifiers (ctrl, shift).

use bevy::{
input::{keyboard::KeyCode, Input},
prelude::*,
};
use bevy::prelude::*;

fn main() {
App::new()
Expand Down
1 change: 0 additions & 1 deletion examples/input/mouse_input_events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
use bevy::{
input::mouse::{MouseButtonInput, MouseMotion, MouseWheel},
prelude::*,
window::CursorMoved,
};

fn main() {
Expand Down
3 changes: 1 addition & 2 deletions examples/shader/shader_instancing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
use bevy::{
core_pipeline::core_3d::Transparent3d,
ecs::system::{lifetimeless::*, SystemParamItem},
math::prelude::*,
pbr::{MeshPipeline, MeshPipelineKey, MeshUniform, SetMeshBindGroup, SetMeshViewBindGroup},
prelude::*,
render::{
Expand All @@ -16,7 +15,7 @@ use bevy::{
},
render_resource::*,
renderer::RenderDevice,
view::{ComputedVisibility, ExtractedView, Msaa, NoFrustumCulling, Visibility},
view::{ExtractedView, NoFrustumCulling},
RenderApp, RenderStage,
},
};
Expand Down
2 changes: 0 additions & 2 deletions examples/stress_tests/many_sprites.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@

use bevy::{
diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin},
math::Quat,
prelude::*,
render::camera::Camera,
window::PresentMode,
};

Expand Down
3 changes: 1 addition & 2 deletions examples/window/low_power.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
//! This is useful for making desktop applications, or any other program that doesn't need to be
//! running the event loop non-stop.

use std::time::Duration;

use bevy::{
prelude::*,
utils::Duration,
window::{PresentMode, RequestRedraw},
winit::WinitSettings,
};
Expand Down

0 comments on commit f8240c9

Please sign in to comment.