diff options
Diffstat (limited to 'boost_cart')
-rw-r--r-- | boost_cart/cart_entity.lua | 20 | ||||
-rw-r--r-- | boost_cart/functions.lua | 3 | ||||
-rw-r--r-- | boost_cart/init.lua | 4 |
3 files changed, 25 insertions, 2 deletions
diff --git a/boost_cart/cart_entity.lua b/boost_cart/cart_entity.lua index 0105cf5..69f45fb 100644 --- a/boost_cart/cart_entity.lua +++ b/boost_cart/cart_entity.lua @@ -307,6 +307,7 @@ function cart_entity:on_step(dtime) self.object:set_acceleration(new_acc) self.old_pos = vector.round(pos) + local old_y_dir = self.old_dir.y if not vector.equals(dir, {x=0, y=0, z=0}) and not stop_wiggle then self.old_dir = dir end @@ -351,6 +352,25 @@ function cart_entity:on_step(dtime) anim = {x=2, y=2} end self.object:set_animation(anim, 1, 0) + if player and dir.y ~= old_y_dir then + local feet = {x=0, y=0, z=0} + local eye = {x=0, y=-4, z=0} + feet.y = boost_cart.old_player_model and 6 or -4.2 + if dir.y ~= 0 then + -- TODO: Find a better way to calculate this + if boost_cart.old_player_model then + feet.y = 6 + 1.5 + feet.z = -dir.y * 7 + else + feet.y = -4.2 + 3 + feet.z = -dir.y + end + eye.z = -dir.y * 10 + end + player:set_attach(self.object, "", feet, + {x=dir.y * -45, y=0, z=0}) + player:set_eye_offset(eye, eye) + end self.object:set_velocity(vel) if update.pos then diff --git a/boost_cart/functions.lua b/boost_cart/functions.lua index 9f5b7e9..ec04bb7 100644 --- a/boost_cart/functions.lua +++ b/boost_cart/functions.lua @@ -18,8 +18,7 @@ function boost_cart:manage_attachment(player, obj) default.player_attached[player_name] = status if status then - -- player_api came after the new model. Check for it. - local y_pos = player_api and -4.5 or 6 + local y_pos = self.old_player_model and 6 or -4.2 player:set_attach(obj, "", {x=0, y=y_pos, z=0}, {x=0, y=0, z=0}) player:set_eye_offset({x=0, y=-4, z=0},{x=0, y=-4, z=0}) else diff --git a/boost_cart/init.lua b/boost_cart/init.lua index 1b2afa2..755ab9d 100644 --- a/boost_cart/init.lua +++ b/boost_cart/init.lua @@ -25,6 +25,10 @@ if not default.player_attached then default.player_attached = {} end +minetest.after(1, function() + boost_cart.old_player_model = type(player_api) ~= "table" +end) + dofile(boost_cart.modpath.."/functions.lua") dofile(boost_cart.modpath.."/rails.lua") |