@@ -215,36 +215,22 @@ void CParticleEffect::OnFrame(u32 frame_dt)
215215 vis.box .getsphere (vis.sphere .P , vis.sphere .R );
216216 }
217217
218-
219- m_MemDT += frame_dt;
220- int StepCount = 0 ;
221- if (m_MemDT >= uDT_STEP)
222- {
223- StepCount = m_MemDT / uDT_STEP;
224- m_MemDT = m_MemDT % uDT_STEP;
225- clamp (StepCount, 0 , 3 );
226- }
227- for (; StepCount; StepCount--)
218+ bool deffered_stop = true ;
219+ if (m_Def->m_Flags .is (CPEDef::dfTimeLimit))
228220 {
229- if (m_Def-> m_Flags .is (CPEDef::dfTimeLimit ))
221+ if (!m_RT_Flags .is (flRT_DefferedStop ))
230222 {
231- if (!m_RT_Flags.is (flRT_DefferedStop))
223+ m_fElapsedLimit -= Device.fTimeDelta ;
224+ if (m_fElapsedLimit < 0 .f )
232225 {
233- m_fElapsedLimit -= fDT_STEP ;
234- if (m_fElapsedLimit < 0 .f )
235- {
236- m_fElapsedLimit = m_Def->m_fTimeLimit ;
237- Stop (true );
238- break ;
239- }
226+ m_fElapsedLimit = m_Def->m_fTimeLimit ;
227+ Stop (true );
228+ deffered_stop = false ;
240229 }
241230 }
242- if (m_RT_Flags.is (flRT_DefferedStop) && (0 == p_cnt))
243- {
244- m_RT_Flags.set (flRT_Playing | flRT_DefferedStop, FALSE );
245- break ;
246- }
247231 }
232+ if (deffered_stop && m_RT_Flags.is (flRT_DefferedStop) && (0 == p_cnt))
233+ m_RT_Flags.set (flRT_Playing | flRT_DefferedStop, FALSE );
248234 }
249235 else
250236 {
@@ -470,8 +456,6 @@ void CParticleEffect::Render(float) {
470456 lt.set (0 .f ,0 .f );
471457 rb.set (1 .f ,1 .f );
472458
473- _mm_prefetch ( (char *) &particles[i + 1 ] , _MM_HINT_NTA );
474-
475459 float sina = 0 .0f , cosa = 0 .0f ;
476460
477461 sina = _sin (m.rot .x );
@@ -480,8 +464,6 @@ void CParticleEffect::Render(float) {
480464 // _mm_store_ss(&sina, _mm_sin_ps(_mm_set1_ps(m.rot.x)));
481465 // _mm_store_ss(&cosa, _mm_cos_ps(_mm_set1_ps(m.rot.x)));
482466
483- _mm_prefetch ( 64 + (char *) &particles[i + 1 ] , _MM_HINT_NTA );
484-
485467 if (m_Def->m_Flags .is (CPEDef::dfFramed))
486468 m_Def->m_Frame .CalculateTC (iFloor (float (m.frame )/255 .f ),lt,rb);
487469
0 commit comments