chore(Blenvy:Bevy): more cleanups

This commit is contained in:
kaosat.dev 2024-07-08 13:30:46 +02:00
parent 459bb868e0
commit 70931ee163
10 changed files with 56 additions and 66 deletions

View File

@ -7,7 +7,7 @@ use crate::{BluePrintsConfig, BlueprintAnimations};
/// helper component, is used to store the list of sub blueprints to enable automatic loading of dependend blueprints /// helper component, is used to store the list of sub blueprints to enable automatic loading of dependend blueprints
#[derive(Component, Reflect, Default, Debug)] #[derive(Component, Reflect, Default, Debug)]
#[reflect(Component)] #[reflect(Component)]
pub struct MyAsset { pub struct BlueprintAsset {
pub name: String, pub name: String,
pub path: String, pub path: String,
} }
@ -15,12 +15,12 @@ pub struct MyAsset {
/// helper component, is used to store the list of sub blueprints to enable automatic loading of dependend blueprints /// helper component, is used to store the list of sub blueprints to enable automatic loading of dependend blueprints
#[derive(Component, Reflect, Default, Debug)] #[derive(Component, Reflect, Default, Debug)]
#[reflect(Component)] #[reflect(Component)]
pub struct LocalAssets(pub Vec<MyAsset>); pub struct LocalAssets(pub Vec<BlueprintAsset>);
/// helper component, is used to store the list of sub blueprints to enable automatic loading of dependend blueprints /// helper component, is used to store the list of sub blueprints to enable automatic loading of dependend blueprints
#[derive(Component, Reflect, Default, Debug)] #[derive(Component, Reflect, Default, Debug)]
#[reflect(Component)] #[reflect(Component)]
pub struct BlueprintAssets(pub Vec<MyAsset>); pub struct BlueprintAssets(pub Vec<BlueprintAsset>);
//////////////////////// ////////////////////////
/// ///

View File

@ -119,8 +119,8 @@ impl Plugin for BlueprintsPlugin {
.register_type::<HashMap<u32, Vec<String>>>() .register_type::<HashMap<u32, Vec<String>>>()
.register_type::<HashMap<String, HashMap<u32, Vec<String>>>>() .register_type::<HashMap<String, HashMap<u32, Vec<String>>>>()
.add_event::<AnimationMarkerReached>() .add_event::<AnimationMarkerReached>()
.register_type::<MyAsset>() .register_type::<BlueprintAsset>()
.register_type::<Vec<MyAsset>>() .register_type::<Vec<BlueprintAsset>>()
.register_type::<Vec<String>>() .register_type::<Vec<String>>()
.register_type::<LocalAssets>() .register_type::<LocalAssets>()
.register_type::<BlueprintAssets>() .register_type::<BlueprintAssets>()

View File

@ -1,14 +1,10 @@
use std::path::{Path, PathBuf}; use bevy::{asset::LoadedUntypedAsset, prelude::*};
use bevy::{asset::LoadedUntypedAsset, gltf::Gltf, prelude::*, utils::HashMap};
use serde::Deserialize; use serde::Deserialize;
use crate::{BlenvyConfig, BlueprintAnimations};
/// helper component, is used to store the list of sub blueprints to enable automatic loading of dependend blueprints /// helper component, is used to store the list of sub blueprints to enable automatic loading of dependend blueprints
#[derive(Component, Reflect, Default, Debug, Deserialize)] #[derive(Component, Reflect, Default, Debug, Deserialize)]
#[reflect(Component)] #[reflect(Component)]
pub struct MyAsset { pub struct BlueprintAsset {
pub name: String, pub name: String,
pub path: String, pub path: String,
} }
@ -18,7 +14,7 @@ pub struct MyAsset {
#[reflect(Component)] #[reflect(Component)]
pub struct BlueprintAssets { pub struct BlueprintAssets {
/// only this field should get filled in from the Blender side /// only this field should get filled in from the Blender side
pub assets: Vec<MyAsset>, pub assets: Vec<BlueprintAsset>,
/// set to default when deserializing /// set to default when deserializing
#[serde(default)] #[serde(default)]
#[reflect(default)] #[reflect(default)]
@ -31,7 +27,7 @@ pub struct BlueprintAssets {
#[serde(skip)] #[serde(skip)]
pub asset_infos: Vec<AssetLoadTracker>, pub asset_infos: Vec<AssetLoadTracker>,
} }
//(pub Vec<MyAsset>); //(pub Vec<BlueprintAsset>);
//////////////////////// ////////////////////////
/// ///
@ -44,7 +40,7 @@ pub(crate) struct BlueprintAssetsNotLoaded;
/// helper component, for tracking loaded assets's loading state, id , handle etc /// helper component, for tracking loaded assets's loading state, id , handle etc
#[derive(Debug, Reflect)] #[derive(Debug, Reflect)]
pub(crate) struct AssetLoadTracker { pub struct AssetLoadTracker {
#[allow(dead_code)] #[allow(dead_code)]
pub name: String, pub name: String,
pub path: String, pub path: String,

View File

@ -1,11 +1,11 @@
use crate::{BlueprintAssetsLoadState, BlueprintAssetsLoaded, BlueprintInfo, SpawnBlueprint}; use crate::{BlueprintAssetsLoadState, BlueprintAssetsLoaded, BlueprintInfo, SpawnBlueprint};
use bevy::asset::{AssetEvent, LoadedUntypedAsset}; use bevy::asset::AssetEvent;
use bevy::prelude::*; use bevy::prelude::*;
use bevy::scene::SceneInstance; use bevy::scene::SceneInstance;
pub(crate) fn react_to_asset_changes( pub(crate) fn react_to_asset_changes(
mut gltf_events: EventReader<AssetEvent<Gltf>>, mut gltf_events: EventReader<AssetEvent<Gltf>>,
mut untyped_events: EventReader<AssetEvent<LoadedUntypedAsset>>, // mut untyped_events: EventReader<AssetEvent<LoadedUntypedAsset>>,
mut blueprint_assets: Query<( mut blueprint_assets: Query<(
Entity, Entity,
Option<&Name>, Option<&Name>,
@ -22,7 +22,7 @@ pub(crate) fn react_to_asset_changes(
AssetEvent::Modified { id } => { AssetEvent::Modified { id } => {
// React to the image being modified // React to the image being modified
// println!("Modified gltf {:?}", asset_server.get_path(*id)); // println!("Modified gltf {:?}", asset_server.get_path(*id));
for (entity, entity_name, blueprint_info, mut assets_to_load, children) in for (entity, entity_name, _blueprint_info, mut assets_to_load, children) in
blueprint_assets.iter_mut() blueprint_assets.iter_mut()
{ {
for tracker in assets_to_load.asset_infos.iter_mut() { for tracker in assets_to_load.asset_infos.iter_mut() {

View File

@ -1,6 +1,6 @@
use bevy::prelude::*; use bevy::prelude::*;
use crate::{BlenvyConfig, BlueprintReadyForPostProcess}; use crate::BlenvyConfig;
#[derive(Component, Reflect, Default, Debug)] #[derive(Component, Reflect, Default, Debug)]
#[reflect(Component)] #[reflect(Component)]

View File

@ -16,13 +16,10 @@ pub use materials::*;
pub mod copy_components; pub mod copy_components;
pub use copy_components::*; pub use copy_components::*;
pub mod hot_reload; pub(crate) mod hot_reload;
pub use hot_reload::*; pub(crate) use hot_reload::*;
use core::fmt; use bevy::{prelude::*, utils::HashMap};
use std::path::PathBuf;
use bevy::{prelude::*, render::primitives::Aabb, utils::HashMap};
use crate::{BlenvyConfig, GltfComponentsSet}; use crate::{BlenvyConfig, GltfComponentsSet};
@ -112,8 +109,8 @@ impl Plugin for BlueprintsPlugin {
.register_type::<HashMap<u32, Vec<String>>>() .register_type::<HashMap<u32, Vec<String>>>()
.register_type::<HashMap<String, HashMap<u32, Vec<String>>>>() .register_type::<HashMap<String, HashMap<u32, Vec<String>>>>()
.add_event::<AnimationMarkerReached>() .add_event::<AnimationMarkerReached>()
.register_type::<MyAsset>() .register_type::<BlueprintAsset>()
.register_type::<Vec<MyAsset>>() .register_type::<Vec<BlueprintAsset>>()
.register_type::<Vec<String>>() .register_type::<Vec<String>>()
.register_type::<BlueprintAssets>() .register_type::<BlueprintAssets>()
.register_type::<HashMap<String, Vec<String>>>() .register_type::<HashMap<String, Vec<String>>>()

View File

@ -1,4 +1,4 @@
use std::path::{Path, PathBuf}; use std::path::PathBuf;
use bevy::{gltf::Gltf, prelude::*, scene::SceneInstance, utils::hashbrown::HashMap}; use bevy::{gltf::Gltf, prelude::*, scene::SceneInstance, utils::hashbrown::HashMap};
use serde_json::Value; use serde_json::Value;
@ -113,7 +113,7 @@ Overview of the Blueprint Spawning process
*/ */
pub(crate) fn blueprints_prepare_spawn( pub(crate) fn blueprints_prepare_spawn(
blueprint_instances_to_spawn: Query<(Entity, &BlueprintInfo), (Added<SpawnBlueprint>)>, blueprint_instances_to_spawn: Query<(Entity, &BlueprintInfo), Added<SpawnBlueprint>>,
mut commands: Commands, mut commands: Commands,
asset_server: Res<AssetServer>, asset_server: Res<AssetServer>,
) { ) {
@ -401,8 +401,7 @@ pub(crate) fn blueprints_scenes_spawned(
all_children: Query<&Children>, all_children: Query<&Children>,
all_parents: Query<&Parent>, all_parents: Query<&Parent>,
mut sub_blueprint_trackers: Query<(Entity, &mut SubBlueprintsSpawnTracker, &BlueprintInfo)>, // mut sub_blueprint_trackers: Query<(Entity, &mut SubBlueprintsSpawnTracker, &BlueprintInfo)>,
mut commands: Commands, mut commands: Commands,
all_names: Query<&Name>, all_names: Query<&Name>,
@ -511,7 +510,7 @@ pub(crate) fn blueprints_cleanup_spawned_scene(
>, >,
added_animation_players: Query<(Entity, &Parent), Added<AnimationPlayer>>, added_animation_players: Query<(Entity, &Parent), Added<AnimationPlayer>>,
mut sub_blueprint_trackers: Query<(Entity, &mut SubBlueprintsSpawnTracker, &BlueprintInfo)>, mut sub_blueprint_trackers: Query<&mut SubBlueprintsSpawnTracker, With<BlueprintInfo>>,
all_children: Query<&Children>, all_children: Query<&Children>,
mut commands: Commands, mut commands: Commands,
@ -593,9 +592,7 @@ pub(crate) fn blueprints_cleanup_spawned_scene(
if let Some(track_root) = track_root { if let Some(track_root) = track_root {
let root_name = all_names.get(track_root.0); let root_name = all_names.get(track_root.0);
println!("got some root {:?}", root_name); println!("got some root {:?}", root_name);
if let Ok((s_entity, mut tracker, bp_info)) = if let Ok(mut tracker) = sub_blueprint_trackers.get_mut(track_root.0) {
sub_blueprint_trackers.get_mut(track_root.0)
{
tracker tracker
.sub_blueprint_instances .sub_blueprint_instances
.entry(original) .entry(original)

View File

@ -10,7 +10,7 @@ pub use process_gltfs::*;
pub mod blender_settings; pub mod blender_settings;
use bevy::{ use bevy::{
ecs::{component::Component, reflect::ReflectComponent, system::Resource}, ecs::{component::Component, reflect::ReflectComponent},
prelude::{App, IntoSystemConfigs, Plugin, SystemSet, Update}, prelude::{App, IntoSystemConfigs, Plugin, SystemSet, Update},
reflect::Reflect, reflect::Reflect,
}; };

View File

@ -1,5 +1,5 @@
use bevy::log::{debug, warn}; use bevy::log::{debug, warn};
use bevy::reflect::serde::{ReflectDeserializer, ReflectSerializer}; use bevy::reflect::serde::ReflectDeserializer;
use bevy::reflect::{Reflect, TypeRegistration, TypeRegistry}; use bevy::reflect::{Reflect, TypeRegistration, TypeRegistry};
use bevy::utils::HashMap; use bevy::utils::HashMap;
use ron::Value; use ron::Value;

View File

@ -250,16 +250,16 @@
"type": "array", "type": "array",
"typeInfo": "List" "typeInfo": "List"
}, },
"alloc::vec::Vec<blenvy::blueprints::assets::MyAsset>": { "alloc::vec::Vec<blenvy::blueprints::assets::BlueprintAsset>": {
"isComponent": false, "isComponent": false,
"isResource": false, "isResource": false,
"items": { "items": {
"type": { "type": {
"$ref": "#/$defs/blenvy::blueprints::assets::MyAsset" "$ref": "#/$defs/blenvy::blueprints::assets::BlueprintAsset"
} }
}, },
"long_name": "alloc::vec::Vec<blenvy::blueprints::assets::MyAsset>", "long_name": "alloc::vec::Vec<blenvy::blueprints::assets::BlueprintAsset>",
"short_name": "Vec<MyAsset>", "short_name": "Vec<BlueprintAsset>",
"type": "array", "type": "array",
"typeInfo": "List" "typeInfo": "List"
}, },
@ -13354,6 +13354,31 @@
"type": "object", "type": "object",
"typeInfo": "Struct" "typeInfo": "Struct"
}, },
"blenvy::blueprints::assets::BlueprintAsset": {
"additionalProperties": false,
"isComponent": true,
"isResource": false,
"long_name": "blenvy::blueprints::assets::BlueprintAsset",
"properties": {
"name": {
"type": {
"$ref": "#/$defs/alloc::string::String"
}
},
"path": {
"type": {
"$ref": "#/$defs/alloc::string::String"
}
}
},
"required": [
"name",
"path"
],
"short_name": "BlueprintAsset",
"type": "object",
"typeInfo": "Struct"
},
"blenvy::blueprints::assets::BlueprintAssets": { "blenvy::blueprints::assets::BlueprintAssets": {
"additionalProperties": false, "additionalProperties": false,
"isComponent": true, "isComponent": true,
@ -13362,7 +13387,7 @@
"properties": { "properties": {
"assets": { "assets": {
"type": { "type": {
"$ref": "#/$defs/alloc::vec::Vec<blenvy::blueprints::assets::MyAsset>" "$ref": "#/$defs/alloc::vec::Vec<blenvy::blueprints::assets::BlueprintAsset>"
} }
}, },
"loaded": { "loaded": {
@ -13385,31 +13410,6 @@
"type": "object", "type": "object",
"typeInfo": "Struct" "typeInfo": "Struct"
}, },
"blenvy::blueprints::assets::MyAsset": {
"additionalProperties": false,
"isComponent": true,
"isResource": false,
"long_name": "blenvy::blueprints::assets::MyAsset",
"properties": {
"name": {
"type": {
"$ref": "#/$defs/alloc::string::String"
}
},
"path": {
"type": {
"$ref": "#/$defs/alloc::string::String"
}
}
},
"required": [
"name",
"path"
],
"short_name": "MyAsset",
"type": "object",
"typeInfo": "Struct"
},
"blenvy::blueprints::materials::MaterialInfo": { "blenvy::blueprints::materials::MaterialInfo": {
"additionalProperties": false, "additionalProperties": false,
"isComponent": true, "isComponent": true,