aboutsummaryrefslogtreecommitdiff
path: root/advtrains/advtrains/trainlogic.lua
diff options
context:
space:
mode:
Diffstat (limited to 'advtrains/advtrains/trainlogic.lua')
-rw-r--r--advtrains/advtrains/trainlogic.lua13
1 files changed, 10 insertions, 3 deletions
diff --git a/advtrains/advtrains/trainlogic.lua b/advtrains/advtrains/trainlogic.lua
index c4df656..e3581ba 100644
--- a/advtrains/advtrains/trainlogic.lua
+++ b/advtrains/advtrains/trainlogic.lua
@@ -134,7 +134,7 @@ train step structure:
]]
function advtrains.train_step_a(id, train, dtime)
- atprint("--- runcnt ",advtrains.mainloop_runcnt,": index",train.index,"end_index", train.end_index,"| max_iot", train.max_index_on_track, "min_iot", train.min_index_on_track, "<> pe_min", train.path_extent_min,"pe_max", train.path_extent_max)
+ --atprint("--- runcnt ",advtrains.mainloop_runcnt,": index",train.index,"end_index", train.end_index,"| max_iot", train.max_index_on_track, "min_iot", train.min_index_on_track, "<> pe_min", train.path_extent_min,"pe_max", train.path_extent_max)
if train.min_index_on_track then
assert(math.floor(train.min_index_on_track)==train.min_index_on_track)
end
@@ -410,7 +410,10 @@ function advtrains.train_step_a(id, train, dtime)
else
for i=ibn, ifn do
if path[i] then
- advtrains.detector.stay_node(path[i], id)
+ local pts=minetest.pos_to_string(path[i])
+ if not (advtrains.detector.on_node[pts] and advtrains.detector.on_node[pts]~=id) then
+ advtrains.detector.stay_node(path[i], id)
+ end
end
end
@@ -420,8 +423,10 @@ function advtrains.train_step_a(id, train, dtime)
local pts=minetest.pos_to_string(path[i])
if advtrains.detector.on_node[pts] and advtrains.detector.on_node[pts]~=id then
--if another train has signed up for this position first, it won't be recognized in train_step_b. So do collision here.
+ atprint("Collision detected in enter_node callbacks (front) @",pts,"with",sid(advtrains.detector.on_node[pts]))
advtrains.collide_and_spawn_couple(id, path[i], advtrains.detector.on_node[pts], false)
end
+ atprint("enter_node (front) @index",i,"@",pts,"on_node",sid(advtrains.detector.on_node[pts]))
advtrains.detector.enter_node(path[i], id)
end
end
@@ -438,8 +443,10 @@ function advtrains.train_step_a(id, train, dtime)
local pts=minetest.pos_to_string(path[i])
if advtrains.detector.on_node[pts] and advtrains.detector.on_node[pts]~=id then
--if another train has signed up for this position first, it won't be recognized in train_step_b. So do collision here.
- advtrains.collide_and_spawn_couple(id, path[i], advtrains.detector.on_node[pts], false)
+ atprint("Collision detected in enter_node callbacks (back) @",pts,"on_node",sid(advtrains.detector.on_node[pts]))
+ advtrains.collide_and_spawn_couple(id, path[i], advtrains.detector.on_node[pts], true)
end
+ atprint("enter_node (back) @index",i,"@",pts,"with",sid(advtrains.detector.on_node[pts]))
advtrains.detector.enter_node(path[i], id)
end
end