mirror of
				https://github.com/Ukendio/jecs.git
				synced 2025-11-04 10:59:18 +00:00 
			
		
		
		
	Handle only make_alive behaviour in overload
	
		
			
	
		
	
	
		
	
		
			Some checks are pending
		
		
	
	
	
				
					
				
			
		
			Some checks are pending
		
		
	
	
This commit is contained in:
		
							parent
							
								
									6922019ed9
								
							
						
					
					
						commit
						01821f0a7b
					
				
					 2 changed files with 13 additions and 51 deletions
				
			
		
							
								
								
									
										29
									
								
								jecs.luau
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								jecs.luau
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -773,26 +773,23 @@ local function world_entity(world: ecs_world_t, entity: i53?): i53
 | 
			
		|||
		if r then
 | 
			
		||||
			local dense = r.dense
 | 
			
		||||
			if dense and r.dense ~= 0 then
 | 
			
		||||
				local any = dense_array[dense]
 | 
			
		||||
				if any ~= entity then
 | 
			
		||||
					if dense > alive_count then
 | 
			
		||||
						alive_count += 1
 | 
			
		||||
						entity_index.alive_count = alive_count
 | 
			
		||||
						local e_swap = dense_array[alive_count]
 | 
			
		||||
						local r_swap = sparse_array[alive_count]
 | 
			
		||||
						r_swap.dense = dense
 | 
			
		||||
						r.dense = alive_count
 | 
			
		||||
						dense_array[alive_count] = any
 | 
			
		||||
						dense_array[dense] = e_swap
 | 
			
		||||
					end
 | 
			
		||||
					return any
 | 
			
		||||
				if dense < alive_count then
 | 
			
		||||
					return entity
 | 
			
		||||
				end
 | 
			
		||||
				return entity
 | 
			
		||||
			else
 | 
			
		||||
				r.dense = index
 | 
			
		||||
				dense_array[index] = entity
 | 
			
		||||
				return entity
 | 
			
		||||
				dense = index
 | 
			
		||||
			end
 | 
			
		||||
 | 
			
		||||
			local e_swap = dense_array[dense]
 | 
			
		||||
			local r_swap = entity_index_try_get_any(entity_index, e_swap) :: ecs_record_t
 | 
			
		||||
			alive_count += 1
 | 
			
		||||
			entity_index.alive_count = alive_count
 | 
			
		||||
			r_swap.dense = dense
 | 
			
		||||
			r.dense = alive_count
 | 
			
		||||
			dense_array[dense] = e_swap
 | 
			
		||||
			dense_array[alive_count] = entity
 | 
			
		||||
			return entity
 | 
			
		||||
		else
 | 
			
		||||
			for i = max_id + 1, index do
 | 
			
		||||
				sparse_array[i]	= { dense = i } :: ecs_record_t
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -666,41 +666,6 @@ TEST("world:entity()", function()
 | 
			
		|||
		CHECK(world:contains(e))
 | 
			
		||||
		local e2 = world:entity()
 | 
			
		||||
		CHECK(world:contains(e2))
 | 
			
		||||
 | 
			
		||||
		-- world:print_entity_index()
 | 
			
		||||
		print("-----")
 | 
			
		||||
		local e3 = world:entity(375)
 | 
			
		||||
		world:entity(376)
 | 
			
		||||
		print("-----")
 | 
			
		||||
 | 
			
		||||
		print(e3)
 | 
			
		||||
		CHECK(e3 == 375)
 | 
			
		||||
		CHECK(world:contains(e3))
 | 
			
		||||
 | 
			
		||||
		world:delete(e3)
 | 
			
		||||
 | 
			
		||||
		print("-------call 1-------")
 | 
			
		||||
		local e3v1 = world:entity(375)
 | 
			
		||||
		CHECK(not world:contains(375))
 | 
			
		||||
		CHECK(jecs.ECS_GENERATION(e3v1) == 1)
 | 
			
		||||
		CHECK(jecs.ECS_ID(e3v1) == 375)
 | 
			
		||||
		CHECK(world:contains(e3v1))
 | 
			
		||||
		print("-------call 2-------")
 | 
			
		||||
		world:entity(382)
 | 
			
		||||
		world:delete(382)
 | 
			
		||||
		world:entity(376)
 | 
			
		||||
		world:delete(e3v1)
 | 
			
		||||
		print("--------------------")
 | 
			
		||||
		print("-------call 3-------")
 | 
			
		||||
		local e3v2 = world:entity(375)
 | 
			
		||||
		CHECK(jecs.ECS_GENERATION(e3v2) == 2)
 | 
			
		||||
		CHECK(jecs.ECS_ID(e3v2) == 375)
 | 
			
		||||
		CHECK(not world:contains(e3v1))
 | 
			
		||||
		CHECK(world:contains(e3v2))
 | 
			
		||||
		print("----------------------")
 | 
			
		||||
		print("-----call 4-------")
 | 
			
		||||
		CHECK(world:entity(375) == e3v2)
 | 
			
		||||
		print("------call 5")
 | 
			
		||||
	end
 | 
			
		||||
	local N = 2^8
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue