Path: blob/main/crates/bevy_solari/src/scene/extract.rs
6596 views
use super::RaytracingMesh3d;1use bevy_asset::{AssetId, Assets};2use bevy_derive::Deref;3use bevy_ecs::{4resource::Resource,5system::{Commands, Query},6};7use bevy_pbr::{MeshMaterial3d, StandardMaterial};8use bevy_platform::collections::HashMap;9use bevy_render::{extract_resource::ExtractResource, sync_world::RenderEntity, Extract};10use bevy_transform::components::GlobalTransform;1112pub fn extract_raytracing_scene(13instances: Extract<14Query<(15RenderEntity,16&RaytracingMesh3d,17&MeshMaterial3d<StandardMaterial>,18&GlobalTransform,19)>,20>,21mut commands: Commands,22) {23for (render_entity, mesh, material, transform) in &instances {24commands25.entity(render_entity)26.insert((mesh.clone(), material.clone(), *transform));27}28}2930#[derive(Resource, Deref, Default)]31pub struct StandardMaterialAssets(HashMap<AssetId<StandardMaterial>, StandardMaterial>);3233impl ExtractResource for StandardMaterialAssets {34type Source = Assets<StandardMaterial>;3536fn extract_resource(source: &Self::Source) -> Self {37Self(38source39.iter()40.map(|(asset_id, material)| (asset_id, material.clone()))41.collect(),42)43}44}454647