@@ -1053,7 +1053,6 @@ void UpdateGPU(RenderTask* task, GPUContext* context)
|
||||
ScopeLock lock(GpuUpdateListLocker);
|
||||
if (GpuUpdateList.IsEmpty())
|
||||
return;
|
||||
|
||||
PROFILE_GPU("GPU Particles");
|
||||
|
||||
for (ParticleEffect* effect : GpuUpdateList)
|
||||
@@ -1093,6 +1092,7 @@ void UpdateGPU(RenderTask* task, GPUContext* context)
|
||||
|
||||
ParticleBuffer* Particles::AcquireParticleBuffer(ParticleEmitter* emitter)
|
||||
{
|
||||
PROFILE_CPU();
|
||||
ParticleBuffer* result = nullptr;
|
||||
ASSERT(emitter && emitter->IsLoaded());
|
||||
|
||||
@@ -1102,7 +1102,7 @@ ParticleBuffer* Particles::AcquireParticleBuffer(ParticleEmitter* emitter)
|
||||
const auto entries = Pool.TryGet(emitter);
|
||||
if (entries)
|
||||
{
|
||||
while (entries->HasItems())
|
||||
while (entries->HasItems() && !result)
|
||||
{
|
||||
// Reuse buffer
|
||||
result = entries->Last().Buffer;
|
||||
@@ -1113,11 +1113,6 @@ ParticleBuffer* Particles::AcquireParticleBuffer(ParticleEmitter* emitter)
|
||||
{
|
||||
Delete(result);
|
||||
result = nullptr;
|
||||
if (entries->IsEmpty())
|
||||
{
|
||||
Pool.Remove(emitter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1146,6 +1141,7 @@ ParticleBuffer* Particles::AcquireParticleBuffer(ParticleEmitter* emitter)
|
||||
|
||||
void Particles::RecycleParticleBuffer(ParticleBuffer* buffer)
|
||||
{
|
||||
PROFILE_CPU();
|
||||
if (buffer->Emitter->EnablePooling && EnableParticleBufferPooling)
|
||||
{
|
||||
// Return to pool
|
||||
@@ -1166,6 +1162,7 @@ void Particles::RecycleParticleBuffer(ParticleBuffer* buffer)
|
||||
|
||||
void Particles::OnEmitterUnload(ParticleEmitter* emitter)
|
||||
{
|
||||
PROFILE_CPU();
|
||||
PoolLocker.Lock();
|
||||
const auto entries = Pool.TryGet(emitter);
|
||||
if (entries)
|
||||
|
||||
Reference in New Issue
Block a user