summaryrefslogtreecommitdiff
path: root/boost_cart
diff options
context:
space:
mode:
Diffstat (limited to 'boost_cart')
-rw-r--r--boost_cart/cart_entity.lua20
-rw-r--r--boost_cart/functions.lua3
-rw-r--r--boost_cart/init.lua4
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")