From 4ed1c7d881942cd32ecd5c4f14d7aab824e6a6fe Mon Sep 17 00:00:00 2001 From: Schrottkatze Date: Sun, 22 Jun 2025 19:36:37 +0200 Subject: [PATCH] add loading scenes to tx --- src/debug.rs | 4 +++- src/debug/debug_event.rs | 4 ++++ src/game.rs | 4 ++-- src/game/debug.rs | 26 ++++++++++++++++++++++++++ startup.tx | 3 +++ 5 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 src/game/debug.rs diff --git a/src/debug.rs b/src/debug.rs index 45a2f6b..10d5330 100644 --- a/src/debug.rs +++ b/src/debug.rs @@ -4,13 +4,15 @@ use std::{fs, path::PathBuf}; use bevy::prelude::*; use bevy_inspector_egui::bevy_egui::EguiPlugin; use clap::Subcommand; -use console::{ConsoleLog, exec_script}; +use console::exec_script; use crate::AppState; mod console; mod debug_event; +pub use console::ConsoleLog; + pub use debug_event::DebugEvent; /// Debug system set. diff --git a/src/debug/debug_event.rs b/src/debug/debug_event.rs index dbd2ad4..0c530cc 100644 --- a/src/debug/debug_event.rs +++ b/src/debug/debug_event.rs @@ -53,4 +53,8 @@ pub enum DebugEvent { /// - Nothing #[command(name = "enable-debug", aliases = ["debug-enable"])] EnableDebugMode, + + /// Load a gltf scene. + #[command(name = "load-scene", aliases = ["load-file", "load"])] + LoadGltf { asset_path: String }, } diff --git a/src/game.rs b/src/game.rs index 8f59fdb..16c67c0 100644 --- a/src/game.rs +++ b/src/game.rs @@ -7,8 +7,8 @@ use crate::{ }; mod camera; +mod debug; mod scene; -mod debug {} /// Gameplay system set. All functions in this control the gameplay (duh). #[derive(SystemSet, Debug, Clone, PartialEq, Eq, Hash)] @@ -25,6 +25,6 @@ pub fn plugin(app: &mut App) { OnExit(AppState::Ingame), despawn::.in_set(GameplaySet), ) - .add_plugins(camera::plugin); + .add_plugins((camera::plugin, debug::plugin)); app.configure_sets(Update, GameplaySet.run_if(in_state(AppState::Ingame))); } diff --git a/src/game/debug.rs b/src/game/debug.rs new file mode 100644 index 0000000..20a7fce --- /dev/null +++ b/src/game/debug.rs @@ -0,0 +1,26 @@ +use bevy::{asset::AssetPath, prelude::*}; + +use crate::debug::{ConsoleLog, DebugEvent, DebugMode}; + +pub fn plugin(app: &mut App) { + app.add_systems( + Update, + handle_load_gltf.run_if(in_state(DebugMode::Enabled)), + ); +} + +fn handle_load_gltf( + mut c: Commands, + mut dbg_reader: EventReader, + mut logger: ResMut, + asset_server: Res, +) { + for ev in dbg_reader.read() { + if let DebugEvent::LoadGltf { asset_path } = ev { + let scene_handle = asset_server + .load(GltfAssetLabel::Scene(0).from_asset(AssetPath::from(asset_path.clone()))); + + c.spawn(SceneRoot(scene_handle)); + } + } +} diff --git a/startup.tx b/startup.tx index 7671405..2ce0900 100644 --- a/startup.tx +++ b/startup.tx @@ -1,2 +1,5 @@ log "hello from startup script!!" + +enable-debug start-game +load-scene gltf/test.glb