mirror of
https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1.git
synced 2026-03-31 20:43:37 +00:00
the whole game
This commit is contained in:
99
src/client/particle/Particle.cpp
Executable file
99
src/client/particle/Particle.cpp
Executable file
@@ -0,0 +1,99 @@
|
||||
#include "Particle.h"
|
||||
|
||||
float
|
||||
Particle::xOff = 0,
|
||||
Particle::yOff = 0,
|
||||
Particle::zOff = 0;
|
||||
|
||||
Particle::Particle( Level* level, float x, float y, float z, float xa, float ya, float za )
|
||||
: super(level),
|
||||
age(0),
|
||||
gravity(0),
|
||||
rCol(1), gCol(1), bCol(1),
|
||||
tex(0)
|
||||
{
|
||||
setSize(0.2f, 0.2f);
|
||||
heightOffset = bbHeight / 2.0f;
|
||||
setPos(x, y, z);
|
||||
|
||||
xd = xa + (float) (Mth::random() * 2 - 1) * 0.4f;
|
||||
yd = ya + (float) (Mth::random() * 2 - 1) * 0.4f;
|
||||
zd = za + (float) (Mth::random() * 2 - 1) * 0.4f;
|
||||
float speed = (float) (Mth::random() + Mth::random() + 1) * 0.15f;
|
||||
|
||||
float dd = (float) (Mth::sqrt(xd * xd + yd * yd + zd * zd));
|
||||
const float mul = 0.4f * speed / dd;
|
||||
xd = xd * mul;
|
||||
yd = yd * mul + 0.1f;
|
||||
zd = zd * mul;
|
||||
|
||||
uo = sharedRandom.nextFloat() * 3;
|
||||
vo = sharedRandom.nextFloat() * 3;
|
||||
|
||||
size = (sharedRandom.nextFloat() * 0.5f + 0.5f) * 2;
|
||||
|
||||
lifetime = (int) (4.0f / (sharedRandom.nextFloat() * 0.9f + 0.1f));
|
||||
makeStepSound = false;
|
||||
}
|
||||
|
||||
Particle* Particle::setPower( float power )
|
||||
{
|
||||
xd *= power;
|
||||
yd = (yd - 0.1f) * power + 0.1f;
|
||||
zd *= power;
|
||||
return this;
|
||||
}
|
||||
|
||||
Particle* Particle::scale( float scale )
|
||||
{
|
||||
setSize(0.2f * scale, 0.2f * scale);
|
||||
size *= scale;
|
||||
return this;
|
||||
}
|
||||
|
||||
void Particle::tick()
|
||||
{
|
||||
xo = x;
|
||||
yo = y;
|
||||
zo = z;
|
||||
|
||||
if (age++ >= lifetime) remove();
|
||||
|
||||
yd -= 0.04f * gravity;
|
||||
move(xd, yd, zd);
|
||||
xd *= 0.98f;
|
||||
yd *= 0.98f;
|
||||
zd *= 0.98f;
|
||||
|
||||
if (onGround) {
|
||||
xd *= 0.7f;
|
||||
zd *= 0.7f;
|
||||
}
|
||||
}
|
||||
|
||||
void Particle::render( Tesselator& t, float a, float xa, float ya, float za, float xa2, float za2 )
|
||||
{
|
||||
float u0 = (tex % 16) / 16.0f;
|
||||
float u1 = u0 + 0.999f / 16.0f;
|
||||
float v0 = (tex / 16) / 16.0f;
|
||||
float v1 = v0 + 0.999f / 16.0f;
|
||||
float r = 0.1f * size;
|
||||
|
||||
float x = (float) (xo + (this->x - xo) * a - xOff);
|
||||
float y = (float) (yo + (this->y - yo) * a - yOff);
|
||||
float z = (float) (zo + (this->z - zo) * a - zOff);
|
||||
|
||||
float br = getBrightness(a);
|
||||
t.color(rCol * br, gCol * br, bCol * br);
|
||||
|
||||
t.vertexUV(x - xa * r - xa2 * r, y - ya * r, z - za * r - za2 * r, u1, v1);
|
||||
t.vertexUV(x - xa * r + xa2 * r, y + ya * r, z - za * r + za2 * r, u1, v0);
|
||||
t.vertexUV(x + xa * r + xa2 * r, y + ya * r, z + za * r + za2 * r, u0, v0);
|
||||
t.vertexUV(x + xa * r - xa2 * r, y - ya * r, z + za * r - za2 * r, u0, v1);
|
||||
//printf("uv: %f, %f, %f, %f\n", u0, v0, u1, v1);
|
||||
}
|
||||
|
||||
int Particle::getParticleTexture()
|
||||
{
|
||||
return ParticleEngine::MISC_TEXTURE;
|
||||
}
|
||||
Reference in New Issue
Block a user