载入中...
搜索中...
未找到
eve::particles 命名空间参考

struct  ColorStop
 Color gradient stop at normalized lifetime t in [0, 1]. 更多...
 
struct  CurvePoint
 Scalar curve point at normalized lifetime t in [0, 1]. 更多...
 
struct  Particle
 Single live particle (CPU simulation). 更多...
 
class  ParticleConfigSystem
 Polls bound config files (Resource.path) and hot-reloads when modtime changes. Returns number of emitters reloaded. 更多...
 
class  ParticleCurve
 Multi-point scalar curve sampled with linear interpolation between points. Empty curve means "use the legacy two-point linear fallback". 更多...
 
class  ParticleEmitter
 ECS emitter entity. Script configures components; ParticleSimSystem / ParticleRenderSystem drive per-frame update & draw. 更多...
 
class  ParticleGradient
 Multi-stop color gradient sampled with linear interpolation between stops. Stops are kept sorted by t. Empty gradient means "use the legacy colorStart/colorEnd two-point lerp". 更多...
 
class  ParticleLightSystem
 Syncs pooled Light2D entities with alive particles (emitters with lights.enabled). 更多...
 
class  ParticleRenderSystem
 Draws all visible ParticleEmitter entities via Graphics batch path. 更多...
 
class  Particles
 Particles module — factory + script binding. Per-frame: ParticleConfigSystem (hot reload) → ParticleSimSystemParticleRenderSystem. Module update/render forward to Systems. 更多...
 
class  ParticleSimSystem
 Advances all ParticleEmitter Sim components. 更多...
 

类型定义

using WorldCollisionFn = bool(*)(float x, float y, float radius, float &nx, float &ny)
 World collision query used by emitters with worldCollision enabled.
 

函数

bool applyConfigDocument (ParticleEmitter *emitter, data::JsonDocument *doc)
 Apply particle JSON config onto an emitter (Config + Draw + Resource.texturePath). Does not change buffer size or clear live particles. Returns false on invalid / missing object root.
 
bool applyConfigText (ParticleEmitter *emitter, const std::string &json, std::string *error=nullptr)
 Parse JSON text and apply.
 
bool loadConfigFile (ParticleEmitter *emitter, const std::string &path, std::string *error=nullptr)
 Read path via Filesystem, apply, and bind Resource.path + modtime for hot reload. Returns false if file missing / invalid JSON.
 
bool reloadConfigFile (ParticleEmitter *emitter, std::string *error=nullptr)
 Re-read Resource.path if set; updates modtime.
 
void setWorldCollisionResolver (WorldCollisionFn fn)
 
WorldCollisionFn getWorldCollisionResolver ()
 
void spawnParticleAt (ParticleEmitter::Config &cfg, ParticleEmitter::Sim &sim, float x, float y)
 
void spawnParticle (ParticleEmitter::Config &cfg, ParticleEmitter::Sim &sim)
 
bool sampleSkinSpawn (ParticleEmitter::SkinSource &skinSrc, ParticleEmitter::Sim &sim, float &outX, float &outY)
 
void syncEmitterSources (ParticleEmitter::Config &cfg, ParticleEmitter::Sim &sim, ParticleEmitter::Attach &attach, ParticleEmitter::SkinSource &skinSrc)
 Sync bone attach + refresh skin cache; call before stepEmitterSim when using Attach/SkinSource.
 
void stepEmitterSim (ParticleEmitter::Config &cfg, ParticleEmitter::Sim &sim, float dt)
 
bool stepEmitterSimGpu (ParticleEmitter::Config &cfg, ParticleEmitter::Sim &sim, ParticleEmitter::GpuSim &gpu, float dt)
 GPU-accelerated integration step; false = unavailable, caller falls back to CPU.
 
 Module_IMPL (Particles, new Particles())
 
void registerParticlesCapabilities ()
 

变量

const char * kParticleGpuKernel
 GLSL compute kernel for GPU-accelerated particle integration.
 

类型定义说明

◆ WorldCollisionFn

using eve::particles::WorldCollisionFn = typedef bool (*)(float x, float y, float radius, float &nx, float &ny)

World collision query used by emitters with worldCollision enabled.

在文件 ParticleEmitter.h475 行定义.

函数说明

◆ applyConfigDocument()

bool eve::particles::applyConfigDocument ( ParticleEmitter emitter,
data::JsonDocument doc 
)

Apply particle JSON config onto an emitter (Config + Draw + Resource.texturePath). Does not change buffer size or clear live particles. Returns false on invalid / missing object root.

在文件 ParticleConfig.cpp175 行定义.

