mirror of
				https://github.com/Ukendio/jecs.git
				synced 2025-10-31 09:09:18 +00:00 
			
		
		
		
	Set signal with hook
This commit is contained in:
		
							parent
							
								
									42401f93ae
								
							
						
					
					
						commit
						ef0f69ac6d
					
				
					 1 changed files with 13 additions and 14 deletions
				
			
		|  | @ -104,13 +104,12 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl | ||||||
| 		if not listeners then | 		if not listeners then | ||||||
| 			listeners = {} | 			listeners = {} | ||||||
| 			signals.added[component] = listeners | 			signals.added[component] = listeners | ||||||
| 			local idr = jecs.id_record_ensure(world, component) | 			local function on_add(entity: number, id: number, value: any) | ||||||
| 			idr.hooks.on_add = function(entity) | 				for _, listener in listeners :: any do | ||||||
| 				for _, listener in listeners do | 					listener(entity, id, value) | ||||||
| 					listener(entity, component) |  | ||||||
| 				end |  | ||||||
| 				end | 				end | ||||||
| 			end | 			end | ||||||
|  | 			world:set(component, jecs.OnAdd, on_add)		end | ||||||
| 		table.insert(listeners, fn) | 		table.insert(listeners, fn) | ||||||
| 	end | 	end | ||||||
| 
 | 
 | ||||||
|  | @ -119,12 +118,12 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl | ||||||
| 		if not listeners then | 		if not listeners then | ||||||
| 			listeners = {} | 			listeners = {} | ||||||
| 			signals.emplaced[component] = listeners | 			signals.emplaced[component] = listeners | ||||||
| 			local idr = jecs.id_record_ensure(world, component) | 			local function on_change(entity: number, id: number, value: any) | ||||||
| 			idr.hooks.on_change = function(entity, value) | 				for _, listener in listeners :: any do | ||||||
| 				for _, listener in listeners do | 					listener(entity, id, value) | ||||||
| 					listener(entity, component, value) |  | ||||||
| 				end | 				end | ||||||
| 			end | 			end | ||||||
|  | 			world:set(component, jecs.OnChange, on_change) | ||||||
| 		end | 		end | ||||||
| 		table.insert(listeners, fn) | 		table.insert(listeners, fn) | ||||||
| 	end | 	end | ||||||
|  | @ -134,12 +133,12 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl | ||||||
| 		if not listeners then | 		if not listeners then | ||||||
| 			listeners = {} | 			listeners = {} | ||||||
| 			signals.removed[component] = listeners | 			signals.removed[component] = listeners | ||||||
| 			local idr = jecs.id_record_ensure(world, component) | 			local function on_remove(entity: number, id: number, value: any) | ||||||
| 			idr.hooks.on_remove = function(entity) | 				for _, listener in listeners :: any do | ||||||
| 				for _, listener in listeners do | 					listener(entity, id, value) | ||||||
| 					listener(entity, component) |  | ||||||
| 				end | 				end | ||||||
| 			end | 			end | ||||||
|  | 			world:set(component, jecs.OnRemove, on_remove) | ||||||
| 		end | 		end | ||||||
| 		table.insert(listeners, fn) | 		table.insert(listeners, fn) | ||||||
| 	end | 	end | ||||||
|  | @ -150,7 +149,7 @@ local function observers_add(world: jecs.World & { [string]: any }): PatchedWorl | ||||||
| 
 | 
 | ||||||
| 	world.monitor = monitors_new | 	world.monitor = monitors_new | ||||||
| 
 | 
 | ||||||
| 	return world | 	return world :: PatchedWorld | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| return observers_add | return observers_add | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue