From b5f3d8280bc650fd0f697b0a5d575c7328472e49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20Rom=C3=A1n=20N=C3=BA=C3=B1ez?= Date: Sat, 19 Sep 2026 20:07:21 +0200 Subject: [PATCH] Register loaders during asset preprocessing --- src/bin/process-assets.rs | 4 ++++ src/lib.rs | 31 +++++++++++++++++++++++++------ src/menus/mod.rs | 5 +---- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/bin/process-assets.rs b/src/bin/process-assets.rs index 6478298..0abc55c 100644 --- a/src/bin/process-assets.rs +++ b/src/bin/process-assets.rs @@ -1,8 +1,11 @@ use bevy::{ app::ScheduleRunnerPlugin, asset::{AssetMode, AssetPlugin, processor::AssetProcessor, processor::ProcessorState}, + gltf::GltfPlugin, + image::ImagePlugin, prelude::*, tasks::block_on, + text::TextPlugin, }; use shinespark::AssetProcessingPlugin; use std::{process::ExitCode, time::Duration}; @@ -15,6 +18,7 @@ fn main() -> ExitCode { use_asset_processor_override: Some(true), ..default() }) + .add_plugins((ImagePlugin::default(), TextPlugin, GltfPlugin::default())) .add_plugins(AssetProcessingPlugin) .add_systems(Update, finish_when_processed); diff --git a/src/lib.rs b/src/lib.rs index 9c8c19e..349c081 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -32,7 +32,13 @@ use clap::Parser; use ron_asset_manager::RonAssetPlugin; use crate::{ - camera::MatchCameraPlugin, fighter::manifest::FighterManifest, game_settings::GameSettings, schedule::GameplaySchedulePlugin, stage::manifest::StageManifest, ui::InGameUIPlugin, + camera::MatchCameraPlugin, + fighter::manifest::FighterManifest, + game_settings::GameSettings, + menus::style::FGUiStyle, + schedule::GameplaySchedulePlugin, + stage::manifest::StageManifest, + ui::InGameUIPlugin, }; mod args; @@ -80,6 +86,20 @@ pub enum AppState { #[derive(Default)] pub struct GamePlugin; +/// Registers every custom asset loader used by the game and asset processor. +pub struct GameAssetPlugin; + +impl Plugin for GameAssetPlugin { + fn build(&self, app: &mut App) { + app.add_plugins(( + RonAssetPlugin::::create("fighter.ron"), + RonAssetPlugin::::create("stage.ron"), + RonAssetPlugin::::create("ron"), + RonAssetPlugin::::create("stylesheet.ron"), + )); + } +} + impl Plugin for GamePlugin { fn build(&self, app: &mut App) { // Each module owns its own systems, rollback registrations and @@ -99,9 +119,7 @@ impl Plugin for GamePlugin { scripting::importer::FighterScriptImportPlugin, stage::StagePlugin, MatchCameraPlugin, - RonAssetPlugin::::create("fighter.ron"), - RonAssetPlugin::::create("stage.ron"), - RonAssetPlugin::::create("ron"), + GameAssetPlugin, InGameUIPlugin, )) .add_plugins(menus::MenuPlugin) @@ -155,13 +173,14 @@ impl Plugin for GamePlugin { } } -/// Registers only the custom asset processors used by CI and release builds. -/// The processing binary adds this plugin without starting the game. +/// Registers the custom asset loaders and processors used by CI and release +/// builds. The processing binary adds this plugin without starting the game. pub struct AssetProcessingPlugin; impl Plugin for AssetProcessingPlugin { fn build(&self, app: &mut App) { app.add_plugins(( + GameAssetPlugin, scripting::importer::FighterScriptImportPlugin, fighter::baked_animation::BakedAnimationAssetProcessingPlugin, )); diff --git a/src/menus/mod.rs b/src/menus/mod.rs index c814473..054520b 100644 --- a/src/menus/mod.rs +++ b/src/menus/mod.rs @@ -6,12 +6,10 @@ use bevy::{ prelude::*, }; -use ron_asset_manager::RonAssetPlugin; - use crate::{ AppState, game_settings::CommonAssets, - menus::{character_select::CharacterSelectScreen, main_menu::MainMenu, style::FGUiStyle}, + menus::{character_select::CharacterSelectScreen, main_menu::MainMenu}, }; pub mod button; pub mod character_select; @@ -222,7 +220,6 @@ impl Plugin for MenuPlugin { //--------- // STAGE SELECT END //--------- - .add_plugins(RonAssetPlugin::::create("stylesheet.ron")) .add_systems( Update, (