From 98ba5cc9b8579c89f964cde1bcd882186e9247a9 Mon Sep 17 00:00:00 2001 From: ne_mene Date: Mon, 30 Mar 2026 01:00:01 +0200 Subject: speck oneshot vfx entity --- src/objs/specks.lua | 19 +++++++++++++++++++ src/scenes/game.lua | 1 + 2 files changed, 20 insertions(+) (limited to 'src') diff --git a/src/objs/specks.lua b/src/objs/specks.lua index 3ea7e43..dd14a59 100644 --- a/src/objs/specks.lua +++ b/src/objs/specks.lua @@ -279,3 +279,22 @@ function load_speck_sys(filename) end return sys end + +function new_speck_entity(x, y, filepath) + local ent = new_entity() + add_comp(ent, "Position", x, y) + add_comp(ent, "Speck_System") + ent.speck_sys = load_speck_sys(filepath) + ent.speck_sys.oneshot = true + + add_comp(ent, "Speck_Entity") +end + +register_comp("Speck_Entity", TAGCOMP) + +function speck_entity_system(ent, dt) + local sys = ent.speck_sys + if not sys.emitting and sys:is_empty() then + queue_entity_kill(ent) + end +end diff --git a/src/scenes/game.lua b/src/scenes/game.lua index f64309b..641f386 100644 --- a/src/scenes/game.lua +++ b/src/scenes/game.lua @@ -8,6 +8,7 @@ function start_game_scene() event_bind(scn.on_update, "Sprite", sprite_anim_sys) event_bind(scn.on_update, "Sprite", sprite_anim_sys) event_bind(scn.on_update, "Speck_System", speck_update_sys) + event_bind(scn.on_update, "Speck_Entity", speck_entity_system) event_bind(scn.on_draw, "Sprite", sprite_draw_sys) event_bind(scn.on_draw, "Tilemap", tilemap_draw_sys) -- cgit v1.3-2-g0d8e