aboutsummaryrefslogtreecommitdiff
path: root/advtrains
diff options
context:
space:
mode:
Diffstat (limited to 'advtrains')
-rw-r--r--advtrains/helpers.lua8
-rw-r--r--advtrains/wagons.lua8
2 files changed, 13 insertions, 3 deletions
diff --git a/advtrains/helpers.lua b/advtrains/helpers.lua
index db5023b..33950ec 100644
--- a/advtrains/helpers.lua
+++ b/advtrains/helpers.lua
@@ -516,3 +516,11 @@ function advtrains.after_place_signal(pos, placer, itemstack, pointed_thing)
node.param2 = n[2]
advtrains.ndb.swap_node(pos, node)
end
+
+function advtrains.yaw_equals(yaw1, yaw2)
+ if yaw1 ~= nil and yaw2 ~= nil then
+ return math.abs(yaw2 - yaw1) < 1.0e-9
+ else
+ return yaw1 == yaw2
+ end
+end
diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua
index 3ecd60d..02e0709 100644
--- a/advtrains/wagons.lua
+++ b/advtrains/wagons.lua
@@ -562,18 +562,20 @@ function wagon:on_step(dtime)
end
end
+ local wagon_yaw_changed = not advtrains.yaw_equals(self.old_yaw, oyaw)
+
if not self.old_velocity_vector
or not vector.equals(velocityvec, self.old_velocity_vector)
or not self.old_acceleration_vector
or not vector.equals(accelerationvec, self.old_acceleration_vector)
- or self.old_yaw~=oyaw
+ or wagon_yaw_changed
or updatepct_timer_elapsed then--only send update packet if something changed
self.object:set_pos(pos)
self.object:set_velocity(velocityvec)
self.object:set_acceleration(accelerationvec)
- if #self.seats > 0 and self.old_yaw ~= oyaw then
+ if #self.seats > 0 and wagon_yaw_changed then
if not self.player_yaw then
self.player_yaw = {}
end
@@ -592,7 +594,7 @@ function wagon:on_step(dtime)
end
end
self.turning = true
- elseif self.old_yaw == oyaw then
+ elseif not wagon_yaw_changed then
-- train is no longer turning
self.turning = false
end