Browse Source

Fixed particle reset.

Branimir Karadžić 8 years ago
parent
commit
09d821e234
2 changed files with 8 additions and 5 deletions
  1. 1 0
      examples/32-particles/particles.cpp
  2. 7 5
      examples/common/ps/particle_system.cpp

+ 1 - 0
examples/32-particles/particles.cpp

@@ -281,6 +281,7 @@ public:
 		{
 		{
 			m_emitter[ii].create();
 			m_emitter[ii].create();
 			m_emitter[ii].m_uniforms.m_handle = sprite;
 			m_emitter[ii].m_uniforms.m_handle = sprite;
+			m_emitter[ii].update();
 		}
 		}
 
 
 		imguiCreate();
 		imguiCreate();

+ 7 - 5
examples/common/ps/particle_system.cpp

@@ -187,8 +187,12 @@ namespace ps
 
 
 		void reset()
 		void reset()
 		{
 		{
+			m_dt = 0.0f;
+			m_uniforms.reset();
 			m_num = 0;
 			m_num = 0;
 			bx::memSet(&m_aabb, 0, sizeof(Aabb) );
 			bx::memSet(&m_aabb, 0, sizeof(Aabb) );
+
+			m_rng.reset();
 		}
 		}
 
 
 		void update(float _dt)
 		void update(float _dt)
@@ -684,13 +688,11 @@ namespace ps
 
 
 	void Emitter::create(EmitterShape::Enum _shape, EmitterDirection::Enum _direction, uint32_t _maxParticles)
 	void Emitter::create(EmitterShape::Enum _shape, EmitterDirection::Enum _direction, uint32_t _maxParticles)
 	{
 	{
-		m_dt = 0.0f;
-		m_uniforms.reset();
+		reset();
+
 		m_shape     = _shape;
 		m_shape     = _shape;
 		m_direction = _direction;
 		m_direction = _direction;
-
-		m_num = 0;
-		m_max = _maxParticles;
+		m_max       = _maxParticles;
 		m_particles = (Particle*)BX_ALLOC(s_ctx.m_allocator, m_max*sizeof(Particle) );
 		m_particles = (Particle*)BX_ALLOC(s_ctx.m_allocator, m_max*sizeof(Particle) );
 	}
 	}