import { PluginPureHook } from '@gedit/runtime-compiler'; import { SpriteGameObject, ResourceType } from '@gedit/runtime-render'; import { code } from '../common'; import { transform } from './transform'; import { attachCollisionBody } from './collision-body'; import { events } from './events'; export function sprite(ctx: PluginPureHook, component: SpriteGameObject): void { const { sprite: data } = component; if (!data.texture) { return; } const textureArr = data.texture.split('/'); const type = textureArr[0]; const printer = new code.ComponentPrinter(ctx, component); printer.isolate(() => { if (type === ResourceType.spritesheet) { const frame = textureArr.pop() || ''; printer.ctor(0, 0, textureArr.join('/'), frame); } else { printer.ctor(0, 0, data.texture); } printer.comments().local().flush(); attachCollisionBody(ctx, component); transform(ctx, component, true); events(ctx, component); }); }