use bevy::{prelude::*, render::{render_asset::RenderAssetPlugin, extract_component::ExtractComponentPlugin, RenderApp, Render, RenderSet, render_graph::RenderGraph, graph::CameraDriverLabel}}; use components::FramebufferExtractDestination; use nodes::{FramebufferExtractNode, FramebufferExtractLabel}; use render_assets::FramebufferExtractSource; pub mod components; mod systems; mod nodes; pub mod render_assets; pub struct FramebufferExtractPlugin; impl Plugin for FramebufferExtractPlugin { fn build(&self, app: &mut App) { app .register_type::() .init_asset::() .register_asset_reflect::() .add_plugins(( RenderAssetPlugin::::default(), ExtractComponentPlugin::::default(), )); let render_app = app.sub_app_mut(RenderApp); render_app .add_systems( Render, systems::extract_framebuffers .after(RenderSet::Render) .before(RenderSet::Cleanup), ); let mut graph = render_app.world.resource_mut::(); graph.add_node(FramebufferExtractLabel, FramebufferExtractNode); graph.add_node_edge(CameraDriverLabel, FramebufferExtractLabel); } }