Fix crashes with mobs below or above due division by zero
* removes a division by zero issue which returns nan for yaw in some places
This commit is contained in:
parent
8bdf40b849
commit
95f3980694
@ -638,7 +638,14 @@ end
|
|||||||
function mobs:face_pos(self,pos)
|
function mobs:face_pos(self,pos)
|
||||||
local s = self.object:getpos()
|
local s = self.object:getpos()
|
||||||
local vec = {x=pos.x-s.x, y=pos.y-s.y, z=pos.z-s.z}
|
local vec = {x=pos.x-s.x, y=pos.y-s.y, z=pos.z-s.z}
|
||||||
local yaw = math.atan(vec.z/vec.x)+math.pi/2
|
local yaw = 0
|
||||||
|
if vec.x ~= 0 then
|
||||||
|
yaw=math.atan(vec.z/vec.x)+math.pi/2
|
||||||
|
else
|
||||||
|
if vec.z>0 then
|
||||||
|
yaw=math.pi
|
||||||
|
end
|
||||||
|
end
|
||||||
if self.drawtype == "side" then
|
if self.drawtype == "side" then
|
||||||
yaw = yaw+(math.pi/2)
|
yaw = yaw+(math.pi/2)
|
||||||
end
|
end
|
||||||
|
@ -144,7 +144,14 @@ function mobs.on_step(self,dtime)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
|
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
|
||||||
local yaw = math.atan(vec.z/vec.x)+math.pi/2
|
local yaw = 0
|
||||||
|
if vec.x ~= 0 then
|
||||||
|
yaw=math.atan(vec.z/vec.x)+math.pi/2
|
||||||
|
else
|
||||||
|
if vec.z>0 then
|
||||||
|
yaw=math.pi
|
||||||
|
end
|
||||||
|
end
|
||||||
if self.drawtype == "side" then
|
if self.drawtype == "side" then
|
||||||
yaw = yaw+(math.pi/2)
|
yaw = yaw+(math.pi/2)
|
||||||
end
|
end
|
||||||
@ -223,7 +230,13 @@ function mobs.on_step(self,dtime)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
|
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
|
||||||
local yaw = math.atan(vec.z/vec.x)+math.pi/2
|
if vec.x ~= 0 then
|
||||||
|
yaw=math.atan(vec.z/vec.x)+math.pi/2
|
||||||
|
else
|
||||||
|
if vec.z>0 then
|
||||||
|
yaw=math.pi
|
||||||
|
end
|
||||||
|
end
|
||||||
if self.drawtype == "side" then
|
if self.drawtype == "side" then
|
||||||
yaw = yaw+(math.pi/2)
|
yaw = yaw+(math.pi/2)
|
||||||
end
|
end
|
||||||
@ -345,7 +358,13 @@ function mobs.on_step(self,dtime)
|
|||||||
self.v_start = false
|
self.v_start = false
|
||||||
else
|
else
|
||||||
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
|
local vec = {x=p.x-s.x, y=p.y-s.y, z=p.z-s.z}
|
||||||
local yaw = math.atan(vec.z/vec.x)+math.pi/2
|
if vec.x ~= 0 then
|
||||||
|
yaw=math.atan(vec.z/vec.x)+math.pi/2
|
||||||
|
else
|
||||||
|
if vec.z>0 then
|
||||||
|
yaw=math.pi
|
||||||
|
end
|
||||||
|
end
|
||||||
if self.drawtype == "side" then
|
if self.drawtype == "side" then
|
||||||
yaw = yaw+(math.pi/2)
|
yaw = yaw+(math.pi/2)
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user