From 8a62240b7d99b6a6db4871e0c19a76167a7157f9 Mon Sep 17 00:00:00 2001 From: "kaosat.dev" Date: Fri, 24 Nov 2023 11:41:16 +0100 Subject: [PATCH] chore(): more experimenting --- .../bevy_gltf_components/src/process_gltfs.rs | 3 +- crates/bevy_gltf_components/tests/test2.rs | 127 +++++++++++++----- 2 files changed, 96 insertions(+), 34 deletions(-) diff --git a/crates/bevy_gltf_components/src/process_gltfs.rs b/crates/bevy_gltf_components/src/process_gltfs.rs index 1353a47..9212a47 100644 --- a/crates/bevy_gltf_components/src/process_gltfs.rs +++ b/crates/bevy_gltf_components/src/process_gltfs.rs @@ -28,8 +28,9 @@ pub fn track_new_gltf( mut events: EventReader>, asset_server: Res, ) { + println!("tracking"); for event in events.read() { - if let AssetEvent::Added { id } = event { + if let AssetEvent::LoadedWithDependencies { id } = event { let handle = asset_server .get_id_handle(*id) .expect("this gltf should have been loaded"); diff --git a/crates/bevy_gltf_components/tests/test2.rs b/crates/bevy_gltf_components/tests/test2.rs index f2f3030..0b6adb5 100644 --- a/crates/bevy_gltf_components/tests/test2.rs +++ b/crates/bevy_gltf_components/tests/test2.rs @@ -1,9 +1,25 @@ -use bevy::{prelude::*, gltf::{GltfPlugin, Gltf}, scene::ScenePlugin, pbr::PbrPlugin, render::RenderPlugin, core_pipeline::CorePipelinePlugin}; -use bevy_gltf_components::ComponentsFromGltfPlugin; +use bevy::{prelude::*, gltf::{GltfPlugin, Gltf}, scene::ScenePlugin, pbr::PbrPlugin, render::{RenderPlugin, pipelined_rendering::PipelinedRenderingPlugin}, core_pipeline::CorePipelinePlugin}; +use bevy_gltf_components::{ComponentsFromGltfPlugin, GltfComponentsSet}; #[derive(Resource)] pub struct MyGltf(pub Handle); + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +/// helper marker component +pub struct LoadedMarker; + + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub struct Pickable; + +#[derive(Component, Reflect, Default, Debug)] +#[reflect(Component)] +pub struct Player; + + fn setup( mut commands: Commands, asset_server: Res, @@ -28,55 +44,100 @@ fn foo( } } } -fn bruteforce( - foo: Res, - asset_server: Res, -){ - let load_state = asset_server.get_load_state(foo.0.id()); - println!("checking load state {:?}", load_state); + +fn spawn_level( + mut commands: Commands, + scene_markers: Query<&LoadedMarker>, + mut asset_event_reader: EventReader>, + models: Res>, +) { + if let Some(asset_event) = asset_event_reader.read().next() { + match asset_event { + AssetEvent::LoadedWithDependencies { id } => { + info!("GLTF loaded/ added {:?}", asset_event); + let my_gltf = models.get(*id).unwrap(); + if scene_markers.is_empty() { + info!("spawning scene"); + commands.spawn(( + SceneBundle { + scene: my_gltf.scenes[0].clone(), + ..default() + }, + LoadedMarker, + Name::new("Level1"), + )); + } + } + _ => (), + } + } } +fn test( + players: Query<&Player>, + pickables: Query<&Pickable> +){ + println!("foo"); + for player in players.iter() { + println!("found player") + } + + for pickable in pickables.iter() { + println!("found pickable") + } +} + + #[test] fn main() { // Setup app let mut app = App::new(); app - // .register_type::() - // .register_type::() - /* .add_plugins(( + .register_type::() + .register_type::() + .add_plugins(( MinimalPlugins, + + TransformPlugin::default(), + HierarchyPlugin::default(), AssetPlugin::default(), - CorePipelinePlugin::default(), - - RenderPlugin::default(), - - PbrPlugin::default(), - GltfPlugin::default(), ScenePlugin::default(), - HierarchyPlugin::default(), - TransformPlugin::default(), - - ))*/ - .add_plugins(DefaultPlugins) - .add_plugins(ComponentsFromGltfPlugin) - + /*RenderPlugin::default(), + ImagePlugin::default(), + WindowPlugin::default(), + + CorePipelinePlugin::default(), + PipelinedRenderingPlugin::default(), + + + */ + PbrPlugin::default(), + GltfPlugin::default(), + + + + )) + //.add_plugins(DefaultPlugins) + //.add_plugins(ComponentsFromGltfPlugin) + .add_systems(Startup, setup) - .add_systems(Update, foo) - .add_systems(Update, bruteforce) + .add_systems(Update, ( + ( + spawn_level, + test) + .chain() + .after(GltfComponentsSet::Injection)) + ) .run() + //.run_app_until() ; - /*app.update(); - app.update(); - app.update(); - app.update(); - app.update(); - app.update(); - loop { + + /*loop { // println!("foo {:?}", app.world.resource::>().clone()); app.update(); }*/