Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion benches/benches/bevy_ecs/empty_archetypes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ fn setup(parallel: bool, setup: impl FnOnce(&mut Schedule)) -> (World, Schedule)
let mut world = World::new();
let mut schedule = Schedule::new();
if parallel {
world.insert_resource(ComputeTaskPool(TaskPool::default()));
world.insert_resources(ComputeTaskPool(TaskPool::default()));
}
setup(&mut schedule);
(world, schedule)
Expand Down
2 changes: 1 addition & 1 deletion benches/benches/bevy_ecs/scheduling/run_condition.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ pub fn run_condition_yes_with_query(criterion: &mut Criterion) {

pub fn run_condition_yes_with_resource(criterion: &mut Criterion) {
let mut world = World::new();
world.insert_resource(TestBool(true));
world.insert_resources(TestBool(true));
let mut group = criterion.benchmark_group("run_condition/yes_using_resource");
group.warm_up_time(std::time::Duration::from_millis(500));
group.measurement_time(std::time::Duration::from_secs(3));
Expand Down
3 changes: 1 addition & 2 deletions crates/bevy_a11y/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ pub struct AccessibilityPlugin;

impl Plugin for AccessibilityPlugin {
fn build(&self, app: &mut bevy_app::App) {
app.init_resource::<AccessibilityRequested>()
.init_resource::<Focus>();
app.init_resources::<(AccessibilityRequested, Focus)>();
}
}
106 changes: 96 additions & 10 deletions crates/bevy_app/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,12 @@ impl Debug for App {
/// let mut app = App::new();
///
/// // initialize the main app with a value of 0;
/// app.insert_resource(Val(10));
/// app.insert_resources(Val(10));
///
/// // create a app with a resource and a single schedule
/// let mut sub_app = App::empty();
/// // add an outer schedule that runs the main schedule
/// sub_app.insert_resource(Val(100));
/// sub_app.insert_resources(Val(100));
///
/// // initialize main schedule
/// sub_app.add_systems(Main, |counter: Res<Val>| {
Expand Down Expand Up @@ -188,7 +188,7 @@ impl Default for App {
fn default() -> Self {
let mut app = App::empty();
#[cfg(feature = "bevy_reflect")]
app.init_resource::<AppTypeRegistry>();
app.init_resources::<AppTypeRegistry>();

app.add_plugin(MainSchedulePlugin);
app.add_event::<AppExit>();
Expand All @@ -214,7 +214,7 @@ impl App {
/// This constructor should be used if you wish to provide custom scheduling, exit handling, cleanup, etc.
pub fn empty() -> App {
let mut world = World::new();
world.init_resource::<Schedules>();
world.init_resources::<Schedules>();
Self {
world,
runner: Box::new(run_once),
Expand Down Expand Up @@ -318,8 +318,7 @@ impl App {
/// Note that you can also apply state transitions at other points in the schedule
/// by adding the [`apply_state_transition`] system manually.
pub fn add_state<S: States>(&mut self) -> &mut Self {
self.init_resource::<State<S>>()
.init_resource::<NextState<S>>()
self.init_resources::<(State<S>, NextState<S>)>()
.add_systems(
StateTransition,
(
Expand Down Expand Up @@ -505,7 +504,7 @@ impl App {
T: Event,
{
if !self.world.contains_resource::<Events<T>>() {
self.init_resource::<Events<T>>()
self.init_resources::<Events<T>>()
.add_systems(First, Events::<T>::update_system);
}
self
Expand All @@ -532,14 +531,49 @@ impl App {
/// App::new()
/// .insert_resource(MyCounter { counter: 0 });
/// ```
#[deprecated(
since = "0.11.0",
note = "Please use `insert_resources(your_resource)` instead."
)]
pub fn insert_resource<R: Resource>(&mut self, resource: R) -> &mut Self {
self.world.insert_resource(resource);
self.world.insert_resources(resource);
self
}

/// Inserts a [`Resource`] to the current [`App`] and overwrites any [`Resource`] previously added of the same type.
///
/// A [`Resource`] in Bevy represents globally unique data. [`Resource`]s must be added to Bevy apps
/// before using them. This happens with [`insert_resources`](Self::insert_resources).
///
/// See [`init_resources`](Self::init_resources) for [`Resource`]s that implement [`Default`] or [`FromWorld`].
///
/// # Examples
///
/// ```
/// # use bevy_app::prelude::*;
/// # use bevy_ecs::prelude::*;
/// #
/// #[derive(Resource)]
/// struct MyCounter {
/// counter: usize,
/// }
///
/// #[derive(Resource)]
/// struct MyValue {
/// value: f32,
/// }
///
/// App::new()
/// .insert_resources((MyCounter { counter: 0 }, MyValue { value: 1.0 }));
/// ```
pub fn insert_resources<R: InsertResources>(&mut self, resources: R) -> &mut Self {
self.world.insert_resources(resources);
self
}

/// Inserts a non-send resource to the app.
///
/// You usually want to use [`insert_resource`](Self::insert_resource),
/// You usually want to use [`insert_resources`](Self::insert_resources),
/// but there are some special cases when a resource cannot be sent across threads.
///
/// # Examples
Expand Down Expand Up @@ -590,8 +624,60 @@ impl App {
/// App::new()
/// .init_resource::<MyCounter>();
/// ```
#[deprecated(
since = "0.11.0",
note = "Please use `init_resources::<YourResource>()` instead."
)]
pub fn init_resource<R: Resource + FromWorld>(&mut self) -> &mut Self {
self.world.init_resource::<R>();
self.world.init_resources::<R>();
self
}

/// Initialize a [`Resource`] with standard starting values by adding it to the [`World`].
///
/// If the [`Resource`] already exists, nothing happens.
///
/// The [`Resource`] must implement the [`FromWorld`] trait.
/// If the [`Default`] trait is implemented, the [`FromWorld`] trait will use
/// the [`Default::default`] method to initialize the [`Resource`].
///
/// # Examples
///
/// ```
/// # use bevy_app::prelude::*;
/// # use bevy_ecs::prelude::*;
/// #
/// #[derive(Resource)]
/// struct MyCounter {
/// counter: usize,
/// }
///
/// impl Default for MyCounter {
/// fn default() -> MyCounter {
/// MyCounter {
/// counter: 100
/// }
/// }
/// }
///
/// #[derive(Resource)]
/// struct MyValue {
/// value: f32,
/// }
///
/// impl Default for MyValue {
/// fn default() -> MyValue {
/// MyValue {
/// value: 20.0
/// }
/// }
/// }
///
/// App::new()
/// .init_resources::<(MyCounter, MyValue)>();
/// ```
pub fn init_resources<R: InitResources>(&mut self) -> &mut Self {
self.world.init_resources::<R>();
self
}

Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_app/src/ci_testing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ pub(crate) fn setup_app(app: &mut App) -> &mut App {
ron::from_str(config).expect("error deserializing CI testing configuration file")
};

app.insert_resource(config)
app.insert_resources(config)
.add_systems(Update, ci_testing_exit_after);

app
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_app/src/main_schedule.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ impl Plugin for MainSchedulePlugin {

app.add_schedule(Main, main_schedule)
.add_schedule(RunFixedUpdateLoop, fixed_update_loop_schedule)
.init_resource::<MainScheduleOrder>()
.init_resources::<MainScheduleOrder>()
.add_systems(Main, Main::run_main);
}
}
3 changes: 1 addition & 2 deletions crates/bevy_asset/src/asset_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -850,8 +850,7 @@ mod test {
#[derive(SystemSet, Clone, Hash, Debug, PartialEq, Eq)]
struct FreeUnusedAssets;
let mut app = App::new();
app.insert_resource(assets);
app.insert_resource(asset_server);
app.insert_resources((assets, asset_server));
app.add_systems(
Update,
(
Expand Down
4 changes: 2 additions & 2 deletions crates/bevy_asset/src/assets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ impl AddAsset for App {
asset_server.register_asset_type::<T>()
};

self.insert_resource(assets)
self.insert_resources(assets)
.add_systems(LoadAssets, update_asset_storage_system::<T>)
.add_systems(AssetEvents, Assets::<T>::asset_event_system)
.register_type::<Handle<T>>()
Expand Down Expand Up @@ -368,7 +368,7 @@ impl AddAsset for App {
.world
.non_send_resource_mut::<crate::debug_asset_server::DebugAssetApp>();
app.add_asset::<T>()
.init_resource::<crate::debug_asset_server::HandleMap<T>>();
.init_resources::<crate::debug_asset_server::HandleMap<T>>();
}
self
}
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_asset/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ impl Plugin for AssetPlugin {
if !app.world.contains_resource::<AssetServer>() {
let source = self.create_platform_default_asset_io();
let asset_server = AssetServer::with_boxed_io(source);
app.insert_resource(asset_server);
app.insert_resources(asset_server);
}

app.register_type::<HandleId>()
Expand Down
8 changes: 3 additions & 5 deletions crates/bevy_audio/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,11 @@ pub struct AudioPlugin {

impl Plugin for AudioPlugin {
fn build(&self, app: &mut App) {
app.init_resource::<AudioOutput<AudioSource>>()
app.init_resources::<(AudioOutput<AudioSource>, Audio<AudioSource>)>()
.add_asset::<AudioSource>()
.add_asset::<AudioSink>()
.add_asset::<SpatialAudioSink>()
.init_resource::<Audio<AudioSource>>()
.insert_resource(self.global_volume)
.insert_resources(self.global_volume)
.add_systems(PostUpdate, play_queued_audio_system::<AudioSource>);

#[cfg(any(feature = "mp3", feature = "flac", feature = "wav", feature = "vorbis"))]
Expand All @@ -80,8 +79,7 @@ impl AddAudioSource for App {
f32: rodio::cpal::FromSample<T::DecoderItem>,
{
self.add_asset::<T>()
.init_resource::<Audio<T>>()
.init_resource::<AudioOutput<T>>()
.init_resources::<(Audio<T>, AudioOutput<T>)>()
.add_systems(PostUpdate, play_queued_audio_system::<T>)
}
}
2 changes: 1 addition & 1 deletion crates/bevy_core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ pub struct FrameCountPlugin;

impl Plugin for FrameCountPlugin {
fn build(&self, app: &mut App) {
app.init_resource::<FrameCount>();
app.init_resources::<FrameCount>();
app.add_systems(Last, update_frame_count);
}
}
Expand Down
4 changes: 1 addition & 3 deletions crates/bevy_core_pipeline/src/blit/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ impl Plugin for BlitPlugin {
return
};

render_app
.init_resource::<BlitPipeline>()
.init_resource::<SpecializedRenderPipelines<BlitPipeline>>();
render_app.init_resources::<(BlitPipeline, SpecializedRenderPipelines<BlitPipeline>)>();
}
}

Expand Down
10 changes: 6 additions & 4 deletions crates/bevy_core_pipeline/src/bloom/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,12 @@ impl Plugin for BloomPlugin {
};

render_app
.init_resource::<BloomDownsamplingPipeline>()
.init_resource::<BloomUpsamplingPipeline>()
.init_resource::<SpecializedRenderPipelines<BloomDownsamplingPipeline>>()
.init_resource::<SpecializedRenderPipelines<BloomUpsamplingPipeline>>()
.init_resources::<(
BloomDownsamplingPipeline,
BloomUpsamplingPipeline,
SpecializedRenderPipelines<BloomDownsamplingPipeline>,
SpecializedRenderPipelines<BloomUpsamplingPipeline>,
)>()
.add_systems(
Render,
(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,7 @@ impl Plugin for CASPlugin {
Err(_) => return,
};
render_app
.init_resource::<CASPipeline>()
.init_resource::<SpecializedRenderPipelines<CASPipeline>>()
.init_resources::<(CASPipeline, SpecializedRenderPipelines<CASPipeline>)>()
.add_systems(Render, prepare_cas_pipelines.in_set(RenderSet::Prepare));

{
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_core_pipeline/src/core_2d/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ impl Plugin for Core2dPlugin {
};

render_app
.init_resource::<DrawFunctions<Transparent2d>>()
.init_resources::<DrawFunctions<Transparent2d>>()
.add_systems(ExtractSchedule, extract_core_2d_camera_phases)
.add_systems(
Render,
Expand Down
8 changes: 5 additions & 3 deletions crates/bevy_core_pipeline/src/core_3d/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,11 @@ impl Plugin for Core3dPlugin {
};

render_app
.init_resource::<DrawFunctions<Opaque3d>>()
.init_resource::<DrawFunctions<AlphaMask3d>>()
.init_resource::<DrawFunctions<Transparent3d>>()
.init_resources::<(
DrawFunctions<Opaque3d>,
DrawFunctions<AlphaMask3d>,
DrawFunctions<Transparent3d>,
)>()
.add_systems(ExtractSchedule, extract_core_3d_camera_phases)
.add_systems(
Render,
Expand Down
3 changes: 1 addition & 2 deletions crates/bevy_core_pipeline/src/fxaa/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,7 @@ impl Plugin for FxaaPlugin {
Err(_) => return,
};
render_app
.init_resource::<FxaaPipeline>()
.init_resource::<SpecializedRenderPipelines<FxaaPipeline>>()
.init_resources::<(FxaaPipeline, SpecializedRenderPipelines<FxaaPipeline>)>()
.add_systems(Render, prepare_fxaa_pipelines.in_set(RenderSet::Prepare))
.add_render_graph_node::<FxaaNode>(CORE_3D, core_3d::graph::node::FXAA)
.add_render_graph_edges(
Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_core_pipeline/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ impl Plugin for CorePipelinePlugin {
.register_type::<ClearColorConfig>()
.register_type::<DepthPrepass>()
.register_type::<NormalPrepass>()
.init_resource::<ClearColor>()
.init_resources::<ClearColor>()
.add_plugin(ExtractResourcePlugin::<ClearColor>::default())
.add_plugin(Core2dPlugin)
.add_plugin(Core3dPlugin)
Expand Down
4 changes: 2 additions & 2 deletions crates/bevy_core_pipeline/src/skybox/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ impl Plugin for SkyboxPlugin {
let render_device = render_app.world.resource::<RenderDevice>().clone();

render_app
.insert_resource(SkyboxPipeline::new(&render_device))
.init_resource::<SpecializedRenderPipelines<SkyboxPipeline>>()
.insert_resources(SkyboxPipeline::new(&render_device))
.init_resources::<SpecializedRenderPipelines<SkyboxPipeline>>()
.add_systems(
Render,
(
Expand Down
5 changes: 2 additions & 3 deletions crates/bevy_core_pipeline/src/taa/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,13 @@ impl Plugin for TemporalAntiAliasPlugin {
fn build(&self, app: &mut App) {
load_internal_asset!(app, TAA_SHADER_HANDLE, "taa.wgsl", Shader::from_wgsl);

app.insert_resource(Msaa::Off)
app.insert_resources(Msaa::Off)
.register_type::<TemporalAntiAliasSettings>();

let Ok(render_app) = app.get_sub_app_mut(RenderApp) else { return };

render_app
.init_resource::<TAAPipeline>()
.init_resource::<SpecializedRenderPipelines<TAAPipeline>>()
.init_resources::<(TAAPipeline, SpecializedRenderPipelines<TAAPipeline>)>()
.add_systems(ExtractSchedule, extract_taa_settings)
.add_systems(
Render,
Expand Down
Loading