From 8822be58a965c6ce062b441b3ed1096dc0a7c22a Mon Sep 17 00:00:00 2001 From: Ukendio Date: Tue, 22 Apr 2025 04:52:21 +0200 Subject: [PATCH] Add assertion against existing idr --- addons/observers.luau | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/observers.luau b/addons/observers.luau index be27d89..a7a8191 100644 --- a/addons/observers.luau +++ b/addons/observers.luau @@ -101,6 +101,8 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl world.added = function(_, component, fn) local listeners = signals.added[component] + local component_index = world.component_index :: jecs.ComponentIndex + assert(component_index[component] == nil, "You cannot use hooks on components you intend to use this signal with") if not listeners then listeners = {} signals.added[component] = listeners @@ -115,6 +117,8 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl world.changed = function(_, component, fn) local listeners = signals.emplaced[component] + local component_index = world.component_index :: jecs.ComponentIndex + assert(component_index[component] == nil, "You cannot use hooks on components you intend to use this signal with") if not listeners then listeners = {} signals.emplaced[component] = listeners @@ -130,6 +134,8 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl world.removed = function(_, component, fn) local listeners = signals.removed[component] + local component_index = world.component_index :: jecs.ComponentIndex + assert(component_index[component] == nil, "You cannot use hooks on components you intend to use this signal with") if not listeners then listeners = {} signals.removed[component] = listeners