forked from luanti-org/minetest_game
		
	Optimize leaf decay based on EnvRef:find_node_near
This commit is contained in:
		@@ -61,28 +61,16 @@ minetest.register_abm({
 | 
			
		||||
		end
 | 
			
		||||
		default.leafdecay_trunk_find_allow_accumulator =
 | 
			
		||||
				default.leafdecay_trunk_find_allow_accumulator - 1
 | 
			
		||||
		for dx = -d, d do if do_preserve then break end
 | 
			
		||||
		for dy = -d, d do if do_preserve then break end
 | 
			
		||||
		for dz = -d, d do if do_preserve then break end
 | 
			
		||||
			local p = {
 | 
			
		||||
				x = p0.x + dx,
 | 
			
		||||
				y = p0.y + dy,
 | 
			
		||||
				z = p0.z + dz,
 | 
			
		||||
			}
 | 
			
		||||
			local n = minetest.env:get_node(p)
 | 
			
		||||
			local reg = minetest.registered_nodes[n.name]
 | 
			
		||||
			-- Assume ignore is a trunk, to make the thing work at the border of the active area
 | 
			
		||||
			if n.name == "ignore" or (reg.groups.tree and reg.groups.tree ~= 0) then
 | 
			
		||||
				do_preserve = true
 | 
			
		||||
				if default.leafdecay_enable_cache then
 | 
			
		||||
					--print("caching trunk")
 | 
			
		||||
					-- Cache the trunk
 | 
			
		||||
					default.leafdecay_trunk_cache[p0_hash] = p
 | 
			
		||||
				end
 | 
			
		||||
		-- Assume ignore is a trunk, to make the thing work at the border of the active area
 | 
			
		||||
		local p1 = minetest.env:find_node_near(p0, d, {"ignore", "group:tree"})
 | 
			
		||||
		if p1 then
 | 
			
		||||
			do_preserve = true
 | 
			
		||||
			if default.leafdecay_enable_cache then
 | 
			
		||||
				--print("caching trunk")
 | 
			
		||||
				-- Cache the trunk
 | 
			
		||||
				default.leafdecay_trunk_cache[p0_hash] = p1
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		end
 | 
			
		||||
		end
 | 
			
		||||
		if not do_preserve then
 | 
			
		||||
			-- Drop stuff other than the node itself
 | 
			
		||||
			itemstacks = minetest.get_node_drops(n0.name)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user