Handle boundary conditions.
Definition at line 435 of file ParticleNetwork.cpp.
436{
438 return;
439 }
440
442 glm::vec3 pos = particle.point->get_position();
443 bool out_of_bounds = false;
444
445 for (int axis = 0; axis < 3; ++axis) {
447 out_of_bounds = true;
448
453 particle.velocity[axis] = -particle.velocity[axis] * 0.8F;
456 particle.velocity[axis] = -particle.velocity[axis] * 0.8F;
457 }
458 break;
459
465 }
466 break;
467
470 particle.velocity[axis] = 0.0F;
471 break;
472
475 particle.velocity = glm::vec3(0.0F);
476 break;
477
479 break;
480 }
481 }
482 }
483
484 if (out_of_bounds) {
485 particle.point->set_position(pos);
486 }
487 }
488}
std::vector< ParticleNode > m_particles
glm::vec3 random_position_volume() const
Random position in bounds volume.
@ BOUNCE
Reflect off boundaries.
@ NONE
No bounds checking.
@ DESTROY
Remove particle at boundary (respawn optional)
@ WRAP
Teleport to opposite side.
References BOUNCE, CLAMP, DESTROY, m_bounds_max, m_bounds_min, m_bounds_mode, m_particles, NONE, random_position_volume(), and WRAP.
Referenced by process_batch().