Waaaaagh
I lost all my rep and my title being a jerk
- Reaction score
- 70
What is the best (most accurate) way of determining if a unit is facing away from another unit?
(Facing of <unit one>) Equal to (0.00 - (Angle from (Position of <unit one>) to (Position of <unit two>)))
function InFront takes real face, real angle returns boolean
local real facemin
local real facemax
local boolean min=false
local boolean max=false
if(face<70)then
set facemin=360-(70-face)
set facemax=face+70
set min=true
elseif(face>300)then
set facemax=0+(70-face)
set facemin=face-70
set max=true
else
set facemin=face-70
set facemax=face+70
endif
set face=face
set angle=angle
return (min and (angle>facemin or angle<facemax)) or (max and (angle<facemax or angle>facemin)) or (angle>facemin and angle<facemax)
endfunction
function IsInBack takes unit unit1,unit unit2,real angle returns boolean
local real a = 2 * ModuloReal(bj_RADTODEG * Atan2(GetUnitY(unit2) - GetUnitY(unit1),GetUnitX(unit2) - GetUnitX(unit1)) - GetUnitFacing(unit2), 360.0)
return a <= angle or 720.0 - a <= angle
endfunction
function DiffBetweenAngles takes real angle1, real angle2 returns real
local real diff = ModuloReal(angle2-angle1,360)
if diff>180 then
return 360-diff
endif
return diff
endfunction