improved vehicle attach

This commit is contained in:
Alexsandro Percy 2024-02-16 17:42:13 -03:00
parent b51d1bdcae
commit 683a17ec18
1 changed files with 31 additions and 22 deletions

View File

@ -20,23 +20,36 @@ local function attach_entity(self, target_obj, dest_pos, relative_pos, entity_na
end
end
function airutils.dettach_entity(self)
if not self._vehicle_custom_data then return end
if not self._vehicle_custom_data.simple_external_attach_entity then return end
function airutils.get_attached_entity(self)
if not self._vehicle_custom_data then return nil, nil end
if not self._vehicle_custom_data.simple_external_attach_entity then return nil, nil end
local entity_name = self._vehicle_custom_data.simple_external_attach_entity
local relative_pos = self._vehicle_custom_data.simple_external_attach_pos
local inv_id = self._vehicle_custom_data.simple_external_attach_invid
local pos = self.object:get_pos()
local velocity = self.object:get_velocity()
local nearby_objects = minetest.get_objects_inside_radius(pos, 32)
for i,obj in ipairs(nearby_objects) do
local ent = obj:get_luaentity()
if ent then
if ent._inv_id then
if ent._inv_id == inv_id then
return ent, obj
end
end
end
end
return nil, nil
end
function airutils.dettach_entity(self)
local ent, obj = airutils.get_attached_entity(self)
if ent and obj then
local relative_pos = self._vehicle_custom_data.simple_external_attach_pos
local pos = self.object:get_pos()
local rotation = self.object:get_rotation()
local direction = rotation.y
local velocity = self.object:get_velocity()
local move = -1*relative_pos.z/10
pos.x = pos.x + move * math.sin(direction)
@ -50,10 +63,6 @@ function airutils.dettach_entity(self)
self._vehicle_custom_data.simple_external_attach_entity = nil
self._vehicle_custom_data.simple_external_attach_pos = nil
self._vehicle_custom_data.simple_external_attach_invid = nil
break
end
end
end
end
end