improve rendering speeds 100 fold /srs
This commit is contained in:
parent
52f7164aa0
commit
aadf5602f1
2 changed files with 11 additions and 13 deletions
|
@ -2,6 +2,7 @@ use plist;
|
|||
|
||||
use std::collections::HashMap;
|
||||
|
||||
use image::GenericImageView;
|
||||
use image::DynamicImage;
|
||||
|
||||
/// "{1,2}" -> `(1, 2)`
|
||||
|
@ -195,11 +196,9 @@ pub fn load_animations(path: &str) -> Animations {
|
|||
}
|
||||
|
||||
/// Trims out a sprite from an image according to a .plist spritesheet.
|
||||
pub fn get_sprite(spritesheet: Spritesheet, img: DynamicImage, key: String) -> Option<(DynamicImage, Sprite)> {
|
||||
pub fn get_sprite(spritesheet: Spritesheet, img: &DynamicImage, key: String) -> Option<(DynamicImage, Sprite)> {
|
||||
let sprite = spritesheet.sprites.get(&key);
|
||||
|
||||
let mut canvas = img;
|
||||
|
||||
if sprite.is_none() {
|
||||
return None;
|
||||
}
|
||||
|
@ -212,7 +211,7 @@ pub fn get_sprite(spritesheet: Spritesheet, img: DynamicImage, key: String) -> O
|
|||
(left, top, width, height) = (left, top, height, width);
|
||||
}
|
||||
|
||||
canvas = canvas.crop(left as u32, top as u32, width as u32, height as u32);
|
||||
let mut canvas: DynamicImage = image::DynamicImage::ImageRgba8(img.view(left as u32, top as u32, width as u32, height as u32).to_image());
|
||||
|
||||
if sprite.rotated {
|
||||
canvas = canvas.rotate270();
|
||||
|
@ -225,8 +224,7 @@ pub fn get_sprite(spritesheet: Spritesheet, img: DynamicImage, key: String) -> O
|
|||
}
|
||||
|
||||
/// Trims out a sprite from an image according to a LoadedSpritesheet object.
|
||||
pub fn get_sprite_from_loaded(spritesheet: LoadedSpritesheet, key: String) -> Option<(DynamicImage, Sprite)> {
|
||||
let texture = spritesheet.texture;
|
||||
let sprite = get_sprite(spritesheet.spritesheet, texture, key);
|
||||
pub fn get_sprite_from_loaded(spritesheet: &LoadedSpritesheet, key: String) -> Option<(DynamicImage, Sprite)> {
|
||||
let sprite = get_sprite(spritesheet.spritesheet.clone(), &spritesheet.texture, key);
|
||||
return sprite;
|
||||
}
|
|
@ -129,14 +129,14 @@ pub fn render_normal(basename: String, col1: [f32; 3], col2: [f32; 3], glow: boo
|
|||
|
||||
let layers = vec![
|
||||
(if glow || (is_black(col1) && is_black(col2)) {
|
||||
assets::get_sprite_from_loaded(game_sheet_glow, format!("{}_glow_001.png", basename))
|
||||
assets::get_sprite_from_loaded(&game_sheet_glow, format!("{}_glow_001.png", basename))
|
||||
} else {
|
||||
None
|
||||
}),
|
||||
assets::get_sprite_from_loaded(game_sheet_02.clone(), format!("{}_2_001.png", basename)),
|
||||
assets::get_sprite_from_loaded(game_sheet_02.clone(), format!("{}_3_001.png", basename)),
|
||||
assets::get_sprite_from_loaded(game_sheet_02.clone(), format!("{}_001.png", basename)),
|
||||
assets::get_sprite_from_loaded(game_sheet_02, format!("{}_extra_001.png", basename))
|
||||
assets::get_sprite_from_loaded(&game_sheet_02, format!("{}_2_001.png", basename)),
|
||||
assets::get_sprite_from_loaded(&game_sheet_02, format!("{}_3_001.png", basename)),
|
||||
assets::get_sprite_from_loaded(&game_sheet_02, format!("{}_001.png", basename)),
|
||||
assets::get_sprite_from_loaded(&game_sheet_02, format!("{}_extra_001.png", basename))
|
||||
];
|
||||
|
||||
let colors: Vec<Option<[f32; 3]>> = vec![
|
||||
|
@ -203,7 +203,7 @@ pub fn render_zany(basename: String, col1: [f32; 3], col2: [f32; 3], glow: bool,
|
|||
|
||||
layers.extend(names.iter().enumerate().map(|(i, v)| {
|
||||
(
|
||||
assets::get_sprite_from_loaded(game_sheet_02.clone(), v.clone()),
|
||||
assets::get_sprite_from_loaded(&game_sheet_02, v.clone()),
|
||||
a.position,
|
||||
flip(a.scale, a.flipped),
|
||||
a.rotation,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue