From 7ea41df5d9e269a35ffcd64b90c7a21ec8012a22 Mon Sep 17 00:00:00 2001 From: orwell96 Date: Thu, 23 Nov 2017 19:59:21 +0100 Subject: Preserve the player's looking direction Contributed by @gpcf --- advtrains/wagons.lua | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'advtrains/wagons.lua') diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua index 8e3dd8d..3892813 100644 --- a/advtrains/wagons.lua +++ b/advtrains/wagons.lua @@ -477,6 +477,28 @@ function wagon:on_step(dtime) self.object:setpos(actual_pos) self.object:setvelocity(velocityvec) self.object:setacceleration(accelerationvec) + + if #self.seats > 0 and self.old_yaw ~= yaw then + if not self.player_yaw then + self.player_yaw = {} + end + for _,name in pairs(self.seatp) do + local p = minetest.get_player_by_name(name) + if p then + if not self.turning then + -- save player looking direction offset + self.player_yaw[name] = p:get_look_horizontal()-self.old_yaw + end + -- set player looking direction using calculated offset + p:set_look_horizontal(self.player_yaw[name]+yaw) + end + end + self.turning = true + elseif self.old_yaw == yaw then + -- train is no longer turning + self.turning = false + end + self.object:setyaw(yaw) self.updatepct_timer=2 if self.update_animation then -- cgit v1.2.3