Skip to content

Commit

Permalink
Merge branch 'main' into 3130-example-sprite-alteration
Browse files Browse the repository at this point in the history
  • Loading branch information
richchurcher committed Sep 21, 2024
2 parents 94e7b3c + 02a9ed4 commit 4cec4bb
Show file tree
Hide file tree
Showing 10 changed files with 42 additions and 19 deletions.
3 changes: 1 addition & 2 deletions crates/bevy_asset/src/handle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ use crate::{
UntypedAssetId,
};
use bevy_ecs::prelude::*;
use bevy_reflect::{std_traits::ReflectDefault, Reflect, TypePath};
use bevy_utils::ShortName;
use bevy_reflect::{std_traits::ReflectDefault, Reflect, ShortName, TypePath};
use crossbeam_channel::{Receiver, Sender};
use std::{
any::TypeId,
Expand Down
13 changes: 13 additions & 0 deletions crates/bevy_ecs/src/change_detection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -587,6 +587,19 @@ impl<'w, T: Resource> From<ResMut<'w, T>> for Res<'w, T> {
}
}

impl<'w, T: Resource> From<Res<'w, T>> for Ref<'w, T> {
/// Convert a `Res` into a `Ref`. This allows keeping the change-detection feature of `Ref`
/// while losing the specificity of `Res` for resources.
fn from(res: Res<'w, T>) -> Self {
Self {
value: res.value,
ticks: res.ticks,
#[cfg(feature = "track_change_detection")]
changed_by: res.changed_by,
}
}
}

