aboutsummaryrefslogtreecommitdiff
path: root/advtrains/advtrains/trainlogic.lua
diff options
context:
space:
mode:
authororwell96 <mono96.mml@gmail.com>2017-02-03 20:40:30 +0100
committerorwell96 <mono96.mml@gmail.com>2017-02-03 20:40:30 +0100
commit328d5054a105869c7e12df1941ceedb308ef1faa (patch)
tree736df563aa116e08e8ae4284b38a90852b25bd1e /advtrains/advtrains/trainlogic.lua
parenta72dda17be2175d5df8f1b7dd28e5ddeabe1494d (diff)
downloadadvtrains-328d5054a105869c7e12df1941ceedb308ef1faa.tar.gz
advtrains-328d5054a105869c7e12df1941ceedb308ef1faa.tar.bz2
advtrains-328d5054a105869c7e12df1941ceedb308ef1faa.zip
Revert change to node pos hashes, and rewrite trackdb to use individual coordinates
The precision of integers was not sufficient for saving pos node hashes in most cases, leading to strange bugs. This fixes broken ATC rails, broken LuaAutomation stuff and trackdb on Windows. Probably also fixes trains randomly stopping.
Diffstat (limited to 'advtrains/advtrains/trainlogic.lua')
-rw-r--r--advtrains/advtrains/trainlogic.lua8
1 files changed, 4 insertions, 4 deletions
diff --git a/advtrains/advtrains/trainlogic.lua b/advtrains/advtrains/trainlogic.lua
index f28528f..4b5edf5 100644
--- a/advtrains/advtrains/trainlogic.lua
+++ b/advtrains/advtrains/trainlogic.lua
@@ -258,8 +258,8 @@ function advtrains.train_step_a(id, train, dtime)
--- 5. extend path as necessary ---
- local gen_front=math.max(train.index, train.detector_old_index) + 2
- local gen_back=math.min(train.end_index, train.detector_old_end_index) - 2
+ local gen_front=math.max(train.index, train.detector_old_index) + 10
+ local gen_back=math.min(train.end_index, train.detector_old_end_index) - 10
local maxn=train.path_extent_max or 0
while maxn < gen_front do--pregenerate
@@ -404,7 +404,7 @@ function advtrains.train_step_b(id, train, dtime)
for x=-1,1 do
for z=-1,1 do
local testpos=vector.add(rcollpos, {x=x, y=0, z=z})
- local testpts=minetest.hash_node_position(testpos)
+ local testpts=minetest.pos_to_string(testpos)
if advtrains.detector.on_node[testpts] and advtrains.detector.on_node[testpts]~=id then
--collides
advtrains.spawn_couple_on_collide(id, testpos, advtrains.detector.on_node[testpts], train.movedir==-1)
@@ -755,7 +755,7 @@ function advtrains.invert_train(train_id)
end
function advtrains.get_train_at_pos(pos)
- local ph=minetest.hash_node_position(advtrains.round_vector_floor_y(pos))
+ local ph=minetest.pos_to_string(advtrains.round_vector_floor_y(pos))
return advtrains.detector.on_node[ph]
end