引用了 a, eve::particles::ParticleEmitter::addBurst(), eve::particles::ParticleEmitter::addForceField(), eve::particles::ParticleEmitter::applyPreset(), area, b, c, eve::particles::ParticleEmitter::clearBursts(), eve::particles::ParticleEmitter::clearColorGradient(), eve::particles::ParticleEmitter::clearForceFields(), eve::particles::ParticleEmitter::clearRotationCurve(), eve::particles::ParticleEmitter::clearSizeCurve(), eve::particles::ParticleEmitter::clearVelocityCurve(), enabled, f, eve::particles::ParticleEmitter::getDirection(), eve::particles::ParticleEmitter::getEmissionAreaX(), eve::particles::ParticleEmitter::getEmissionAreaY(), eve::particles::ParticleEmitter::getEmissionRate(), eve::particles::ParticleEmitter::getEmitterLifetime(), eve::particles::ParticleEmitter::getLayer(), eve::particles::ParticleEmitter::getParticleHeight(), eve::particles::ParticleEmitter::getParticleLifetimeMax(), eve::particles::ParticleEmitter::getParticleLifetimeMin(), eve::particles::ParticleEmitter::getParticleWidth(), eve::particles::ParticleEmitter::getSizeVariation(), eve::particles::ParticleEmitter::getSpread(), eve::particles::ParticleEmitter::getX(), eve::particles::ParticleEmitter::getY(), h, eve::data::JsonDocument::isObject(), eve::particles::ParticleEmitter::isVisible(), n, eve::data::JsonDocument::object(), eve::particles::ParticleEmitter::setBlendMode(), eve::particles::ParticleEmitter::setCollision(), eve::particles::ParticleEmitter::setCollisionBounds(), eve::particles::ParticleEmitter::setColorEnd(), eve::particles::ParticleEmitter::setColorStart(), eve::particles::ParticleEmitter::setDamping(), eve::particles::ParticleEmitter::setDirection(), eve::particles::ParticleEmitter::setEmissionArea(), eve::particles::ParticleEmitter::setEmissionRate(), eve::particles::ParticleEmitter::setEmitterLifetime(), eve::particles::ParticleEmitter::setFlipbook(), eve::particles::ParticleEmitter::setGpuSimulation(), eve::particles::ParticleEmitter::setGravity(), eve::particles::ParticleEmitter::setInheritVelocity(), eve::particles::ParticleEmitter::setLayer(), eve::particles::ParticleEmitter::setLights(), eve::particles::ParticleEmitter::setLimitVelocity(), eve::particles::ParticleEmitter::setLinearAcceleration(), eve::particles::ParticleEmitter::setMaxDeltaTime(), eve::particles::ParticleEmitter::setNoise(), eve::particles::ParticleEmitter::setOverflowMode(), eve::particles::ParticleEmitter::setParticleLifetime(), eve::particles::ParticleEmitter::setParticleSize(), eve::particles::ParticleEmitter::setPosition(), eve::particles::ParticleEmitter::setPrewarm(), eve::particles::ParticleEmitter::setRadialAcceleration(), eve::particles::ParticleEmitter::setRenderMode(), eve::particles::ParticleEmitter::setSimulationSpace(), eve::particles::ParticleEmitter::setSizes(), eve::particles::ParticleEmitter::setSizeVariation(), eve::particles::ParticleEmitter::setSpeed(), eve::particles::ParticleEmitter::setSpin(), eve::particles::ParticleEmitter::setSpread(), eve::particles::ParticleEmitter::setStartRotation(), eve::particles::ParticleEmitter::setTangentialAcceleration(), eve::particles::ParticleEmitter::setVisible(), eve::particles::ParticleEmitter::setWorldCollision(), eve::particles::ParticleEmitter::start(), type, v, x , 以及 y.

被这些函数引用 applyConfigText().

◆ applyConfigText()

bool eve::particles::applyConfigText ( ParticleEmitter emitter,
const std::string &  json,
std::string *  error 
)

Parse JSON text and apply.

在文件 ParticleConfig.cpp531 行定义.

引用了 applyConfigDocument() , 以及 error.

被这些函数引用 eve::particles::ParticleEmitter::applyConfig() , 以及 loadConfigFile().

◆ getWorldCollisionResolver()

WorldCollisionFn eve::particles::getWorldCollisionResolver ( )

在文件 ParticleEmitter.cpp322 行定义.

被这些函数引用 stepEmitterSim() , 以及 stepEmitterSimGpu().

◆ loadConfigFile()

bool eve::particles::loadConfigFile ( ParticleEmitter emitter,
const std::string &  path,
std::string *  error 
)

