类 | |
| 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) → ParticleSimSystem → ParticleRenderSystem. 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.h 第 475 行定义.
函数说明
◆ 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.cpp 第 175 行定义.
引用了 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.cpp 第 531 行定义.
引用了 applyConfigDocument() , 以及 error.
被这些函数引用 eve::particles::ParticleEmitter::applyConfig() , 以及 loadConfigFile().
◆ getWorldCollisionResolver()
| WorldCollisionFn eve::particles::getWorldCollisionResolver | ( | ) |
在文件 ParticleEmitter.cpp 第 322 行定义.
被这些函数引用 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.cpp 第 546 行定义.
引用了 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.cpp 第 37 行定义.
引用了 impl , 以及 eve::cap::query().
◆ reloadConfigFile()
| bool eve::particles::reloadConfigFile | ( | ParticleEmitter * | emitter, |
| std::string * | error | ||
| ) |
Re-read Resource.path if set; updates modtime.
在文件 ParticleConfig.cpp 第 579 行定义.
引用了 error , 以及 loadConfigFile().
被这些函数引用 eve::particles::ParticleConfigSystem::poll() , 以及 eve::particles::ParticleEmitter::reloadConfig().
◆ sampleSkinSpawn()
| bool eve::particles::sampleSkinSpawn | ( | ParticleEmitter::SkinSource & | skinSrc, |
| ParticleEmitter::Sim & | sim, | ||
| float & | outX, | ||
| float & | outY | ||
| ) |
在文件 ParticleEmitter.cpp 第 351 行定义.
引用了 eve::particles::ParticleEmitter::SkinSource::candidates, eve::animation::AnimSkin::getSkinnedPositionX(), eve::animation::AnimSkin::getSkinnedPositionY(), eve::animation::AnimSkin::getSkinnedPositionZ(), eve::particles::ParticleEmitter::SkinSource::plane, eve::particles::ParticleEmitter::Sim::rng, eve::particles::ParticleEmitter::SkinSource::scale , 以及 eve::particles::ParticleEmitter::SkinSource::skin.
被这些函数引用 eve::particles::ParticleEmitter::emitFromSkin() , 以及 spawnParticle().
◆ setWorldCollisionResolver()
| void eve::particles::setWorldCollisionResolver | ( | WorldCollisionFn | fn | ) |
在文件 ParticleEmitter.cpp 第 320 行定义.
引用了 fn.
◆ spawnParticle()
| void eve::particles::spawnParticle | ( | ParticleEmitter::Config & | cfg, |
| ParticleEmitter::Sim & | sim | ||
| ) |
在文件 ParticleEmitter.cpp 第 336 行定义.
引用了 eve::particles::ParticleEmitter::Config::entity, sampleSkinSpawn(), spawnParticleAt(), eve::particles::ParticleEmitter::Config::x , 以及 eve::particles::ParticleEmitter::Config::y.
被这些函数引用 eve::particles::ParticleEmitter::emit(), stepEmitterSim() , 以及 stepEmitterSimGpu().
◆ 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.cpp 第 389 行定义.
引用了 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.cpp 第 691 行定义.
引用了 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()
| void eve::particles::syncEmitterSources | ( | ParticleEmitter::Config & | cfg, |
| ParticleEmitter::Sim & | , | ||
| ParticleEmitter::Attach & | attach, | ||
| ParticleEmitter::SkinSource & | skinSrc | ||
| ) |
Sync bone attach + refresh skin cache; call before stepEmitterSim when using Attach/SkinSource.
在文件 ParticleEmitter.cpp 第 362 行定义.
引用了 eve::particles::ParticleEmitter::Attach::AnimPose, eve::particles::ParticleEmitter::Attach::enabled, eve::particles::ParticleEmitter::SkinSource::enabled, eve::particles::ParticleEmitter::Attach::Ik2D, eve::particles::ParticleEmitter::Attach::Ik3D, eve::particles::ParticleEmitter::Attach::kind, eve::particles::ParticleEmitter::Attach::None, eve::particles::ParticleEmitter::SkinSource::pose, eve::particles::ParticleEmitter::SkinSource::skin , 以及 eve::particles::ParticleEmitter::Attach::Spine.
被这些函数引用 eve::particles::ParticleEmitter::syncAttach() , 以及 eve::particles::ParticleSimSystem::update().
变量说明
◆ 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.h 第 23 行定义.