Oh, I have some code for you. One minute. had to plug in my second harddrive to get it, lol.
function Player::canSeeObject(%this, %object)
{
%ev = %this.getEyeVector();
%pos = %this.getPosition();
if(!isObject(%object))
return 0;
%ep = isFunction(%object.getClassname(), getEyePoint) ? %object.getEyePoint() : %object.getPosition();
%vd = vectorDist(%pos, %ep);
if(%vd > 64)
return 0;
%cast = containerRaycast(%pos, %ep, $TypeMasks::FxBrickObjectType);
if(isObject(%cast))
return 0;
%adjp = vectorSub(%pos, %ep);
%angle = mATan(getWord(%adjp,1), getWord(%adjp,0));
%ea = mATan(getWord(%ev,1), getWord(%ev,0));
%cansee = %ea - %angle;
%canSee = mAbs(%canSee);
if(%cansee > 3.92689 || %cansee < 2.35629)
return 0;
return 1;
}
Then, for the loop:
function Player::CanSeeLoop(%this)
{
if(%this.canSeeObject($HorrorObject))
{
whatever();
}
%this.schedule(100,canSeeLoop);
}