载入中...
搜索中...
未找到
ParticleEmitterPool.cpp
浏览该文件的文档.
2
4
5#include <algorithm>
6
7namespace eve::particles {
8
10
12 const int buffer = std::max(1, minBuffer);
13 for (auto it = idle_.begin(); it != idle_.end(); ++it) {
15 if (!emitter || emitter->getBufferSize() < buffer) continue;
16 idle_.erase(it);
17 emitter->reset();
18 emitter->stop();
19 emitter->setVisible(true);
21 }
23 if (!created)
25 DiagnosticCode::Failed, "Particle emitter pool could not create an emitter", "buffer"));
26 created->stop();
28}
29
31 if (!emitter)
33 "Cannot recycle a null particle emitter",
34 "emitter"));
35 emitter->stop();
36 emitter->reset();
37 emitter->setVisible(false);
38 emitter->clearSubEmitters();
39 emitter->clearForceFields();
40 emitter->clearFloatParameters();
41 emitter->clearFloatParameterBindings();
42 idle_.push_back(emitter);
44}
45
47 for (auto* emitter : idle_)
48 if (emitter) emitter->release();
49 idle_.clear();
50}
51
52} // namespace eve::particles
std::unique_ptr< gpgpu::GpuBuffer > buffer
Definition OnnxGpgpu.cpp:26
int created
std::unique_ptr< TrailEmitter > emitter
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
Move-only operation result carrying either a value or Status.
Definition Result.h:155
static Result success(T value)
Construct a successful result owning value.
Definition Result.h:164
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
~ParticleEmitterPool()
Particle emitter pool.
Result< ParticleEmitter * > acquire(int minBuffer=64)
Borrow a reset emitter with capacity >= minBuffer.
void clear()
Release every idle emitter and clear the pool.
Result< void > recycle(ParticleEmitter *emitter)
Return a previously acquired emitter to the idle list.
ECS emitter entity. Script configures components; ParticleSimSystem / ParticleRenderSystem drive per-...
static ParticleEmitter * createEmitter(int bufferSize=1000)