Read path via Filesystem, apply, and bind Resource.path + modtime for hot reload. Returns false if file missing / invalid JSON.

在文件 ParticleConfig.cpp546 行定义.

引用了 applyConfigText(), data , 以及 error.

被这些函数引用 eve::particles::ParticleEmitter::loadConfig(), eve::particles::Particles::newEmitterFromFile() , 以及 reloadConfigFile().

◆ Module_IMPL()

eve::particles::Module_IMPL ( Particles  ,
new   Particles() 
)

◆ registerParticlesCapabilities()

void eve::particles::registerParticlesCapabilities ( )

在文件 ParticlesCapabilities.cpp37 行定义.

引用了 impl , 以及 eve::cap::query().

被这些函数引用 eve::particles::Particles::Particles().

◆ reloadConfigFile()

bool eve::particles::reloadConfigFile ( ParticleEmitter emitter,
std::string *  error 
)

Re-read Resource.path if set; updates modtime.

在文件 ParticleConfig.cpp579 行定义.

引用了 error , 以及 loadConfigFile().

被这些函数引用 eve::particles::ParticleConfigSystem::poll() , 以及 eve::particles::ParticleEmitter::reloadConfig().

◆ sampleSkinSpawn()

◆ setWorldCollisionResolver()

void eve::particles::setWorldCollisionResolver ( WorldCollisionFn  fn)

在文件 ParticleEmitter.cpp320 行定义.

引用了 fn.

◆ spawnParticle()

◆ spawnParticleAt()

void eve::particles::spawnParticleAt ( ParticleEmitter::Config cfg,
ParticleEmitter::Sim sim,
float  x,
float  y 
)

◆ stepEmitterSim()

void eve::particles::stepEmitterSim ( ParticleEmitter::Config cfg,
ParticleEmitter::Sim sim,
float  dt 
)

在文件 ParticleEmitter.cpp389 行定义.

引用了 eve::particles::ParticleEmitter::Sim::active, eve::particles::ParticleEmitter::Sim::alive, b, eve::particles::ParticleEmitter::Config::boundsMaxX, eve::particles::ParticleEmitter::Config::boundsMaxY, eve::particles::ParticleEmitter::Config::boundsMinX, eve::particles::ParticleEmitter::Config::boundsMinY, eve::particles::ParticleEmitter::Config::bursts, eve::particles::ParticleEmitter::Config::collisionBoundsEnabled, eve::particles::ParticleEmitter::Config::collisionLifetimeLoss, eve::particles::ParticleEmitter::Config::collisionMode, eve::particles::ParticleEmitter::Config::collisionRadius, eve::particles::ParticleEmitter::Config::collisionRestitution, eve::particles::ParticleEmitter::Config::damping, eve::particles::ParticleEmitter::Config::emissionRate, eve::particles::ParticleEmitter::Sim::emitAccum, eve::particles::ParticleEmitter::Sim::emitterAge, eve::particles::ParticleEmitter::Config::emitterLife, eve::particles::ParticleCurve::empty(), f, fn, eve::particles::ParticleEmitter::Config::forceFields, eve::particles::ParticleEmitter::Config::frameRate, getWorldCollisionResolver(), eve::particles::ParticleEmitter::Config::gravityX, eve::particles::ParticleEmitter::Config::gravityY, eve::particles::ParticleEmitter::Sim::hasLastPos, eve::particles::ParticleEmitter::Config::inheritVelocity, eve::particles::ParticleEmitter::Sim::lastX, eve::particles::ParticleEmitter::Sim::lastY, eve::particles::ParticleEmitter::Config::limitVelocity, eve::particles::ParticleEmitter::Config::maxDeltaTime, eve::particles::ParticleEmitter::Config::noiseFrequency, eve::particles::ParticleEmitter::Config::noiseSpeed, eve::particles::ParticleEmitter::Config::noiseStrength, eve::particles::ParticleEmitter::Config::overflowMode, eve::particles::ParticleEmitter::Sim::overflowWarned, p, eve::particles::ParticleEmitter::Config::particleH, eve::particles::ParticleEmitter::Sim::particles, eve::particles::ParticleEmitter::Config::particleW, eve::particles::ParticleEmitter::Sim::paused, s, eve::particles::ParticleCurve::sample(), scale, eve::particles::ParticleEmitter::Config::simSpace, spawnParticle(), eve::particles::ParticleEmitter::Config::velocityCurve, eve::particles::Particle::vx, eve::particles::Particle::vy, eve::particles::ParticleEmitter::Config::worldCollision, eve::particles::ParticleEmitter::Config::x , 以及 eve::particles::ParticleEmitter::Config::y.

