diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/FlameParticle.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.Client/FlameParticle.cpp')
| -rw-r--r-- | Minecraft.Client/FlameParticle.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/Minecraft.Client/FlameParticle.cpp b/Minecraft.Client/FlameParticle.cpp new file mode 100644 index 00000000..eb12dbfd --- /dev/null +++ b/Minecraft.Client/FlameParticle.cpp @@ -0,0 +1,73 @@ +#include "stdafx.h" +#include "..\Minecraft.World\JavaMath.h" +#include "..\Minecraft.World\Random.h" +#include "FlameParticle.h" + +FlameParticle::FlameParticle(Level *level, double x, double y, double z, double xd, double yd, double zd) : Particle(level, x, y, z, xd, yd, zd) +{ + this->xd=this->xd*0.01f+xd; + this->yd=this->yd*0.01f+yd; + this->zd=this->zd*0.01f+zd; + x+=(random->nextFloat()-random->nextFloat())*0.05f; + y+=(random->nextFloat()-random->nextFloat())*0.05f; + z+=(random->nextFloat()-random->nextFloat())*0.05f; + + oSize = size; + rCol = gCol = bCol = 1.0f; + + lifetime = (int)(8/(Math::random()*0.8+0.2))+4; + noPhysics = true; + setMiscTex(48); +} + +void FlameParticle::render(Tesselator *t, float a, float xa, float ya, float za, float xa2, float za2) +{ + float s = (age + a) / (float) lifetime; + size = oSize * (1 - s*s*0.5f); + Particle::render(t, a, xa, ya, za, xa2, za2); +} + +// 4J - brought forward from 1.8.2 +int FlameParticle::getLightColor(float a) +{ + float l = (age + a) / lifetime; + if (l < 0) l = 0; + if (l > 1) l = 1; + int br = Particle::getLightColor(a); + + int br1 = (br) & 0xff; + int br2 = (br >> 16) & 0xff; + br1 += (int) (l * 15 * 16); + if (br1 > 15 * 16) br1 = 15 * 16; + return br1 | br2 << 16; +} + +float FlameParticle::getBrightness(float a) +{ + float l = (age+a)/lifetime; + if (l<0) l = 0; + if (l>1) l = 1; + float br = Particle::getBrightness(a); + + return br*l+(1-l); +} + +void FlameParticle::tick() +{ + xo = x; + yo = y; + zo = z; + + if (age++ >= lifetime) remove(); + + move(xd, yd, zd); + xd *= 0.96f; + yd *= 0.96f; + zd *= 0.96f; + + if (onGround) + { + xd *= 0.7f; + zd *= 0.7f; + } +}
\ No newline at end of file |
