Files
DoomRTX/neo/doom3/game/ai/NAVCallback_FindAreaOutOfRange.cpp
T
2026-05-22 22:26:19 -07:00

50 lines
1.0 KiB
C++

// Copyright (C) 2007 Id Software, Inc.
//
#pragma hdrstop
#include "precompiled.h"
#include "NAV_local.h"
#include "../Game_local.h" // for print and error
#include "NAVCallback_FindAreaOutOfRange.h"
/*
============
idNAVCallback_FindAreaOutOfRange::idNAVCallback_FindAreaOutOfRange
============
*/
idNAVCallback_FindAreaOutOfRange::idNAVCallback_FindAreaOutOfRange( const idVec3& targetPos, float maxDist )
{
this->targetPos = targetPos;
this->maxDistSqr = maxDist * maxDist;
}
/*
============
idNAVCallback_FindAreaOutOfRange::AreaIsGoal
============
*/
bool idNAVCallback_FindAreaOutOfRange::AreaIsGoal( const idNAV* aas, int areaNum )
{
const idVec3& areaCenter = aas->AreaCenter( areaNum );
if( maxDistSqr > 0.0f )
{
float dist = ( targetPos.ToVec2() - areaCenter.ToVec2() ).LengthSqr();
if( dist < maxDistSqr )
{
return false;
}
}
trace_t trace;
gameLocal.clip.TracePoint( trace, targetPos, areaCenter + idVec3( 0.0f, 0.0f, 1.0f ), MASK_OPAQUE, NULL );
if( trace.fraction < 1.0f )
{
return false;
}
return true;
}