forked from mtcontrib/boost_cart
Is it really stuck-secure?
This commit is contained in:
parent
dc20f048b1
commit
a38aa7d83b
28
init.lua
28
init.lua
@ -98,7 +98,7 @@ function boost_cart.cart:on_punch(puncher, time_from_last_punch, tool_capabiliti
|
|||||||
|
|
||||||
local f = 3 * (time_from_last_punch / tool_capabilities.full_punch_interval)
|
local f = 3 * (time_from_last_punch / tool_capabilities.full_punch_interval)
|
||||||
vel.x = dir.x * f
|
vel.x = dir.x * f
|
||||||
vel.z = dir.y * f
|
vel.y = dir.y * f
|
||||||
vel.z = dir.z * f
|
vel.z = dir.z * f
|
||||||
self.velocity = vel
|
self.velocity = vel
|
||||||
self.old_pos = nil
|
self.old_pos = nil
|
||||||
@ -126,16 +126,24 @@ function boost_cart.cart:on_step(dtime)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
local expected_pos = vector.add(self.old_pos, self.old_dir)
|
local expected_pos = vector.add(self.old_pos, self.old_dir)
|
||||||
if not vector.equals(flo_pos, expected_pos) then
|
local diff = vector.subtract(pos, expected_pos)
|
||||||
|
diff = {
|
||||||
|
x = math.abs(diff.x),
|
||||||
|
y = math.abs(diff.y),
|
||||||
|
z = math.abs(diff.z)
|
||||||
|
}
|
||||||
|
|
||||||
|
if diff.x > 1.2 or diff.y > 1.2 or diff.z > 1.2 then
|
||||||
pos = vector.new(expected_pos)
|
pos = vector.new(expected_pos)
|
||||||
self.punch = true
|
self.punch = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local ro_vel = vector.round(vel)
|
||||||
local cart_dir = {
|
local cart_dir = {
|
||||||
x = boost_cart:get_sign(vel.x),
|
x = boost_cart:get_sign(ro_vel.x),
|
||||||
y = boost_cart:get_sign(vel.y),
|
y = boost_cart:get_sign(ro_vel.y),
|
||||||
z = boost_cart:get_sign(vel.z)
|
z = boost_cart:get_sign(ro_vel.z)
|
||||||
}
|
}
|
||||||
local dir = boost_cart:get_rail_direction(pos, cart_dir)
|
local dir = boost_cart:get_rail_direction(pos, cart_dir)
|
||||||
if vector.equals(dir, {x=0, y=0, z=0}) then
|
if vector.equals(dir, {x=0, y=0, z=0}) then
|
||||||
@ -160,9 +168,6 @@ function boost_cart.cart:on_step(dtime)
|
|||||||
-- Up, down?
|
-- Up, down?
|
||||||
if dir.y ~= self.old_dir.y then
|
if dir.y ~= self.old_dir.y then
|
||||||
vel.y = dir.y * (math.abs(vel.x) + math.abs(vel.z))
|
vel.y = dir.y * (math.abs(vel.x) + math.abs(vel.z))
|
||||||
--if dir.y == 1 then
|
|
||||||
-- pos.y = pos.y + 1.5
|
|
||||||
--end
|
|
||||||
pos = vector.round(pos)
|
pos = vector.round(pos)
|
||||||
self.punch = true
|
self.punch = true
|
||||||
end
|
end
|
||||||
@ -175,13 +180,6 @@ function boost_cart.cart:on_step(dtime)
|
|||||||
z = dir.z * acc
|
z = dir.z * acc
|
||||||
}
|
}
|
||||||
|
|
||||||
--for _,v in ipairs({"x","y","z"}) do
|
|
||||||
-- if math.abs(vel[v]) < math.abs(new_acc[v] * 1.3) then
|
|
||||||
-- vel[v] = 0
|
|
||||||
-- new_acc[v] = 0
|
|
||||||
-- self.punch = true
|
|
||||||
-- end
|
|
||||||
--end
|
|
||||||
self.object:setacceleration(new_acc)
|
self.object:setacceleration(new_acc)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user