From 7879ae9220d429fe3e356ce9d5c958bb63245442 Mon Sep 17 00:00:00 2001 From: Twcash <131608563+Twcash@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:41:04 -0600 Subject: [PATCH] update DrawParticles (#10407) * update particles * Forgot rotation * Lock Fill.poly behind a boolean * stylize --- .../mindustry/world/draw/DrawParticles.java | 32 +++++++++++++------ .../world/draw/DrawSoftParticles.java | 6 ++-- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/core/src/mindustry/world/draw/DrawParticles.java b/core/src/mindustry/world/draw/DrawParticles.java index 467e668296..ca6261344e 100644 --- a/core/src/mindustry/world/draw/DrawParticles.java +++ b/core/src/mindustry/world/draw/DrawParticles.java @@ -10,24 +10,25 @@ import mindustry.gen.*; public class DrawParticles extends DrawBlock{ public Color color = Color.valueOf("f2d585"); + public int sides = 12; + public float x = 0, y = 0; public float alpha = 0.5f; public int particles = 30; - public float particleLife = 70f, particleRad = 7f, particleSize = 3f, fadeMargin = 0.4f, rotateScl = 3f; - public boolean reverse = false; + public float particleRotation = 0, particleLife = 70f, particleRad = 7f, particleSize = 3f, fadeMargin = 0.4f, rotateScl = 3f; + public boolean reverse = false, poly = false; public Interp particleInterp = new PowIn(1.5f); public Interp particleSizeInterp = Interp.slope; public Blending blending = Blending.normal; @Override public void draw(Building build){ - if(build.warmup() > 0f){ - float a = alpha * build.warmup(); + Draw.blend(blending); Draw.color(color); - float base = (Time.time / particleLife); + float base = Time.time / particleLife; rand.setSeed(build.id); for(int i = 0; i < particles; i++){ float fin = (rand.random(2f) + base) % 1f; @@ -35,12 +36,23 @@ public class DrawParticles extends DrawBlock{ float fout = 1f - fin; float angle = rand.random(360f) + (Time.time / rotateScl) % 360f; float len = particleRad * particleInterp.apply(fout); + Draw.alpha(a * (1f - Mathf.curve(fin, 1f - fadeMargin))); - Fill.circle( - build.x + Angles.trnsx(angle, len), - build.y + Angles.trnsy(angle, len), - particleSize * particleSizeInterp.apply(fin) * build.warmup() - ); + if(poly){ + Fill.poly( + build.x + x + Angles.trnsx(angle, len), + build.y + y + Angles.trnsy(angle, len), + sides, + particleSize * particleSizeInterp.apply(fin) * build.warmup(), + particleRotation + ); + }else{ + Fill.circle( + build.x + x + Angles.trnsx(angle, len), + build.y + y + Angles.trnsy(angle, len), + particleSize * particleSizeInterp.apply(fin) * build.warmup() + ); + } } Draw.blend(); diff --git a/core/src/mindustry/world/draw/DrawSoftParticles.java b/core/src/mindustry/world/draw/DrawSoftParticles.java index b2b8271155..35c7d903b2 100644 --- a/core/src/mindustry/world/draw/DrawSoftParticles.java +++ b/core/src/mindustry/world/draw/DrawSoftParticles.java @@ -13,7 +13,7 @@ public class DrawSoftParticles extends DrawBlock{ public TextureRegion region; public Color color = Color.valueOf("e3ae6f"), color2 = Color.valueOf("d04d46"); - + public float x = 0, y = 0; public float alpha = 0.5f; public int particles = 30; public float particleLife = 70f, particleRad = 7f, particleSize = 3f, fadeMargin = 0.4f, rotateScl = 1.5f; @@ -43,8 +43,8 @@ public class DrawSoftParticles extends DrawBlock{ float r = particleSize * fin * build.warmup()*2f; Draw.rect( region, - build.x + Angles.trnsx(angle, len), - build.y + Angles.trnsy(angle, len), + build.x + x + Angles.trnsx(angle, len), + build.y + y + Angles.trnsy(angle, len), r, r ); }