Fixed is_in_viewcone always returning 0
Fixed is_visible causing a crash when a non-player entity was passed and also made it quite a bit more accurate (at28936)
This commit is contained in:
parent
62c096d7d3
commit
5a2e35c1bf
|
@ -835,22 +835,25 @@ static cell AMX_NATIVE_CALL is_visible(AMX *amx, cell *params)
|
||||||
CHECK_ENTITY(src);
|
CHECK_ENTITY(src);
|
||||||
CHECK_ENTITY(dest);
|
CHECK_ENTITY(dest);
|
||||||
|
|
||||||
edict_t *pEntity = MF_GetPlayerEdict(src);
|
edict_t *pEntity = INDEXENT2(src);
|
||||||
edict_t *pTarget = MF_GetPlayerEdict(dest);
|
edict_t *pTarget = INDEXENT2(dest);
|
||||||
|
|
||||||
Vector vLooker = ((pEntity->v.absmin + pEntity->v.absmax) * pEntity->v.fov) + pEntity->v.view_ofs;
|
if (pTarget->v.flags & FL_NOTARGET)
|
||||||
Vector vTarget = (pTarget->v.absmin + pTarget->v.absmax) * pTarget->v.fov;
|
return 0;
|
||||||
|
|
||||||
|
Vector vLooker = pEntity->v.origin + pEntity->v.view_ofs;
|
||||||
|
Vector vTarget = pTarget->v.origin + pTarget->v.view_ofs;
|
||||||
|
|
||||||
TraceResult tr;
|
TraceResult tr;
|
||||||
|
|
||||||
TRACE_LINE(vLooker, vTarget, FALSE, pEntity, &tr);
|
TRACE_LINE(vLooker, vTarget, FALSE, pEntity, &tr);
|
||||||
|
|
||||||
if (tr.flFraction != 1.0)
|
if (tr.fInOpen && tr.fInWater)
|
||||||
{
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
else if (tr.flFraction == 1.0)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//taken from dlls\combat.cpp
|
//taken from dlls\combat.cpp
|
||||||
|
@ -880,12 +883,11 @@ static cell AMX_NATIVE_CALL in_view_cone(AMX *amx, cell *params)
|
||||||
|
|
||||||
flDot = DotProduct(vec2LOS, gpGlobals->v_forward.Make2D());
|
flDot = DotProduct(vec2LOS, gpGlobals->v_forward.Make2D());
|
||||||
|
|
||||||
if (flDot > pEdictSrc->v.fov)
|
if (flDot >= cos(pEdictSrc->v.fov * (M_PI / 360)))
|
||||||
{
|
|
||||||
return 1;
|
return 1;
|
||||||
} else{
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static cell AMX_NATIVE_CALL traceresult(AMX *amx, cell *params)
|
static cell AMX_NATIVE_CALL traceresult(AMX *amx, cell *params)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user