From 07d58467c42bd9f9f3070d6d2c61f5a5bb7694aa Mon Sep 17 00:00:00 2001 From: "kaosat.dev" Date: Mon, 1 Jul 2024 23:35:59 +0200 Subject: [PATCH] feat(Blenvy): * Blender: some additional component filtering for upgrade ui * Bevy: * experimenting with overhauled blueprint spawning logic, sub-blueprint instance tracking etc * added a more simple blend file to test things out with --- crates/blenvy/src/blueprints/mod.rs | 5 +- .../src/blueprints/spawn_from_blueprints.rs | 200 +++++++++++++++--- .../src/blueprints/spawn_post_process.rs | 15 +- .../components/blender_settings/lighting.rs | 6 +- testing/bevy_example/art/testing_simple.blend | Bin 0 -> 965244 bytes testing/bevy_example/src/game/in_game.rs | 3 +- testing/bevy_example/src/hierarchy_debug.rs | 4 +- .../add_ons/bevy_components/components/ui.py | 2 +- .../tests/test_bevy_integration_simple.py | 184 ++++++++++++++++ 9 files changed, 376 insertions(+), 43 deletions(-) create mode 100644 testing/bevy_example/art/testing_simple.blend create mode 100644 tools/blenvy/tests/test_bevy_integration_simple.py diff --git a/crates/blenvy/src/blueprints/mod.rs b/crates/blenvy/src/blueprints/mod.rs index e16d363..5fffa0b 100644 --- a/crates/blenvy/src/blueprints/mod.rs +++ b/crates/blenvy/src/blueprints/mod.rs @@ -107,7 +107,9 @@ impl Plugin for BlueprintsPlugin { ( blueprints_prepare_spawn, blueprints_check_assets_loading, - blueprints_spawn, + blueprints_assets_ready, + blueprints_check_blueprints_spawning, + // blueprints_spawn, /*( prepare_blueprints, @@ -145,6 +147,7 @@ impl Plugin for BlueprintsPlugin { )*/ .add_systems(Update, react_to_asset_changes) + // .add_systems(Update, track_sub_blueprints) ; } } diff --git a/crates/blenvy/src/blueprints/spawn_from_blueprints.rs b/crates/blenvy/src/blueprints/spawn_from_blueprints.rs index 96d5984..da24c4b 100644 --- a/crates/blenvy/src/blueprints/spawn_from_blueprints.rs +++ b/crates/blenvy/src/blueprints/spawn_from_blueprints.rs @@ -1,6 +1,6 @@ use std::path::{Path, PathBuf}; -use bevy::{asset::LoadedUntypedAsset, gltf::Gltf, prelude::*, render::view::visibility, scene::SceneInstance, transform::commands, utils::hashbrown::HashMap}; +use bevy::{asset::LoadedUntypedAsset, gltf::Gltf, prelude::*, render::view::visibility, scene::SceneInstance, transform::commands, utils::{hashbrown::HashMap}}; use serde_json::Value; use crate::{BlueprintAssets, BlueprintAssetsLoadState, AssetLoadTracker, BlenvyConfig, BlueprintAnimations, BlueprintAssetsLoaded, BlueprintAssetsNotLoaded}; @@ -65,6 +65,7 @@ pub enum BlueprintEvent { /// event fired when a blueprint has finished loading its assets & before it attempts spawning AssetsLoaded { + entity: Entity, blueprint_name: String, blueprint_path: String, // TODO: add assets list ? @@ -73,18 +74,40 @@ pub enum BlueprintEvent { /// - all its assets have been loaded /// - the spawning attempt has been sucessfull Spawned { + entity: Entity, blueprint_name: String, blueprint_path: String, }, /// Ready { + entity: Entity, blueprint_path: String, } } +// TODO: move this somewhere else ? +#[derive(Component, Reflect, Debug, Default)] +#[reflect(Component)] +/// component used to mark any entity as Dynamic: aka add this to make sure your entity is going to be saved +pub struct DynamicBlueprintInstance; + + +// TODO: move these somewhere else ? +#[derive(Component, Reflect, Debug, Default)] +#[reflect(Component)] +/// component gets added when a blueprint starts spawning, removed when spawning is done +pub struct BlueprintSpawning; + + +#[derive(Component, Reflect, Debug, Default)] +#[reflect(Component)] +/// component gets added when a blueprint spawning is done +pub struct BlueprintSpawned; + + use gltf::Gltf as RawGltf; pub(crate) fn blueprints_prepare_spawn( @@ -101,8 +124,8 @@ asset_server: Res, ) { for (entity, blueprint_info, parent, all_assets) in blueprint_instances_to_spawn.iter() { - println!("Detected blueprint to spawn: {:?} path:{:?}", blueprint_info.name, blueprint_info.path); - println!("all assets {:?}", all_assets); + info!("BLUEPRINT: to spawn detected: {:?} path:{:?}", blueprint_info.name, blueprint_info.path); + //println!("all assets {:?}", all_assets); ////////////// // we add the asset of the blueprint itself @@ -124,7 +147,7 @@ asset_server: Res, // and we also add all its assets /* prefetch attempt */ - let gltf = RawGltf::open(format!("assets/{}", blueprint_info.path)).unwrap();// RawGltf::open("examples/Box.gltf")?; + let gltf = RawGltf::open(format!("assets/{}", blueprint_info.path)).unwrap(); for scene in gltf.scenes() { let foo_extras = scene.extras().clone().unwrap(); @@ -137,7 +160,7 @@ asset_server: Res, let assets_raw = &lookup["BlueprintAssets"]; //println!("ASSETS RAW {}", assets_raw); let all_assets: BlueprintAssets = ron::from_str(&assets_raw.as_str().unwrap()).unwrap(); - println!("all_assets {:?}", all_assets); + // println!("all_assets {:?}", all_assets); for asset in all_assets.assets.iter() { let untyped_handle = asset_server.load_untyped(&asset.path); @@ -174,6 +197,9 @@ asset_server: Res, } else { commands.entity(entity).insert(BlueprintAssetsLoaded); } + + + commands.entity(entity).insert(BlueprintSpawning); } } @@ -216,8 +242,8 @@ pub(crate) fn blueprints_check_assets_loading( if all_loaded { assets_to_load.all_loaded = true; - println!("LOADING: in progress for ALL assets of {:?} (instance of {}), preparing for spawn", entity_name, blueprint_info.path); - blueprint_events.send(BlueprintEvent::AssetsLoaded {blueprint_name:"".into(), blueprint_path: blueprint_info.path.clone() }); + // println!("LOADING: DONE for ALL assets of {:?} (instance of {}), preparing for spawn", entity_name, blueprint_info.path); + // blueprint_events.send(BlueprintEvent::AssetsLoaded {blueprint_name:"".into(), blueprint_path: blueprint_info.path.clone() }); commands .entity(entity) @@ -226,7 +252,7 @@ pub(crate) fn blueprints_check_assets_loading( //.remove::() //REMOVE it in release mode/ when hot reload is off, keep it for dev/hot reload ; }else { - println!("LOADING: done for ALL assets of {:?} (instance of {}): {} ",entity_name, blueprint_info.path, progress * 100.0); + // println!("LOADING: in progress for ALL assets of {:?} (instance of {}): {} ",entity_name, blueprint_info.path, progress * 100.0); } } } @@ -302,30 +328,30 @@ pub(crate) fn react_to_asset_changes( } -pub(crate) fn blueprints_spawn( - spawn_placeholders: Query< - ( - Entity, - &BlueprintInfo, - Option<&Transform>, - Option<&Parent>, - Option<&AddToGameWorld>, - Option<&Name>, - ), - ( - With, - Added, - Without, - ), - >, + +pub(crate) fn blueprints_assets_ready(spawn_placeholders: Query< + ( + Entity, + &BlueprintInfo, + Option<&Transform>, + Option<&Parent>, + Option<&AddToGameWorld>, + Option<&Name>, + ), + ( + With, + Added, + Without, + ), +>, mut commands: Commands, mut game_world: Query>, assets_gltf: Res>, asset_server: Res, - children: Query<&Children>, -) { + children: Query<&Children>,) +{ for ( entity, blueprint_info, @@ -336,7 +362,7 @@ pub(crate) fn blueprints_spawn( ) in spawn_placeholders.iter() { info!( - "all assets loaded, attempting to spawn blueprint {:?} for entity {:?}, id: {:?}, parent:{:?}", + "BLUEPRINT: all assets loaded, attempting to spawn blueprint SCENE {:?} for entity {:?}, id: {:?}, parent:{:?}", blueprint_info.name, name, entity, original_parent ); @@ -385,25 +411,137 @@ pub(crate) fn blueprints_spawn( ..Default::default() }, - Spawned, - BlueprintInstanceReady, // FIXME: not sure if this is should be added here or in the post process OriginalChildren(original_children), BlueprintAnimations { // these are animations specific to the inside of the blueprint named_animations: named_animations//gltf.named_animations.clone(), }, + )); - if add_to_world.is_some() { + /* if add_to_world.is_some() { let world = game_world .get_single_mut() .expect("there should be a game world present"); commands.entity(world).add_child(entity); - } + } */ + } } +#[derive(Component, Reflect, Debug, Default)] +#[reflect(Component)] +pub struct SubBlueprintsSpawnTracker{ + sub_blueprint_instances: HashMap +} + +#[derive(Component, Reflect, Debug)] +#[reflect(Component)] +pub struct SpawnTrackRoot(Entity); + +pub(crate) fn blueprints_check_blueprints_spawning( + foo: Query<(Entity, Option<&Name>, Option<&Children>, Option<&SpawnTrackRoot>), (With, Added)>, + spawning_blueprints: Query<(Entity, Option<&Name>, Option<&Children>), Added>, + + mut trackers: Query<(Entity, &mut SubBlueprintsSpawnTracker)>, + with_blueprint_infos : Query<(Entity, Option<&Name>), With>, + all_children: Query<&Children>, + mut commands: Commands, +) { + for (entity, name, children, track_root) in foo.iter(){ + info!("Done spawning blueprint scene for {:?} (track root: {:?})", name, track_root); + let mut sub_blueprint_instances: Vec = vec![]; + let mut tracker_data: HashMap = HashMap::new(); + + if children.is_some() { + //println!("has children"); + let children = children + .expect("there should be some children of the current blueprint instance"); + + for child in all_children.iter_descendants(entity) { + if with_blueprint_infos.get(child).is_ok() { + sub_blueprint_instances.push(child); + tracker_data.insert(child, false); + commands.entity(child).insert(SpawnTrackRoot(entity));// Injecting to know which entity is the root + } + } + + /*for child in children.iter() { + // println!(" child: {:?}", child); + /*if with_blueprint_infos.get(*child).is_ok() { + sub_blueprint_instances.push(*child); + } */ + + all_children + if let Ok(sub_children) = all_children.get(*child) { + for sub_child in sub_children.iter() { + if with_blueprint_infos.get(*sub_child).is_ok() { + sub_blueprint_instances.push(*sub_child); + } + } + } + }*/ + } + if let Some(track_root) = track_root { + //println!("got some root"); + if let Ok((s_entity, mut tracker)) = trackers.get_mut(track_root.0) { + // println!("found the tracker, setting loaded for {}", entity); + tracker.sub_blueprint_instances.entry(entity).or_insert(true); + tracker.sub_blueprint_instances.insert(entity, true); + + // TODO: ugh, my limited rust knowledge, this is bad code + let mut all_spawned = true; + + for key in tracker.sub_blueprint_instances.keys() { + let val = tracker.sub_blueprint_instances[key]; + println!("Key: {key}, Spawned {}", val); + } + + for val in tracker.sub_blueprint_instances.values() { + println!("spawned {}", val); + if !val { + all_spawned = false; + break; + } + } + if all_spawned { + println!("ALLLLL SPAAAAWNED for {}", track_root.0) + } + } + } + + println!("sub blueprint instances {:?}", sub_blueprint_instances); + commands.entity(entity) + .insert(SubBlueprintsSpawnTracker{sub_blueprint_instances: tracker_data.clone()}); + } + /*for(entity, name, children) in spawning_blueprints.iter() { + println!("checking for spawning state of sub blueprints for {:?}", name); + }*/ +} +/* +BlueprintSpawning + - Blueprint Load Assets + - Blueprint Assets Ready: spawn Blueprint's scene + - Blueprint Scene Ready: + - get list of sub Blueprints if any, inject blueprints spawn tracker + => annoying issue with the "nested" useless root node created by blender + => distinguish between blueprint instances inside blueprint instances vs blueprint instances inside blueprints ?? + - Blueprint sub_blueprints Ready + +*/ + + +// could be done differently, by notifying each parent of a spawning blueprint that this child is done spawning ? +// perhaps using component hooks or observers (ie , if a ComponentSpawning + Parent) +pub fn track_sub_blueprints( + spawning_blueprints: Query<(Entity, Option<&Name>, Option<&Children>), Added> +) { + for(entity, name, children) in spawning_blueprints.iter() { + println!("checking for spawning state of sub blueprints for {:?}", name); + } +} + diff --git a/crates/blenvy/src/blueprints/spawn_post_process.rs b/crates/blenvy/src/blueprints/spawn_post_process.rs index 6effb6a..3b6b3b4 100644 --- a/crates/blenvy/src/blueprints/spawn_post_process.rs +++ b/crates/blenvy/src/blueprints/spawn_post_process.rs @@ -5,7 +5,7 @@ use bevy::prelude::*; use bevy::scene::SceneInstance; // use bevy::utils::hashbrown::HashSet; -use crate::{BlueprintAnimationPlayerLink, BlueprintAnimations, BlueprintInfo}; +use crate::{BlueprintAnimationPlayerLink, BlueprintAnimations, BlueprintInfo, BlueprintSpawned, BlueprintSpawning}; use crate::{SpawnHere, Spawned}; use crate::{ BlueprintEvent, CopyComponents, InBlueprint, NoInBlueprint, OriginalChildren @@ -63,7 +63,7 @@ pub(crate) fn spawned_blueprint_post_process( // can be usefull to filter out anything that came from blueprints vs normal children if no_inblueprint.is_none() { for child in all_children.iter_descendants(root_entity) { - commands.entity(child).insert(InBlueprint); + commands.entity(child).insert(InBlueprint); // we do this here in order to avoid doing it to normal children } } @@ -101,11 +101,18 @@ pub(crate) fn spawned_blueprint_post_process( // commands.entity(original).remove::>(); // FIXME: if we delete the handle to the scene, things get despawned ! not what we want //commands.entity(original).remove::(); // also clear the sub assets tracker to free up handles, perhaps just freeing up the handles and leave the rest would be better ? //commands.entity(original).remove::(); - commands.entity(root_entity).despawn_recursive(); + commands.entity(root_entity).despawn_recursive(); // Remove the root entity that comes from the spawned-in scene commands.entity(original).insert( Visibility::Visible ); - blueprint_events.send(BlueprintEvent::Spawned {blueprint_name: blueprint_info.name.clone(), blueprint_path: blueprint_info.path.clone() }); + + // blueprint_events.send(BlueprintEvent::Spawned {blueprint_name: blueprint_info.name.clone(), blueprint_path: blueprint_info.path.clone() }); + commands.entity(original) + .insert(BlueprintSpawned) + .remove::() + ; debug!("DONE WITH POST PROCESS"); + info!("done spawning blueprint for entity {:?}", name); + } } diff --git a/crates/blenvy/src/components/blender_settings/lighting.rs b/crates/blenvy/src/components/blender_settings/lighting.rs index 01312c7..6994209 100644 --- a/crates/blenvy/src/components/blender_settings/lighting.rs +++ b/crates/blenvy/src/components/blender_settings/lighting.rs @@ -128,15 +128,15 @@ fn process_tonemapping( for (scene_id, tone_mapping) in tonemappings.iter(){ match tone_mapping { BlenderToneMapping::None => { - println!("TONEMAPPING NONE"); + //println!("TONEMAPPING NONE"); commands.entity(entity).remove::(); } BlenderToneMapping::AgX => { - println!("TONEMAPPING Agx"); + //println!("TONEMAPPING Agx"); commands.entity(entity).insert(Tonemapping::AgX); } BlenderToneMapping::Filmic => { - println!("TONEMAPPING Filmic"); + //println!("TONEMAPPING Filmic"); commands.entity(entity).insert(Tonemapping::BlenderFilmic); } } diff --git a/testing/bevy_example/art/testing_simple.blend b/testing/bevy_example/art/testing_simple.blend new file mode 100644 index 0000000000000000000000000000000000000000..7c4e3dcbfc0385bddec803dbcbefc1e0a2b96e47 GIT binary patch literal 965244 zcmeEP31Ah~)t)3621LOH3O zNuvJOP2ZF+kwRF$UtRI>@tSveW#H+6rvsi2csk(efTshV4tP4?>42vLo(_0A;OT&; z1D+0eI^gMmrvsi2csk(efTshV4tP4?>42vLo(_0A;OT&;1D+0eI^gMmrvsi2csk(e zfTshV4tP4?>42vLo(_0A;OT&;1D+0eI^gMmrvsi2cskG;b)ZX^E-8tLi6^zjw0UVd zdUd8Ou_|wx*?>eBhq|-}B%jzQ4`4h9Ub2i=-*l+~6+x;7Ey!rFoyu9mmUGMCb zf6JEtu`JK--Mf!kxTxX{JKm1rEq8<}m#=)QfBykfDb4MUWxBn%o2P>(oN&TPIk|b8 z0~4>$d53oPqxM}k@R~63rxz{H&4})W+!)NyFnZ2lDNv$2%#)iE

5$$?{g=Q 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 a)VXheonaq#Y?od(YSgS@eGB-XfBylcjUdJV literal 0 HcmV?d00001 diff --git a/testing/bevy_example/src/game/in_game.rs b/testing/bevy_example/src/game/in_game.rs index d4e0593..cbd5d0d 100644 --- a/testing/bevy_example/src/game/in_game.rs +++ b/testing/bevy_example/src/game/in_game.rs @@ -1,5 +1,5 @@ use bevy::prelude::*; -use blenvy::{BluePrintBundle, BlueprintInfo, GameWorldTag, SpawnHere}; +use blenvy::{BluePrintBundle, BlueprintInfo, DynamicBlueprintInstance, GameWorldTag, SpawnHere}; use crate::{GameState, InAppRunning}; //use bevy_rapier3d::prelude::Velocity; @@ -65,6 +65,7 @@ pub fn spawn_test( blueprint: BlueprintInfo{name: "Blueprint1".into() , path:"blueprints/Blueprint1.glb".into()}, // FIXME ..Default::default() }, + DynamicBlueprintInstance, bevy::prelude::Name::from(format!("test{}", name_index)), // SpawnHere, TransformBundle::from_transform(Transform::from_xyz(x, 2.0, y)), diff --git a/testing/bevy_example/src/hierarchy_debug.rs b/testing/bevy_example/src/hierarchy_debug.rs index 9c6dd39..3d78490 100644 --- a/testing/bevy_example/src/hierarchy_debug.rs +++ b/testing/bevy_example/src/hierarchy_debug.rs @@ -156,8 +156,8 @@ impl Plugin for HiearchyDebugPlugin { fn build(&self, app: &mut App) { app .add_systems(Startup, setup_hierarchy_debug) - .add_systems(Update, check_for_component) - //.add_systems(Update, draw_hierarchy_debug) + // .add_systems(Update, check_for_component) + .add_systems(Update, draw_hierarchy_debug) //.add_systems(Update, check_for_gltf_extras) ; diff --git a/tools/blenvy/add_ons/bevy_components/components/ui.py b/tools/blenvy/add_ons/bevy_components/components/ui.py index 4bae762..3e73ab2 100644 --- a/tools/blenvy/add_ons/bevy_components/components/ui.py +++ b/tools/blenvy/add_ons/bevy_components/components/ui.py @@ -386,7 +386,7 @@ class BLENVY_PT_component_tools_panel(bpy.types.Panel): self.draw_invalid_or_unregistered(layout, status, custom_property, item, item_type) def gather_invalid_item_data(self, item, invalid_component_names, items_with_invalid_components, items_with_original_components, original_name, item_type): - blenvy_custom_properties = ['components_meta', 'bevy_components', 'user_assets', 'generated_assets' ] # some of our own hard coded custom properties that should be ignored + blenvy_custom_properties = ['components_meta', 'bevy_components', 'user_assets', 'generated_assets', 'BlueprintAssets', 'export_path' ] # some of our own hard coded custom properties that should be ignored upgreadable_entries = [] if "components_meta" in item or hasattr(item, "components_meta"): # FIXME; wrong way of determining diff --git a/tools/blenvy/tests/test_bevy_integration_simple.py b/tools/blenvy/tests/test_bevy_integration_simple.py new file mode 100644 index 0000000..89e55c5 --- /dev/null +++ b/tools/blenvy/tests/test_bevy_integration_simple.py @@ -0,0 +1,184 @@ +import bpy +import os +import subprocess +import json +import pytest +import shutil + +import filecmp +from PIL import Image +from pixelmatch.contrib.PIL import pixelmatch + +from blenvy.add_ons.auto_export.common.prepare_and_export import prepare_and_export + +@pytest.fixture +def setup_data(request): + print("\nSetting up resources...") + + root_path = "../../testing/bevy_example" + assets_root_path = os.path.join(root_path, "assets") + blueprints_path = os.path.join(assets_root_path, "blueprints") + levels_path = os.path.join(assets_root_path, "levels") + + models_path = os.path.join(assets_root_path, "models") + materials_path = os.path.join(assets_root_path, "materials") + yield { + "root_path": root_path, + "models_path": models_path, + "blueprints_path": blueprints_path, + "levels_path": levels_path, + "materials_path":materials_path + } + + def finalizer(): + + #other_materials_path = os.path.join("../../testing", "other_materials") + + print("\nPerforming teardown...") + if os.path.exists(blueprints_path): + shutil.rmtree(blueprints_path) + + if os.path.exists(levels_path): + shutil.rmtree(levels_path) + + if os.path.exists(models_path): + shutil.rmtree(models_path) + + if os.path.exists(materials_path): + shutil.rmtree(materials_path) + + diagnostics_file_path = os.path.join(root_path, "bevy_diagnostics.json") + if os.path.exists(diagnostics_file_path): + os.remove(diagnostics_file_path) + + hierarchy_file_path = os.path.join(root_path, "bevy_hierarchy.json") + if os.path.exists(hierarchy_file_path): + os.remove(hierarchy_file_path) + + screenshot_observed_path = os.path.join(root_path, "screenshot.png") + if os.path.exists(screenshot_observed_path): + os.remove(screenshot_observed_path) + + #request.addfinalizer(finalizer) + + return None + + +""" +- calls exporter on the testing scene +- launches bevy app & checks for output +- checks screenshot, hierarchy & diagnostics files generated on the bevy side against reference files +- if all worked => test is a-ok +- removes generated files +""" +def test_export_complex(setup_data): + root_path = setup_data["root_path"] + + # with change detection + # first, configure things + # we use the global settings for that + export_props = { + } + gltf_settings = { + "export_animations": True, + "export_optimize_animation_size": False, + "export_apply":True + } + + # store settings for the auto_export part + stored_auto_settings = bpy.data.texts[".gltf_auto_export_settings"] if ".gltf_auto_export_settings" in bpy.data.texts else bpy.data.texts.new(".gltf_auto_export_settings") + stored_auto_settings.clear() + stored_auto_settings.write(json.dumps(export_props)) + + # and store settings for the gltf part + stored_gltf_settings = bpy.data.texts[".blenvy_gltf_settings"] if ".blenvy_gltf_settings" in bpy.data.texts else bpy.data.texts.new(".blenvy_gltf_settings") + stored_gltf_settings.clear() + stored_gltf_settings.write(json.dumps(gltf_settings)) + + # move the main cube + bpy.data.objects["Cube"].location = [1, 0, 0] + # move the cube in the library + # TODO: add back bpy.data.objects["Blueprint1_mesh"].location = [1, 2, 1] + + blenvy = bpy.context.window_manager.blenvy + #blenvy.project_root_path = + #blenvy.blueprints_path + blenvy.auto_export.auto_export = True + blenvy.auto_export.export_scene_settings = True + blenvy.auto_export.export_blueprints = True + #blenvy.auto_export.export_materials_library = True + + bpy.data.scenes['World'].blenvy_scene_type = 'Level' # set scene as main/level scene + bpy.data.scenes['Library'].blenvy_scene_type = 'Library' # set scene as Library scene + + # scene asset + user_asset = bpy.data.scenes['World'].user_assets.add() + '''user_asset.name = "test_asset" + user_asset.path = "audio/fake.mp3"''' + + # blueprint asset + #user_asset = bpy.data.collections['Blueprint4_nested'].user_assets.add() + '''user_asset.name = "yoho_audio" + user_asset.path = "audio/fake.mp3"''' + + # we have to cheat, since we cannot rely on the data injected when saving the library file (since we are not saving it as part of the tests) + '''bpy.data.collections["External_blueprint"]["export_path"] = "blueprints/External_blueprint.glb" + bpy.data.collections["External_blueprint2"]["export_path"] = "blueprints/External_blueprint2.glb" + bpy.data.collections["External_blueprint3"]["export_path"] = "blueprints/External_blueprint3.glb"''' + + # do the actual exporting + prepare_and_export() + + # blueprint1 => has an instance, got changed, should export + # blueprint2 => has NO instance, but marked as asset, should export + # blueprint3 => has NO instance, not marked as asset, used inside blueprint 4: should export + # blueprint4 => has an instance, with nested blueprint3, should export + # blueprint5 => has NO instance, not marked as asset, should NOT export + + '''assert os.path.exists(os.path.join(setup_data["levels_path"], "World.glb")) == True + assert os.path.exists(os.path.join(setup_data["blueprints_path"], "Blueprint1.glb")) == True + assert os.path.exists(os.path.join(setup_data["blueprints_path"], "Blueprint2.glb")) == True + assert os.path.exists(os.path.join(setup_data["blueprints_path"], "Blueprint3.glb")) == True + assert os.path.exists(os.path.join(setup_data["blueprints_path"], "Blueprint4_nested.glb")) == True + assert os.path.exists(os.path.join(setup_data["blueprints_path"], "Blueprint5.glb")) == False + assert os.path.exists(os.path.join(setup_data["blueprints_path"], "Blueprint6_animated.glb")) == True + assert os.path.exists(os.path.join(setup_data["blueprints_path"], "Blueprint7_hierarchy.glb")) == True''' + + # 'assets_list_'+scene.name+"_components" should have been removed after the export + assets_list_object_name = "assets_list_"+"World"+"_components" + assets_list_object_present = assets_list_object_name in bpy.data.objects + assert assets_list_object_present == False + + # now run bevy + command = "cargo run --features bevy/dynamic_linking" + FNULL = open(os.devnull, 'w') #use this if you want to suppress output to stdout from the subprocess + return_code = subprocess.call(["cargo", "run", "--features", "bevy/dynamic_linking"], cwd=root_path) + print("RETURN CODE OF BEVY APP", return_code) + assert return_code == 0 + + with open(os.path.join(root_path, "bevy_diagnostics.json")) as diagnostics_file: + diagnostics = json.load(diagnostics_file) + print("diagnostics", diagnostics) + assert diagnostics["animations"] == True + assert diagnostics["empty_found"] == True + assert diagnostics["blueprints_list_found"] == True + assert diagnostics["exported_names_correct"] == True + + with open(os.path.join(root_path, "bevy_hierarchy.json")) as hierarchy_file: + with open(os.path.join(os.path.dirname(__file__), "expected_bevy_hierarchy.json")) as expexted_hierarchy_file: + hierarchy = json.load(hierarchy_file) + expected = json.load(expexted_hierarchy_file) + assert sorted(hierarchy.items()) == sorted(expected.items()) + + # last but not least, do a visual compare + screenshot_expected_path = os.path.join(os.path.dirname(__file__), "expected_screenshot.png") + screenshot_observed_path = os.path.join(root_path, "screenshot.png") + img_a = Image.open(screenshot_expected_path) + img_b = Image.open(screenshot_observed_path) + img_diff = Image.new("RGBA", img_a.size) + mismatch = pixelmatch(img_a, img_b, img_diff, includeAA=True) + print("image mismatch", mismatch) + assert mismatch < 50 + + +