From 2f8000e4a8566e7bb2a1bf579ca21487fb44153f Mon Sep 17 00:00:00 2001 From: Edgar Geier Date: Wed, 8 Feb 2023 03:57:12 +0100 Subject: [PATCH] feat: add render feature for headless mode (tilemaps only) (#159) feat: add default feature render to support running headless by disabling it --- Cargo.toml | 5 +++-- src/systems.rs | 14 +++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 79c3caa6..07035a36 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ members = ["macros"] [dependencies] bevy_ecs_ldtk_macros = { version = "0.5.0", optional = true, path = "macros" } -bevy_ecs_tilemap = "0.9" +bevy_ecs_tilemap = { version = "0.9", default-features = false } bevy = { version = "0.9", default-features = false, features = ["bevy_sprite"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -30,9 +30,10 @@ bevy_rapier2d = "0.19" rand = "0.8" [features] -default = ["derive"] +default = ["derive", "render"] derive = ["bevy_ecs_ldtk_macros"] atlas = ["bevy_ecs_tilemap/atlas"] +render = ["bevy_ecs_tilemap/render"] [[example]] name = "platformer" diff --git a/src/systems.rs b/src/systems.rs index 0ebbd999..e82ef7d6 100644 --- a/src/systems.rs +++ b/src/systems.rs @@ -1,12 +1,14 @@ //! System functions used by the plugin for processing ldtk files. +#[cfg(feature = "render")] +use crate::resources::SetClearColor; use crate::{ app::{LdtkEntityMap, LdtkIntCellMap}, assets::{LdtkAsset, LdtkLevel}, components::*, ldtk::TilesetDefinition, level::spawn_level, - resources::{LdtkSettings, LevelEvent, LevelSelection, LevelSpawnBehavior, SetClearColor}, + resources::{LdtkSettings, LevelEvent, LevelSelection, LevelSpawnBehavior}, utils::*, }; @@ -19,9 +21,9 @@ pub fn process_ldtk_assets( mut commands: Commands, mut ldtk_events: EventReader>, ldtk_world_query: Query<(Entity, &Handle)>, - ldtk_settings: Res, - mut clear_color: ResMut, - ldtk_assets: Res>, + #[cfg(feature = "render")] ldtk_settings: Res, + #[cfg(feature = "render")] mut clear_color: ResMut, + #[cfg(feature = "render")] ldtk_assets: Res>, ) { let mut ldtk_handles_to_respawn = HashSet::new(); let mut ldtk_handles_for_clear_color = HashSet::new(); @@ -46,6 +48,7 @@ pub fn process_ldtk_assets( } } + #[cfg(feature = "render")] if ldtk_settings.set_clear_color == SetClearColor::FromEditorBackground { for handle in ldtk_handles_for_clear_color.iter() { if let Some(ldtk_asset) = ldtk_assets.get(handle) { @@ -67,7 +70,7 @@ pub fn apply_level_selection( ldtk_settings: Res, ldtk_assets: Res>, mut level_set_query: Query<(&Handle, &mut LevelSet)>, - mut clear_color: ResMut, + #[cfg(feature = "render")] mut clear_color: ResMut, ) { if let Some(level_selection) = level_selection { for (ldtk_handle, mut level_set) in level_set_query.iter_mut() { @@ -92,6 +95,7 @@ pub fn apply_level_selection( if *level_set != new_level_set { *level_set = new_level_set; + #[cfg(feature = "render")] if ldtk_settings.set_clear_color == SetClearColor::FromLevelBackground { clear_color.0 = level.bg_color; }