mirror of
https://github.com/bevyengine/bevy
synced 2024-11-26 14:40:19 +00:00
Added offset
parameter to TextureAtlas::from_grid_with_padding
(#4836)
# Objective Increase compatibility with a fairly common format of padded spritesheets, in which half the padding value occurs before the first sprite box begins. The original behaviour falls out when `Vec2::ZERO` is used for `offset`. See below unity screenshot for an example of a spritesheet with padding ![Screen Shot 2022-05-24 at 4 11 49 PM](https://user-images.githubusercontent.com/30442265/170123682-287e5733-b69d-452b-b2e6-46d8d29293fb.png) ## Solution Tiny change to `crates/bevy_sprite/src/texture_atlas.rs` ## Migration Guide Calls to `TextureAtlas::from_grid_with_padding` should be modified to include a new parameter, which can be set to `Vec2::ZERO` to retain old behaviour. ```rust from_grid_with_padding(texture, tile_size, columns, rows, padding) | V from_grid_with_padding(texture, tile_size, columns, rows, padding, Vec2::ZERO) ``` Co-authored-by: FraserLee <30442265+FraserLee@users.noreply.github.com>
This commit is contained in:
parent
fb813a3a64
commit
575ffa7c0c
1 changed files with 8 additions and 6 deletions
|
@ -68,25 +68,27 @@ impl TextureAtlas {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate a `TextureAtlas` by splitting a texture into a grid where each
|
/// Generate a `TextureAtlas` by splitting a texture into a grid where each
|
||||||
/// cell of the grid of `tile_size` is one of the textures in the atlas
|
/// `tile_size` by `tile_size` grid-cell is one of the textures in the atlas
|
||||||
pub fn from_grid(
|
pub fn from_grid(
|
||||||
texture: Handle<Image>,
|
texture: Handle<Image>,
|
||||||
tile_size: Vec2,
|
tile_size: Vec2,
|
||||||
columns: usize,
|
columns: usize,
|
||||||
rows: usize,
|
rows: usize,
|
||||||
) -> TextureAtlas {
|
) -> TextureAtlas {
|
||||||
Self::from_grid_with_padding(texture, tile_size, columns, rows, Vec2::new(0f32, 0f32))
|
Self::from_grid_with_padding(texture, tile_size, columns, rows, Vec2::ZERO, Vec2::ZERO)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate a `TextureAtlas` by splitting a texture into a grid where each
|
/// Generate a `TextureAtlas` by splitting a texture into a grid where each
|
||||||
/// cell of the grid of `tile_size` is one of the textures in the atlas and is separated by
|
/// `tile_size` by `tile_size` grid-cell is one of the textures in the
|
||||||
/// some `padding` in the texture
|
/// atlas. Grid cells are separated by some `padding`, and the grid starts
|
||||||
|
/// at `offset` pixels from the top left corner.
|
||||||
pub fn from_grid_with_padding(
|
pub fn from_grid_with_padding(
|
||||||
texture: Handle<Image>,
|
texture: Handle<Image>,
|
||||||
tile_size: Vec2,
|
tile_size: Vec2,
|
||||||
columns: usize,
|
columns: usize,
|
||||||
rows: usize,
|
rows: usize,
|
||||||
padding: Vec2,
|
padding: Vec2,
|
||||||
|
offset: Vec2,
|
||||||
) -> TextureAtlas {
|
) -> TextureAtlas {
|
||||||
let mut sprites = Vec::new();
|
let mut sprites = Vec::new();
|
||||||
let mut x_padding = 0.0;
|
let mut x_padding = 0.0;
|
||||||
|
@ -102,8 +104,8 @@ impl TextureAtlas {
|
||||||
}
|
}
|
||||||
|
|
||||||
let rect_min = Vec2::new(
|
let rect_min = Vec2::new(
|
||||||
(tile_size.x + x_padding) * x as f32,
|
(tile_size.x + x_padding) * x as f32 + offset.x,
|
||||||
(tile_size.y + y_padding) * y as f32,
|
(tile_size.y + y_padding) * y as f32 + offset.y,
|
||||||
);
|
);
|
||||||
|
|
||||||
sprites.push(Rect {
|
sprites.push(Rect {
|
||||||
|
|
Loading…
Reference in a new issue