Skip to content

Commit 3587e38

Browse files
committed
Implement RenderGraphExt for World.
1 parent 057c215 commit 3587e38

File tree

1 file changed

+46
-11
lines changed
  • crates/bevy_render/src/render_graph

1 file changed

+46
-11
lines changed

crates/bevy_render/src/render_graph/app.rs

Lines changed: 46 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use bevy_app::{App, SubApp};
2-
use bevy_ecs::world::FromWorld;
2+
use bevy_ecs::world::{FromWorld, World};
33
use tracing::warn;
44

55
use super::{IntoRenderNodeArray, Node, RenderGraph, RenderLabel, RenderSubGraph};
@@ -32,15 +32,15 @@ pub trait RenderGraphExt {
3232
) -> &mut Self;
3333
}
3434

35-
impl RenderGraphExt for SubApp {
35+
impl RenderGraphExt for World {
3636
fn add_render_graph_node<T: Node + FromWorld>(
3737
&mut self,
3838
sub_graph: impl RenderSubGraph,
3939
node_label: impl RenderLabel,
4040
) -> &mut Self {
4141
let sub_graph = sub_graph.intern();
42-
let node = T::from_world(self.world_mut());
43-
let mut render_graph = self.world_mut().get_resource_mut::<RenderGraph>().expect(
42+
let node = T::from_world(self);
43+
let mut render_graph = self.get_resource_mut::<RenderGraph>().expect(
4444
"RenderGraph not found. Make sure you are using add_render_graph_node on the RenderApp",
4545
);
4646
if let Some(graph) = render_graph.get_sub_graph_mut(sub_graph) {
@@ -59,7 +59,7 @@ impl RenderGraphExt for SubApp {
5959
edges: impl IntoRenderNodeArray<N>,
6060
) -> &mut Self {
6161
let sub_graph = sub_graph.intern();
62-
let mut render_graph = self.world_mut().get_resource_mut::<RenderGraph>().expect(
62+
let mut render_graph = self.get_resource_mut::<RenderGraph>().expect(
6363
"RenderGraph not found. Make sure you are using add_render_graph_edges on the RenderApp",
6464
);
6565
if let Some(graph) = render_graph.get_sub_graph_mut(sub_graph) {
@@ -79,7 +79,7 @@ impl RenderGraphExt for SubApp {
7979
input_node: impl RenderLabel,
8080
) -> &mut Self {
8181
let sub_graph = sub_graph.intern();
82-
let mut render_graph = self.world_mut().get_resource_mut::<RenderGraph>().expect(
82+
let mut render_graph = self.get_resource_mut::<RenderGraph>().expect(
8383
"RenderGraph not found. Make sure you are using add_render_graph_edge on the RenderApp",
8484
);
8585
if let Some(graph) = render_graph.get_sub_graph_mut(sub_graph) {
@@ -93,21 +93,56 @@ impl RenderGraphExt for SubApp {
9393
}
9494

9595
fn add_render_sub_graph(&mut self, sub_graph: impl RenderSubGraph) -> &mut Self {
96-
let mut render_graph = self.world_mut().get_resource_mut::<RenderGraph>().expect(
96+
let mut render_graph = self.get_resource_mut::<RenderGraph>().expect(
9797
"RenderGraph not found. Make sure you are using add_render_sub_graph on the RenderApp",
9898
);
9999
render_graph.add_sub_graph(sub_graph, RenderGraph::default());
100100
self
101101
}
102102
}
103103

104+
impl RenderGraphExt for SubApp {
105+
fn add_render_graph_node<T: Node + FromWorld>(
106+
&mut self,
107+
sub_graph: impl RenderSubGraph,
108+
node_label: impl RenderLabel,
109+
) -> &mut Self {
110+
World::add_render_graph_node::<T>(self.world_mut(), sub_graph, node_label);
111+
self
112+
}
113+
114+
fn add_render_graph_edge(
115+
&mut self,
116+
sub_graph: impl RenderSubGraph,
117+
output_node: impl RenderLabel,
118+
input_node: impl RenderLabel,
119+
) -> &mut Self {
120+
World::add_render_graph_edge(self.world_mut(), sub_graph, output_node, input_node);
121+
self
122+
}
123+
124+
fn add_render_graph_edges<const N: usize>(
125+
&mut self,
126+
sub_graph: impl RenderSubGraph,
127+
edges: impl IntoRenderNodeArray<N>,
128+
) -> &mut Self {
129+
World::add_render_graph_edges(self.world_mut(), sub_graph, edges);
130+
self
131+
}
132+
133+
fn add_render_sub_graph(&mut self, sub_graph: impl RenderSubGraph) -> &mut Self {
134+
World::add_render_sub_graph(self.world_mut(), sub_graph);
135+
self
136+
}
137+
}
138+
104139
impl RenderGraphExt for App {
105140
fn add_render_graph_node<T: Node + FromWorld>(
106141
&mut self,
107142
sub_graph: impl RenderSubGraph,
108143
node_label: impl RenderLabel,
109144
) -> &mut Self {
110-
SubApp::add_render_graph_node::<T>(self.main_mut(), sub_graph, node_label);
145+
World::add_render_graph_node::<T>(self.world_mut(), sub_graph, node_label);
111146
self
112147
}
113148

@@ -117,7 +152,7 @@ impl RenderGraphExt for App {
117152
output_node: impl RenderLabel,
118153
input_node: impl RenderLabel,
119154
) -> &mut Self {
120-
SubApp::add_render_graph_edge(self.main_mut(), sub_graph, output_node, input_node);
155+
World::add_render_graph_edge(self.world_mut(), sub_graph, output_node, input_node);
121156
self
122157
}
123158

@@ -126,12 +161,12 @@ impl RenderGraphExt for App {
126161
sub_graph: impl RenderSubGraph,
127162
edges: impl IntoRenderNodeArray<N>,
128163
) -> &mut Self {
129-
SubApp::add_render_graph_edges(self.main_mut(), sub_graph, edges);
164+
World::add_render_graph_edges(self.world_mut(), sub_graph, edges);
130165
self
131166
}
132167

133168
fn add_render_sub_graph(&mut self, sub_graph: impl RenderSubGraph) -> &mut Self {
134-
SubApp::add_render_sub_graph(self.main_mut(), sub_graph);
169+
World::add_render_sub_graph(self.world_mut(), sub_graph);
135170
self
136171
}
137172
}

0 commit comments

Comments
 (0)