diff options
author | orwell96 <mono96.mml@gmail.com> | 2017-02-03 20:40:30 +0100 |
---|---|---|
committer | orwell96 <mono96.mml@gmail.com> | 2017-02-03 20:40:30 +0100 |
commit | 328d5054a105869c7e12df1941ceedb308ef1faa (patch) | |
tree | 736df563aa116e08e8ae4284b38a90852b25bd1e /advtrains/advtrains/trainlogic.lua | |
parent | a72dda17be2175d5df8f1b7dd28e5ddeabe1494d (diff) | |
download | advtrains-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.lua | 8 |
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 |