Fix text-2d. (#17674)

# Objective

Fix text 2d. Fixes https://github.com/bevyengine/bevy/issues/17670

## Solution

Evidently there's a 1:N extraction going on here that requires using the
render entity rather than main entity.

## Testing

Text 2d example
This commit is contained in:
charlotte 2025-02-04 13:32:14 -08:00 committed by GitHub
parent 18c4050dd2
commit 8c7f1b34d3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -485,9 +485,9 @@ pub struct SpriteViewBindGroup {
} }
#[derive(Resource, Deref, DerefMut, Default)] #[derive(Resource, Deref, DerefMut, Default)]
pub struct SpriteBatches(HashMap<(RetainedViewEntity, MainEntity), SpriteBatch>); pub struct SpriteBatches(HashMap<(RetainedViewEntity, Entity), SpriteBatch>);
#[derive(PartialEq, Eq, Clone)] #[derive(PartialEq, Eq, Clone, Debug)]
pub struct SpriteBatch { pub struct SpriteBatch {
image_handle_id: AssetId<Image>, image_handle_id: AssetId<Image>,
range: Range<u32>, range: Range<u32>,
@ -694,7 +694,7 @@ pub fn prepare_sprite_image_bind_groups(
}); });
batch_item_index = item_index; batch_item_index = item_index;
current_batch = Some(batches.entry((*retained_view, item.main_entity())).insert( current_batch = Some(batches.entry((*retained_view, item.entity())).insert(
SpriteBatch { SpriteBatch {
image_handle_id: batch_image_handle, image_handle_id: batch_image_handle,
range: index..index, range: index..index,
@ -846,7 +846,7 @@ impl<P: PhaseItem, const I: usize> RenderCommand<P> for SetSpriteTextureBindGrou
pass: &mut TrackedRenderPass<'w>, pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult { ) -> RenderCommandResult {
let image_bind_groups = image_bind_groups.into_inner(); let image_bind_groups = image_bind_groups.into_inner();
let Some(batch) = batches.get(&(view.retained_view_entity, item.main_entity())) else { let Some(batch) = batches.get(&(view.retained_view_entity, item.entity())) else {
return RenderCommandResult::Skip; return RenderCommandResult::Skip;
}; };
@ -876,7 +876,7 @@ impl<P: PhaseItem> RenderCommand<P> for DrawSpriteBatch {
pass: &mut TrackedRenderPass<'w>, pass: &mut TrackedRenderPass<'w>,
) -> RenderCommandResult { ) -> RenderCommandResult {
let sprite_meta = sprite_meta.into_inner(); let sprite_meta = sprite_meta.into_inner();
let Some(batch) = batches.get(&(view.retained_view_entity, item.main_entity())) else { let Some(batch) = batches.get(&(view.retained_view_entity, item.entity())) else {
return RenderCommandResult::Skip; return RenderCommandResult::Skip;
}; };