diff options
Diffstat (limited to 'advtrains')
-rw-r--r-- | advtrains/helpers.lua | 8 | ||||
-rw-r--r-- | advtrains/wagons.lua | 8 |
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 |