mirror of
https://github.com/celisej567/mcpe.git
synced 2026-09-11 20:11:18 +03:00
* Add Rocket item, WIP rocket launcher
This commit is contained in:
@@ -1184,7 +1184,11 @@ void LevelRenderer::takePicture(TripodCamera* pCamera, Entity* pOwner)
|
||||
void LevelRenderer::addParticle(const std::string& name, float x, float y, float z, float vx, float vy, float vz)
|
||||
{
|
||||
// TODO: Who's the genius who decided it'd be better to check a name string rather than an enum?
|
||||
if (m_pMinecraft->m_pMobPersp->distanceToSqr_inline(x, y, z) > 256.0f)
|
||||
float maxDist = 256.0f;
|
||||
if (name == "explodeColor")
|
||||
maxDist = 16384.0f;
|
||||
|
||||
if (m_pMinecraft->m_pMobPersp->distanceToSqr_inline(x, y, z) > maxDist)
|
||||
return;
|
||||
|
||||
ParticleEngine* pe = m_pMinecraft->m_pParticleEngine;
|
||||
@@ -1203,11 +1207,29 @@ void LevelRenderer::addParticle(const std::string& name, float x, float y, float
|
||||
pe->add(new ExplodeParticle(m_pLevel, x, y, z, vx, vy, vz));
|
||||
return;
|
||||
}
|
||||
if (name == "explodeColor")
|
||||
{
|
||||
ExplodeParticle* pExplPart = new ExplodeParticle(m_pLevel, x, y, z, vx, vy, vz);
|
||||
pExplPart->m_bIsUnlit = true;
|
||||
pExplPart->field_F8 = Mth::random();
|
||||
pExplPart->field_FC = Mth::random();
|
||||
pExplPart->field_100 = Mth::random();
|
||||
pExplPart->scale(3.0f);
|
||||
pe->add(pExplPart);
|
||||
return;
|
||||
}
|
||||
if (name == "flame")
|
||||
{
|
||||
pe->add(new FlameParticle(m_pLevel, x, y, z, vx, vy, vz));
|
||||
return;
|
||||
}
|
||||
if (name == "flame2")
|
||||
{
|
||||
FlameParticle* pFlamePart = new FlameParticle(m_pLevel, x, y, z, vx, vy, vz);
|
||||
pFlamePart->scale(4.0f);
|
||||
pe->add(pFlamePart);
|
||||
return;
|
||||
}
|
||||
if (name == "lava")
|
||||
{
|
||||
pe->add(new LavaParticle(m_pLevel, x, y, z));
|
||||
@@ -1230,15 +1252,24 @@ void LevelRenderer::addParticle(const std::string& name, float x, float y, float
|
||||
void LevelRenderer::playSound(const std::string& name, float x, float y, float z, float a, float b)
|
||||
{
|
||||
// TODO: Who's the genius who decided it'd be better to check a name string rather than an enum?
|
||||
float mult = 1.0f, dist = 16.0f;
|
||||
float mult = 1.0f, maxDist = 16.0f;
|
||||
float playerDist = m_pMinecraft->m_pMobPersp->distanceToSqr(x, y, z);
|
||||
|
||||
if (a > 1.0f)
|
||||
{
|
||||
mult = 16.0f;
|
||||
dist = a * mult;
|
||||
maxDist = a * mult;
|
||||
}
|
||||
|
||||
if (dist * dist > m_pMinecraft->m_pMobPersp->distanceToSqr(x, y, z))
|
||||
if (name == "random.explode")
|
||||
{
|
||||
a *= 1.0f - playerDist / 65536.0f;
|
||||
if (a < 0)
|
||||
return;
|
||||
maxDist = 256.0f;
|
||||
}
|
||||
|
||||
if (maxDist * maxDist > playerDist)
|
||||
m_pMinecraft->m_pSoundEngine->play(name, x, y, z, a, b);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user