diff --git a/crates/bevy_gltf_components/Cargo.toml b/crates/bevy_gltf_components/Cargo.toml index d7ba122..2e8cb00 100644 --- a/crates/bevy_gltf_components/Cargo.toml +++ b/crates/bevy_gltf_components/Cargo.toml @@ -17,3 +17,7 @@ bevy = { version = "0.12", default-features = false, features = ["bevy_asset", " bevy = { version = "0.12", default-features = false, features = ["bevy_asset", "bevy_scene", "bevy_gltf"] } serde = "1.0.188" ron = "0.8.1" + +[[test]] +name = "components_injections_test2" +path = "tests/test2.rs" \ No newline at end of file diff --git a/crates/bevy_gltf_components/assets/models/level1.glb b/crates/bevy_gltf_components/assets/models/level1.glb new file mode 100644 index 0000000..abcf170 Binary files /dev/null and b/crates/bevy_gltf_components/assets/models/level1.glb differ diff --git a/crates/bevy_gltf_components/src/lib.rs b/crates/bevy_gltf_components/src/lib.rs index 7f78a25..5a9b8e9 100644 --- a/crates/bevy_gltf_components/src/lib.rs +++ b/crates/bevy_gltf_components/src/lib.rs @@ -21,8 +21,8 @@ use bevy::prelude::{App, IntoSystemConfigs, Plugin, SystemSet, Update}; /// fn main() { /// App::new() /// .add_plugins(DefaultPlugins) -/// .add_plugin(ComponentsFromGltfPlugin) -/// .add_system(spawn_level) +/// .add_plugins(ComponentsFromGltfPlugin) +/// .add_systems(Update, spawn_level) /// .run(); /// } /// diff --git a/crates/bevy_gltf_components/tests/test.rs b/crates/bevy_gltf_components/tests/test.rs new file mode 100644 index 0000000..ef995ab --- /dev/null +++ b/crates/bevy_gltf_components/tests/test.rs @@ -0,0 +1,119 @@ +use bevy::{prelude::*, gltf::{GltfPlugin, Gltf}, scene::ScenePlugin}; +use bevy_gltf_components::*; + + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct BasicTest{ + a: f32, + b: u64, + c: String +} + +#[derive(Component, Reflect, Default, Debug, )] +#[reflect(Component)] +struct UnitTest; + + +#[derive(Resource)] +struct AssetLoadHelper(Handle); + +#[derive(Resource)] +struct Loaded(u32); + +fn setup( + mut commands: Commands, + asset_server: Res, +) { + + let tmp: Handle = asset_server.load("level1.glb#Scene0"); + println!("setting up loading"); + // commands.insert_resource(AssetLoadHelper(tmp)); +} + + + +fn spawn_level( + mut asset_event_reader: EventReader>, + mut loaded: ResMut, + ){ + + //println!("loading"); + if let Some(asset_event) = asset_event_reader.iter().next() { + println!("asset event"); + match asset_event { + AssetEvent::Added { id: _ } => { + info!("GLTF loaded"); + loaded.0 += 1; + /*if scene_markers.is_empty() { + info!("spawning scene"); + commands.spawn( + ( + SceneBundle { + scene: preloaded_scene.0.clone(), + ..default() + }, + LoadedMarker, + Name::new("Level1") + ) + ); + next_state.set(AppState::Running); + }*/ + } + _ => () + } + } + + } + +// #[test] +fn components_injected() { + // Setup app + let mut app = App::new(); + app + .register_type::() + .register_type::() + .add_plugins(( + MinimalPlugins, + AssetPlugin::default(), + GltfPlugin::default(), + ScenePlugin::default() + )) + + //.add_plugins(ComponentsFromGltfPlugin) + .add_systems(Startup, setup); + // .add_systems(Update, spawn_level); + + app.insert_resource(Loaded(0)); + + // Run systems + app.run(); + /*app.update(); + app.update(); + app.update(); + app.update(); + app.update(); + app.update(); + app.update(); + app.update(); + app.update(); + app.update(); + app.update(); + + loop { + app.update(); + println!("foo {}", app.world.resource::().0); + if app.world.resource::().0 > 0 { + break; + } + }*/ + + // Check resulting changes + let mut query = app.world.query::<(Entity, &Name, &UnitTest)>(); + println!("AAAAHHH {:?}", query); + let mut results = 0; + for res in query.iter(&app.world) { + results +=1; + } + assert_eq!(results, 1); +} \ No newline at end of file diff --git a/crates/bevy_gltf_components/tests/test2.rs b/crates/bevy_gltf_components/tests/test2.rs new file mode 100644 index 0000000..f2f3030 --- /dev/null +++ b/crates/bevy_gltf_components/tests/test2.rs @@ -0,0 +1,84 @@ +use bevy::{prelude::*, gltf::{GltfPlugin, Gltf}, scene::ScenePlugin, pbr::PbrPlugin, render::RenderPlugin, core_pipeline::CorePipelinePlugin}; +use bevy_gltf_components::ComponentsFromGltfPlugin; + +#[derive(Resource)] +pub struct MyGltf(pub Handle); + +fn setup( + mut commands: Commands, + asset_server: Res, +) { + println!("setting up loading"); + commands.insert_resource(MyGltf(asset_server.load("models/level1.glb"))); +} + +fn foo( + mut asset_event_reader: EventReader>, +){ + if let Some(asset_event) = asset_event_reader.read().next() { + println!("asset event {:?}",asset_event); + match asset_event { + AssetEvent::Added { id: _ } => { + info!("GLTF Added"); + }, + AssetEvent::LoadedWithDependencies { id: _ } => { + info!("GLTF loaded"); + }, + _ => () + } + } +} +fn bruteforce( + foo: Res, + asset_server: Res, +){ + let load_state = asset_server.get_load_state(foo.0.id()); + println!("checking load state {:?}", load_state); + +} + +#[test] +fn main() { + // Setup app + let mut app = App::new(); + app + // .register_type::() + // .register_type::() + /* .add_plugins(( + MinimalPlugins, + AssetPlugin::default(), + CorePipelinePlugin::default(), + + RenderPlugin::default(), + + PbrPlugin::default(), + GltfPlugin::default(), + ScenePlugin::default(), + + HierarchyPlugin::default(), + TransformPlugin::default(), + + ))*/ + .add_plugins(DefaultPlugins) + + .add_plugins(ComponentsFromGltfPlugin) + + .add_systems(Startup, setup) + .add_systems(Update, foo) + .add_systems(Update, bruteforce) + + .run() + ; + + /*app.update(); + app.update(); + app.update(); + app.update(); + app.update(); + app.update(); + loop { + // println!("foo {:?}", app.world.resource::>().clone()); + app.update(); + }*/ + +} \ No newline at end of file