mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-11 17:51:04 +00:00
Fix attached particle spawners far from spawn (#6479)
* Fix attached particle spawners far from spawn When far from spawn, attached particle spawners did not spawn particles.
This commit is contained in:
parent
ab72100a2c
commit
017815161b
1 changed files with 10 additions and 2 deletions
|
@ -326,6 +326,11 @@ void ParticleSpawner::step(float dtime, ClientEnvironment* env)
|
||||||
v3f ppos = m_player->getPosition() / BS;
|
v3f ppos = m_player->getPosition() / BS;
|
||||||
v3f pos = random_v3f(m_minpos, m_maxpos);
|
v3f pos = random_v3f(m_minpos, m_maxpos);
|
||||||
|
|
||||||
|
// Need to apply this first or the following check
|
||||||
|
// will be wrong for attached spawners
|
||||||
|
if (is_attached)
|
||||||
|
pos += attached_pos;
|
||||||
|
|
||||||
if (pos.getDistanceFrom(ppos) <= radius) {
|
if (pos.getDistanceFrom(ppos) <= radius) {
|
||||||
v3f vel = random_v3f(m_minvel, m_maxvel);
|
v3f vel = random_v3f(m_minvel, m_maxvel);
|
||||||
v3f acc = random_v3f(m_minacc, m_maxacc);
|
v3f acc = random_v3f(m_minacc, m_maxacc);
|
||||||
|
@ -333,7 +338,6 @@ void ParticleSpawner::step(float dtime, ClientEnvironment* env)
|
||||||
if (is_attached) {
|
if (is_attached) {
|
||||||
// Apply attachment yaw and position
|
// Apply attachment yaw and position
|
||||||
pos.rotateXZBy(attached_yaw);
|
pos.rotateXZBy(attached_yaw);
|
||||||
pos += attached_pos;
|
|
||||||
vel.rotateXZBy(attached_yaw);
|
vel.rotateXZBy(attached_yaw);
|
||||||
acc.rotateXZBy(attached_yaw);
|
acc.rotateXZBy(attached_yaw);
|
||||||
}
|
}
|
||||||
|
@ -387,6 +391,11 @@ void ParticleSpawner::step(float dtime, ClientEnvironment* env)
|
||||||
v3f ppos = m_player->getPosition() / BS;
|
v3f ppos = m_player->getPosition() / BS;
|
||||||
v3f pos = random_v3f(m_minpos, m_maxpos);
|
v3f pos = random_v3f(m_minpos, m_maxpos);
|
||||||
|
|
||||||
|
// Need to apply this first or the following check
|
||||||
|
// will be wrong for attached spawners
|
||||||
|
if (is_attached)
|
||||||
|
pos += attached_pos;
|
||||||
|
|
||||||
if (pos.getDistanceFrom(ppos) <= radius) {
|
if (pos.getDistanceFrom(ppos) <= radius) {
|
||||||
v3f vel = random_v3f(m_minvel, m_maxvel);
|
v3f vel = random_v3f(m_minvel, m_maxvel);
|
||||||
v3f acc = random_v3f(m_minacc, m_maxacc);
|
v3f acc = random_v3f(m_minacc, m_maxacc);
|
||||||
|
@ -394,7 +403,6 @@ void ParticleSpawner::step(float dtime, ClientEnvironment* env)
|
||||||
if (is_attached) {
|
if (is_attached) {
|
||||||
// Apply attachment yaw and position
|
// Apply attachment yaw and position
|
||||||
pos.rotateXZBy(attached_yaw);
|
pos.rotateXZBy(attached_yaw);
|
||||||
pos += attached_pos;
|
|
||||||
vel.rotateXZBy(attached_yaw);
|
vel.rotateXZBy(attached_yaw);
|
||||||
acc.rotateXZBy(attached_yaw);
|
acc.rotateXZBy(attached_yaw);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue