remove extra clone
This commit is contained in:
parent
6b7683a143
commit
52f7164aa0
5 changed files with 43 additions and 40 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -192,7 +192,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gd-icon-renderer"
|
||||
version = "1.0.1"
|
||||
version = "1.0.2"
|
||||
dependencies = [
|
||||
"image",
|
||||
"imageproc",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[package]
|
||||
name = "gd-icon-renderer"
|
||||
description = "A tool to render Geometry Dash icons."
|
||||
version = "1.0.1"
|
||||
version = "1.0.2"
|
||||
edition = "2021"
|
||||
license-file = "LICENSE"
|
||||
repository = "https://git.reidlab.online/reidlab/gd-icon-renderer"
|
||||
|
|
|
@ -42,6 +42,7 @@ Provide your `GJ_GameSheet02-uhd`, `GJ_GameSheetGlow-uhd`, `Robot_AnimDesc2`, an
|
|||
## Todo
|
||||
|
||||
- Add examples to the repo.
|
||||
- Swap to a custom `plist` parser. Current one is **SLOW**.
|
||||
- Swap to a custom `plist` parser. Current one is kinda slow.
|
||||
- Stop the fucking cloning. Majority of speed lost from cloning is @ [`./src/renderer.rs:178`](./src/renderer.rs)
|
||||
- Trim extra alpha space on the final result.
|
||||
- I think theres some weird shifting and offsets going on, please investigate 🥺. Really big on `spider_16` for some reason?? Related issue on the inspired project [here](https://github.com/oatmealine/gd-icon-renderer/issues/2).
|
|
@ -198,7 +198,7 @@ pub fn load_animations(path: &str) -> Animations {
|
|||
pub fn get_sprite(spritesheet: Spritesheet, img: DynamicImage, key: String) -> Option<(DynamicImage, Sprite)> {
|
||||
let sprite = spritesheet.sprites.get(&key);
|
||||
|
||||
let mut canvas = img.clone();
|
||||
let mut canvas = img;
|
||||
|
||||
if sprite.is_none() {
|
||||
return None;
|
||||
|
@ -226,7 +226,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.clone();
|
||||
let sprite = get_sprite(spritesheet.spritesheet.clone(), texture, key);
|
||||
let texture = spritesheet.texture;
|
||||
let sprite = get_sprite(spritesheet.spritesheet, texture, key);
|
||||
return sprite;
|
||||
}
|
|
@ -175,10 +175,14 @@ pub fn render_zany(basename: String, col1: [f32; 3], col2: [f32; 3], glow: bool,
|
|||
let mut anim = animations.get("Robot_idle_001.png").unwrap_or_else(|| animations.get("Spider_idle_001.png").expect("no animations found")).clone();
|
||||
anim.sort_by_key(|spr| spr.z);
|
||||
|
||||
let mut layers = anim
|
||||
.iter()
|
||||
.map(|a| {
|
||||
let texture_name = a.texture.clone().replace("spider_01", &basename).replace("robot_01", &basename);
|
||||
// TODO: this is a bit of a mess
|
||||
// TODO: this is also very slow, but i dont think it can be helped
|
||||
// TODO: im not good at memory management so srry
|
||||
|
||||
let mut layers: Vec<(Option<(DynamicImage, Sprite)>, (f32, f32), (f32, f32), f64, bool, Option<[f32; 3]>)> = Vec::new();
|
||||
|
||||
for a in anim {
|
||||
let texture_name = a.texture.replace("spider_01", &basename).replace("robot_01", &basename);
|
||||
let mut names = vec![
|
||||
texture_name.replace("_001.png", "_2_001.png"),
|
||||
texture_name.replace("_001.png", "_3_001.png"),
|
||||
|
@ -197,19 +201,17 @@ pub fn render_zany(basename: String, col1: [f32; 3], col2: [f32; 3], glow: bool,
|
|||
colors.push(Some(glow_col));
|
||||
}
|
||||
|
||||
names.iter().enumerate().map(|(i, v)|
|
||||
layers.extend(names.iter().enumerate().map(|(i, v)| {
|
||||
(
|
||||
assets::get_sprite_from_loaded(game_sheet_02.to_owned().clone(), v.clone()),
|
||||
assets::get_sprite_from_loaded(game_sheet_02.clone(), v.clone()),
|
||||
a.position,
|
||||
flip(a.scale, a.flipped),
|
||||
a.rotation,
|
||||
glow && i == names.len() - 1,
|
||||
colors[i]
|
||||
)
|
||||
).collect::<Vec<(Option<(DynamicImage, Sprite)>, (f32, f32), (f32, f32), f64, bool, Option<[f32; 3]>)>>()
|
||||
})
|
||||
.flatten()
|
||||
.collect::<Vec<(Option<(DynamicImage, Sprite)>, (f32, f32), (f32, f32), f64, bool, Option<[f32; 3]>)>>();
|
||||
}))
|
||||
}
|
||||
|
||||
// put glow b4 everything else
|
||||
layers.sort_by_key(|t| if t.4 { 0 } else { 1 });
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue