import { PluginPureHook } from '@gedit/runtime-compiler'; import { ParticlesGameObject } from '@gedit/runtime-render'; import { code } from '../common'; import { attachCollisionBody } from './collision-body'; import { events } from './events'; export function particles(ctx: PluginPureHook, component: ParticlesGameObject): void { const { particles: data, position } = component; if (!data.texture) { return; } const printer = new code.ComponentPrinter(ctx, component); printer.isolate(() => { printer.ctor(data.texture); // @ts-ignore printer.ref() .createEmitter({ alpha: data.alpha, scale: data.scale, speed: data.speed, blendMode: data.blendMode, frequency: data.frequency, lifespan: data.life, gravityX: data.gravity.x, gravityY: data.gravity.y, x: position.x, y: position.y, }); printer.comments().local().flush(); attachCollisionBody(ctx, component); events(ctx, component); }); }