被这些函数引用 eve::particles::ParticleEmitter::start() , 以及 eve::particles::ParticleSimSystem::update().

◆ stepEmitterSimGpu()

bool eve::particles::stepEmitterSimGpu ( ParticleEmitter::Config cfg,
ParticleEmitter::Sim sim,
ParticleEmitter::GpuSim gpu,
float  dt 
)

GPU-accelerated integration step; false = unavailable, caller falls back to CPU.

GPU-accelerated variant of stepEmitterSim. The per-particle integration loop runs in a compute shader; spawning / death compaction / collision stay on the CPU. Returns false when the GPU path is unavailable — the caller then falls back to stepEmitterSim.

在文件 ParticleEmitter.cpp691 行定义.

引用了 eve::particles::ParticleEmitter::Sim::active, eve::particles::ParticleEmitter::Sim::alive, b, eve::particles::ParticleEmitter::Config::boundsMaxX, eve::particles::ParticleEmitter::Config::boundsMaxY, eve::particles::ParticleEmitter::Config::boundsMinX, eve::particles::ParticleEmitter::Config::boundsMinY, eve::particles::ParticleEmitter::GpuSim::buffer, eve::particles::ParticleEmitter::Config::bursts, eve::particles::ParticleEmitter::Config::collisionBoundsEnabled, eve::particles::ParticleEmitter::Config::collisionLifetimeLoss, eve::particles::ParticleEmitter::Config::collisionMode, eve::particles::ParticleEmitter::Config::collisionRadius, eve::particles::ParticleEmitter::Config::collisionRestitution, eve::particles::ParticleEmitter::Config::damping, eve::particles::ParticleEmitter::Config::emissionRate, eve::particles::ParticleEmitter::Sim::emitAccum, eve::particles::ParticleEmitter::Sim::emitterAge, eve::particles::ParticleEmitter::Config::emitterLife, eve::particles::ParticleEmitter::GpuSim::failed, fn, eve::particles::ParticleEmitter::Config::frameRate, getWorldCollisionResolver(), gpgpu, eve::particles::ParticleEmitter::Config::gravityX, eve::particles::ParticleEmitter::Config::gravityY, eve::particles::ParticleEmitter::Sim::hasLastPos, eve::particles::ParticleEmitter::Config::inheritVelocity, eve::particles::ParticleEmitter::GpuSim::initialized, eve::particles::ParticleEmitter::Sim::lastX, eve::particles::ParticleEmitter::Sim::lastY, eve::particles::ParticleEmitter::Config::limitVelocity, eve::particles::ParticleEmitter::Config::maxDeltaTime, eve::particles::ParticleEmitter::GpuSim::mirror, n, eve::particles::ParticleEmitter::Config::noiseFrequency, eve::particles::ParticleEmitter::Config::noiseSpeed, eve::particles::ParticleEmitter::Config::noiseStrength, eve::particles::ParticleEmitter::Config::overflowMode, eve::particles::ParticleEmitter::Sim::overflowWarned, p, eve::particles::ParticleEmitter::Config::particleH, eve::particles::ParticleEmitter::Sim::particles, eve::particles::ParticleEmitter::Config::particleW, eve::particles::ParticleEmitter::Sim::paused, scale, shader, eve::particles::ParticleEmitter::Config::simSpace, spawnParticle(), eve::particles::Particle::vx, eve::particles::Particle::vy, eve::particles::ParticleEmitter::Config::worldCollision, eve::particles::ParticleEmitter::Config::x , 以及 eve::particles::ParticleEmitter::Config::y.

◆ syncEmitterSources()

变量说明

◆ kParticleGpuKernel

const char* eve::particles::kParticleGpuKernel
inline

GLSL compute kernel for GPU-accelerated particle integration.

Particle layout: 16 floats per particle. [0] x, [1] y, [2] vx, [3] vy, [4] life, [5] lifetime, [6] size, [7] rot, [8] spin, [9] frame, [10] radial, [11] tangential, [12] ax0, [13] ay0, [14] noisePhase, [15] pad

Push constants (float[32]): [0] aliveCount, [1] dt, [2] emitterX, [3] emitterY, [4] gravityX, [5] gravityY, [6] damping, [7] limitVelocity, [8] noiseStrength, [9] noiseFrequency, [10] noiseSpeed, [11] time, [12] frameRate

Compile with glslc (Vulkan SDK) — the engine also compiles this at runtime via Gpgpu::newShader when the first GPU emitter initializes.

在文件 ParticleGpuKernel.h23 行定义.