first commit
This commit is contained in:
99
Minecraft.Client/NetherPortalParticle.cpp
Normal file
99
Minecraft.Client/NetherPortalParticle.cpp
Normal file
@@ -0,0 +1,99 @@
|
||||
#include "stdafx.h"
|
||||
#include "NetherPortalParticle.h"
|
||||
#include "..\Minecraft.World\JavaMath.h"
|
||||
#include "..\Minecraft.World\Random.h"
|
||||
#include "Minecraft.h"
|
||||
|
||||
// 4J Stu - This class was originally "PortalParticle" but I have split the two uses of the particle
|
||||
// Only the nether portal uses this particle
|
||||
|
||||
NetherPortalParticle::NetherPortalParticle(Level *level, double x, double y, double z, double xd, double yd, double zd) : Particle(level, x, y, z, xd, yd, zd)
|
||||
{
|
||||
this->xd = xd;
|
||||
this->yd = yd;
|
||||
this->zd = zd;
|
||||
this->xStart = this->x = x;
|
||||
this->yStart = this->y = y;
|
||||
this->zStart = this->z = z;
|
||||
|
||||
float br = random->nextFloat()*0.6f+0.4f;
|
||||
oSize = size = random->nextFloat()*0.2f+0.5f;
|
||||
//rCol = gCol = bCol = 1.0f*br;
|
||||
//gCol *= 0.3f;
|
||||
//rCol *= 0.9f;
|
||||
|
||||
// Default colour (0.9f, 0.3f, 1.0f)
|
||||
// 0xE64DFF
|
||||
|
||||
unsigned int colour = Minecraft::GetInstance()->getColourTable()->getColor( eMinecraftColour_Particle_NetherPortal );
|
||||
int r = (colour>>16)&0xFF;
|
||||
int g = (colour>>8)&0xFF;
|
||||
int b = colour&0xFF;
|
||||
rCol = (r/255.0f)*br;
|
||||
gCol = (g/255.0f)*br;
|
||||
bCol = (b/255.0f)*br;
|
||||
|
||||
lifetime = (int) (Math::random()*10) + 40;
|
||||
noPhysics = true;
|
||||
setMiscTex((int)(Math::random()*8));
|
||||
}
|
||||
|
||||
void NetherPortalParticle::render(Tesselator *t, float a, float xa, float ya, float za, float xa2, float za2)
|
||||
{
|
||||
float s = (age + a) / (float) lifetime;
|
||||
s = 1-s;
|
||||
s = s*s;
|
||||
s = 1-s;
|
||||
size = oSize * (s);
|
||||
Particle::render(t, a, xa, ya, za, xa2, za2);
|
||||
}
|
||||
|
||||
// 4J - brought forward from 1.8.2
|
||||
int NetherPortalParticle::getLightColor(float a)
|
||||
{
|
||||
int br = Particle::getLightColor(a);
|
||||
|
||||
float pos = age/(float)lifetime;
|
||||
pos = pos*pos;
|
||||
pos = pos*pos;
|
||||
|
||||
int br1 = (br) & 0xff;
|
||||
int br2 = (br >> 16) & 0xff;
|
||||
br2 += (int) (pos * 15 * 16);
|
||||
if (br2 > 15 * 16) br2 = 15 * 16;
|
||||
return br1 | br2 << 16;
|
||||
}
|
||||
|
||||
float NetherPortalParticle::getBrightness(float a)
|
||||
{
|
||||
float br = Particle::getBrightness(a);
|
||||
float pos = age/(float)lifetime;
|
||||
pos = pos*pos;
|
||||
pos = pos*pos;
|
||||
return br*(1-pos)+pos;
|
||||
}
|
||||
|
||||
void NetherPortalParticle::tick()
|
||||
{
|
||||
xo = x;
|
||||
yo = y;
|
||||
zo = z;
|
||||
|
||||
float pos = age/(float)lifetime;
|
||||
float a = pos;
|
||||
pos = -pos+pos*pos*2;
|
||||
// pos = pos*pos;
|
||||
// pos = pos*pos;
|
||||
pos = 1-pos;
|
||||
|
||||
x = xStart+xd*pos;
|
||||
y = yStart+yd*pos+(1-a);
|
||||
z = zStart+zd*pos;
|
||||
|
||||
|
||||
// spd+=0.002/lifetime*age;
|
||||
|
||||
if (age++ >= lifetime) remove();
|
||||
|
||||
// move(xd*spd, yd*spd, zd*spd);
|
||||
}
|
||||
Reference in New Issue
Block a user