From 60e92de7b5a412cd7165aab69a1276c659e046fd Mon Sep 17 00:00:00 2001 From: Chris Brown Date: Sun, 24 Dec 2023 16:24:59 +0000 Subject: [PATCH] Fix tiled helper map location propagation fixes #500 --- examples/helpers/tiled.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/examples/helpers/tiled.rs b/examples/helpers/tiled.rs index 835febe1..bff3619e 100644 --- a/examples/helpers/tiled.rs +++ b/examples/helpers/tiled.rs @@ -18,6 +18,7 @@ use std::sync::Arc; use bevy::{ asset::{io::Reader, AssetLoader, AssetPath, AsyncReadExt}, + hierarchy::BuildChildren, log, prelude::{ Added, Asset, AssetApp, AssetEvent, AssetId, Assets, Bundle, Commands, Component, @@ -200,7 +201,7 @@ pub fn process_loaded_maps( mut map_events: EventReader>, maps: Res>, tile_storage_query: Query<(Entity, &TileStorage)>, - mut map_query: Query<(&Handle, &mut TiledLayersStorage)>, + mut map_query: Query<(Entity, &Handle, &mut TiledLayersStorage)>, new_maps: Query<&Handle, Added>>, ) { let mut changed_maps = Vec::>::default(); @@ -230,7 +231,7 @@ pub fn process_loaded_maps( } for changed_map in changed_maps.iter() { - for (map_handle, mut layer_storage) in map_query.iter_mut() { + for (map_entity, map_handle, mut layer_storage) in map_query.iter_mut() { // only deal with currently changed map if map_handle.id() != *changed_map { continue; @@ -315,6 +316,9 @@ pub fn process_loaded_maps( let mut tile_storage = TileStorage::empty(map_size); let layer_entity = commands.spawn_empty().id(); + // Make layer entities transform relative to the map transform + commands.entity(map_entity).add_child(layer_entity); + for x in 0..map_size.x { for y in 0..map_size.y { // Transform TMX coords into bevy coords. @@ -365,6 +369,9 @@ pub fn process_loaded_maps( }) .id(); tile_storage.set(&tile_pos, tile_entity); + // Make tiles transform relative to layer transform, + // to ensure they have correct world_pos aligned with drawn location + commands.entity(layer_entity).add_child(tile_entity); } }