|
|
@ -73,31 +73,43 @@ local function get_blockpos(pos) |
|
|
|
z = math.floor(pos.z / 16)} |
|
|
|
end |
|
|
|
|
|
|
|
local active_blocks = {} -- These only contain active blocks near players (i.e., not forceloaded ones) |
|
|
|
local move_entities_globalstep_part1 |
|
|
|
local is_active |
|
|
|
|
|
|
|
local move_entities_globalstep_part1 = function(dtime) |
|
|
|
local active_block_range = tonumber(minetest.settings:get("active_block_range")) or 2 |
|
|
|
local new_active_blocks = {} |
|
|
|
for _, player in ipairs(minetest.get_connected_players()) do |
|
|
|
local blockpos = get_blockpos(player:get_pos()) |
|
|
|
local minp = vector.subtract(blockpos, active_block_range) |
|
|
|
local maxp = vector.add(blockpos, active_block_range) |
|
|
|
if pipeworks.use_real_entities then |
|
|
|
local active_blocks = {} -- These only contain active blocks near players (i.e., not forceloaded ones) |
|
|
|
|
|
|
|
for x = minp.x, maxp.x do |
|
|
|
for y = minp.y, maxp.y do |
|
|
|
for z = minp.z, maxp.z do |
|
|
|
local pos = {x = x, y = y, z = z} |
|
|
|
new_active_blocks[minetest.hash_node_position(pos)] = pos |
|
|
|
end |
|
|
|
end |
|
|
|
move_entities_globalstep_part1 = function(dtime) |
|
|
|
local active_block_range = tonumber(minetest.settings:get("active_block_range")) or 2 |
|
|
|
local new_active_blocks = {} |
|
|
|
for _, player in ipairs(minetest.get_connected_players()) do |
|
|
|
local blockpos = get_blockpos(player:get_pos()) |
|
|
|
local minp = vector.subtract(blockpos, active_block_range) |
|
|
|
local maxp = vector.add(blockpos, active_block_range) |
|
|
|
|
|
|
|
for x = minp.x, maxp.x do |
|
|
|
for y = minp.y, maxp.y do |
|
|
|
for z = minp.z, maxp.z do |
|
|
|
local pos = {x = x, y = y, z = z} |
|
|
|
new_active_blocks[minetest.hash_node_position(pos)] = pos |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
active_blocks = new_active_blocks |
|
|
|
-- todo: callbacks on block load/unload |
|
|
|
end |
|
|
|
active_blocks = new_active_blocks |
|
|
|
-- todo: callbacks on block load/unload |
|
|
|
end |
|
|
|
|
|
|
|
local function is_active(pos) |
|
|
|
return active_blocks[minetest.hash_node_position(get_blockpos(pos))] ~= nil |
|
|
|
is_active = function(pos) |
|
|
|
return active_blocks[minetest.hash_node_position(get_blockpos(pos))] ~= nil |
|
|
|
end |
|
|
|
else |
|
|
|
move_entities_globalstep_part1 = function() |
|
|
|
end |
|
|
|
|
|
|
|
is_active = function() |
|
|
|
return false |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
local entitydef_default = { |
|
|
|