logical inversion to stock functionality as requested. Now assumes if it has a target and does not hit anything Static by the time the ray terminates, then it must be the right target.

This commit is contained in:
Azaezel 2014-07-11 07:47:31 -05:00
parent ae55ad2b50
commit 9bed39b7d0

View file

@ -28,8 +28,7 @@
#include "T3D/gameBase/moveManager.h"
#include "console/engineAPI.h"
static U32 sAIPlayerLoSMask = TerrainObjectType | WaterObjectType |
ShapeBaseObjectType | StaticShapeObjectType;
static U32 sAIPlayerLoSMask = TerrainObjectType | StaticShapeObjectType | StaticObjectType;
IMPLEMENT_CO_NETOBJECT_V1(AIPlayer);
@ -643,19 +642,13 @@ bool AIPlayer::checkInLos(GameBase* target, bool _useMuzzle, bool _checkEnabled)
eyeMat.getColumn(3, &checkPoint );
}
bool hit = gServerContainer.castRay(checkPoint , target->getBoxCenter(), sAIPlayerLoSMask, &ri);
bool hit = !gServerContainer.castRay(checkPoint, target->getBoxCenter(), sAIPlayerLoSMask, &ri);
enableCollision();
for (S32 i = 0; i < mountCount; i++)
{
target->getMountedObject(i)->enableCollision();
}
if (hit)
{
if (target != dynamic_cast<GameBase*>(ri.object)) hit = false;
}
return hit;
}