v0.8.0
Particle System
A flexible 2D particle emitter built on instanced rendering, with a complete C++ simulation backend and TypeScript API.
ParticleEmittercomponent — attach to any entity with 40+ configurable properties covering emission rate, burst, lifetime, shape, velocity, size, color, rotation, forces, sprite sheet animation, and blend mode- 4 emission shapes — Point, Circle, Rectangle, and Cone, each with dedicated editor gizmo visualization showing the emission area in the Scene View
- Size & color over lifetime — start/end ranges with 4 easing modes (Linear, EaseIn, EaseOut, EaseInOut) for smooth transitions
- Custom material support — assign per-emitter materials via
getMaterialDataWithUniforms, enabling custom shaders on particles - Scissor clip (UIMask) compatibility — particles respect
UIMaskclipping regions, making them usable inside scrollable UI panels - Simulation space — choose between World and Local space; local-space particles follow their parent entity’s transform
- Sprite sheet animation — configure columns, rows, FPS, and loop for animated particle textures
- Runtime API —
Particle.play(entity),Particle.stop(entity),Particle.reset(entity),Particle.getAliveCount(entity) - Editor inspector — properties organized into logical groups (Emission, Lifetime, Shape, Velocity, Size, Color, Rotation, Forces, Texture, Rendering) with constrained inputs
- Particle overlay gizmo — real-time shape visualization in Scene View with zoom-aware rendering, showing Point crosshairs, Circle outlines, Rectangle bounds, or Cone angle spreads
Bug Fixes
Editor
- Fix rotation gizmo instability for UIRect entities with non-center pivots — pin entity world position at drag start to prevent feedback loop between rotation and pivot-adjusted position recalculation
- Fix particles not rendering in editor Game View — add missing
Renderer.submitParticles()call inGameViewRenderer.renderAndCapture()
Build
- Fix playable (single-HTML) builds failing to preload audio — route audio preload through
RuntimeAssetProviderto read inline base64 data instead of usingfetch()onfile://protocol - Include
AudioPluginandParticlePluginin playable builds — addAudioSourceandParticleEmittertoCOMPONENT_TO_PLUGINmapping and always-include both plugins alongsideAnimationPlugin
Testing
- Add particle system unit tests covering emitter lifecycle, emission rate, burst mode, shape distribution, size/color interpolation, forces, and sprite sheet animation