Skip to content

Commit e2557c0

Browse files
committed
Fixed performance regression
1 parent 38ef5e5 commit e2557c0

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

crates/bevy_sprite/src/render/mod.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,21 @@ pub fn extract_sprites(
341341
if !visibility.is_visible() {
342342
continue;
343343
}
344+
if let SpriteDrawMode::Simple = sprite.draw_mode {
345+
// PERF: we don't check in this function that the `Image` asset is ready, since it should be in most cases and hashing the handle is expensive
346+
extracted_sprites.sprites.alloc().init(ExtractedSprite {
347+
color: sprite.color,
348+
transform: *transform,
349+
// Use the full texture
350+
rect: None,
351+
custom_size: sprite.custom_size,
352+
flip_x: sprite.flip_x,
353+
flip_y: sprite.flip_y,
354+
image_handle_id: handle.id,
355+
anchor: sprite.anchor.as_vec(),
356+
});
357+
continue;
358+
}
344359
let image_size = match images.get(handle) {
345360
None => continue,
346361
Some(i) => Vec2::new(
@@ -350,14 +365,6 @@ pub fn extract_sprites(
350365
};
351366

352367
let slices = match &sprite.draw_mode {
353-
SpriteDrawMode::Simple => vec![TextureSlice {
354-
texture_rect: Rect {
355-
min: Vec2::ZERO,
356-
max: image_size,
357-
},
358-
draw_size: sprite.custom_size.unwrap_or(image_size),
359-
offset: Vec2::ZERO,
360-
}],
361368
SpriteDrawMode::Sliced(slicer) => {
362369
slicer.compute_slices(image_size, sprite.custom_size.unwrap_or(image_size))
363370
}
@@ -376,6 +383,7 @@ pub fn extract_sprites(
376383
};
377384
slice.tiled(*stretch_value, (*tile_x, *tile_y))
378385
}
386+
SpriteDrawMode::Simple => unreachable!(),
379387
};
380388
for slice in slices {
381389
let mut transform: GlobalTransform = *transform;

crates/bevy_sprite/src/texture_slice.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ impl TextureSlicer {
204204
),
205205
offset: Vec2::ZERO,
206206
};
207-
// Res
207+
208208
slices.extend(corners);
209209
match self.center_scale_mode {
210210
SliceScaleMode::Stretch => {

0 commit comments

Comments
 (0)