impl<'w, 'a, T: Resource> IntoIterator for &'a Res<'w, T>
where
&'a T: IntoIterator,
Expand Down
16 changes: 12 additions & 4 deletions crates/bevy_ecs/src/schedule/schedule.rs
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ pub enum Chain {
/// fn system_one() { println!("System 1 works!") }
/// fn system_two() { println!("System 2 works!") }
/// fn system_three() { println!("System 3 works!") }
///
///
/// fn main() {
/// let mut world = World::new();
/// let mut schedule = Schedule::default();
Expand Down Expand Up @@ -1582,7 +1582,7 @@ impl ScheduleGraph {

#[inline]
fn get_node_name_inner(&self, id: &NodeId, report_sets: bool) -> String {
let mut name = match id {
let name = match id {
NodeId::System(_) => {
let name = self.systems[id.index()].get().unwrap().name().to_string();
if report_sets {
Expand All @@ -1607,9 +1607,15 @@ impl ScheduleGraph {
}
}
};
if self.settings.use_shortnames {
name = bevy_utils::ShortName(&name).to_string();
#[cfg(feature = "bevy_reflect")]
{
if self.settings.use_shortnames {
bevy_reflect::ShortName(&name).to_string()
} else {
name
}
}
#[cfg(not(feature = "bevy_reflect"))]
name
}

Expand Down Expand Up @@ -2012,6 +2018,7 @@ pub struct ScheduleBuildSettings {
/// If set to true, node names will be shortened instead of the fully qualified type path.
///
/// Defaults to `true`.
#[cfg(feature = "bevy_reflect")]
pub use_shortnames: bool,
/// If set to true, report all system sets the conflicting systems are part of.
///
Expand All @@ -2033,6 +2040,7 @@ impl ScheduleBuildSettings {
ambiguity_detection: LogLevel::Ignore,
hierarchy_detection: LogLevel::Warn,
auto_insert_apply_deferred: true,
#[cfg(feature = "bevy_reflect")]
use_shortnames: true,
report_sets: true,
}
Expand Down
8 changes: 4 additions & 4 deletions crates/bevy_ecs/src/world/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ use crate::{
removal_detection::RemovedComponentEvents,
schedule::{Schedule, ScheduleLabel, Schedules},
storage::{ResourceData, Storages},
system::{Commands, Res, Resource},
system::{Commands, Resource},
world::{command_queue::RawCommandQueue, error::TryRunScheduleError},
};
use bevy_ptr::{OwningPtr, Ptr};
Expand Down Expand Up @@ -1612,7 +1612,7 @@ impl World {
/// use [`get_resource_or_insert_with`](World::get_resource_or_insert_with).
#[inline]
#[track_caller]
pub fn resource_ref<R: Resource>(&self) -> Res<R> {
pub fn resource_ref<R: Resource>(&self) -> Ref<R> {
match self.get_resource_ref() {
Some(x) => x,
None => panic!(
Expand Down Expand Up @@ -1660,7 +1660,7 @@ impl World {

/// Gets a reference including change detection to the resource of the given type if it exists.
#[inline]
pub fn get_resource_ref<R: Resource>(&self) -> Option<Res<R>> {
pub fn get_resource_ref<R: Resource>(&self) -> Option<Ref<R>> {
// SAFETY:
// - `as_unsafe_world_cell_readonly` gives permission to access everything immutably
// - `&self` ensures nothing in world is borrowed mutably
Expand Down Expand Up @@ -2400,7 +2400,7 @@ impl World {
}

/// Runs both [`clear_entities`](Self::clear_entities) and [`clear_resources`](Self::clear_resources),
/// invalidating all [`Entity`] and resource fetches such as [`Res`], [`ResMut`](crate::system::ResMut)
/// invalidating all [`Entity`] and resource fetches such as [`Res`](crate::system::Res), [`ResMut`](crate::system::ResMut)
pub fn clear_all(&mut self) {
self.clear_entities();
self.clear_resources();
Expand Down
6 changes: 3 additions & 3 deletions crates/bevy_ecs/src/world/unsafe_world_cell.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use crate::{
query::{DebugCheckedUnwrap, ReadOnlyQueryData},
removal_detection::RemovedComponentEvents,
storage::{ComponentSparseSet, Storages, Table},
system::{Res, Resource},
system::Resource,
world::RawCommandQueue,
};
use bevy_ptr::Ptr;
Expand Down Expand Up @@ -353,7 +353,7 @@ impl<'w> UnsafeWorldCell<'w> {
/// - the [`UnsafeWorldCell`] has permission to access the resource
/// - no mutable reference to the resource exists at the same time
#[inline]
pub unsafe fn get_resource_ref<R: Resource>(self) -> Option<Res<'w, R>> {
pub unsafe fn get_resource_ref<R: Resource>(self) -> Option<Ref<'w, R>> {
let component_id = self.components().get_resource_id(TypeId::of::<R>())?;

// SAFETY: caller ensures `self` has permission to access the resource
Expand All @@ -371,7 +371,7 @@ impl<'w> UnsafeWorldCell<'w> {
#[cfg(feature = "track_change_detection")]
let caller = unsafe { _caller.deref() };

Some(Res {
Some(Ref {
value,
ticks,
#[cfg(feature = "track_change_detection")]
Expand Down
4 changes: 3 additions & 1 deletion crates/bevy_hierarchy/src/valid_parent_check_plugin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ use std::marker::PhantomData;
use crate::Parent;
use bevy_ecs::prelude::*;
#[cfg(feature = "bevy_app")]
use bevy_utils::{HashSet, ShortName};
use bevy_reflect::ShortName;
#[cfg(feature = "bevy_app")]
use bevy_utils::HashSet;

/// When enabled, runs [`check_hierarchy_component_has_valid_parent<T>`].
///
Expand Down
3 changes: 2 additions & 1 deletion crates/bevy_reflect/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ keywords = ["bevy"]
rust-version = "1.76.0"

[features]
default = ["smallvec", "debug"]
default = ["smallvec", "debug", "alloc"]
# When enabled, provides Bevy-related reflection implementations
bevy = ["smallvec", "smol_str"]
glam = ["dep:glam"]
Expand All @@ -25,6 +25,7 @@ debug_stack = []
documentation = ["bevy_reflect_derive/documentation"]
# Enables function reflection
functions = ["bevy_reflect_derive/functions"]
alloc = []

[dependencies]
# bevy
Expand Down
4 changes: 3 additions & 1 deletion crates/bevy_reflect/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,7 @@ mod reflect;
mod reflectable;
mod remote;
mod set;
mod short_name;
mod struct_trait;
mod tuple;
mod tuple_struct;
Expand Down Expand Up @@ -615,6 +616,7 @@ pub use type_registry::*;

pub use bevy_reflect_derive::*;
pub use erased_serde;
pub use short_name::ShortName;

extern crate alloc;

Expand Down Expand Up @@ -2366,7 +2368,7 @@ bevy_reflect::tests::Test {

fn short_type_path() -> &'static str {
static CELL: GenericTypePathCell = GenericTypePathCell::new();
CELL.get_or_insert::<Self, _>(|| bevy_utils::ShortName::of::<Self>().to_string())
CELL.get_or_insert::<Self, _>(|| ShortName::of::<Self>().to_string())
}

fn type_ident() -> Option<&'static str> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
/// # Examples
///
/// ```rust
/// # use bevy_utils::ShortName;
/// # use bevy_reflect::ShortName;
/// #
/// # mod foo {
/// # pub mod bar {
Expand Down
2 changes: 0 additions & 2 deletions crates/bevy_utils/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ pub mod prelude {
}

pub mod futures;
mod short_names;
pub use short_names::ShortName;
pub mod synccell;
pub mod syncunsafecell;

Expand Down

0 comments on commit 4cec4bb

Please sign in to comment.