- Adjust VisibleToPlayerClass to accept multiple classes as well as work with inheritance.

SVN r3291 (trunk)
This commit is contained in:
Braden Obrzut 2011-09-10 04:24:40 +00:00
commit faa122ede3
4 changed files with 22 additions and 9 deletions

View file

@ -892,9 +892,21 @@ bool AActor::IsVisibleToPlayer() const
const player_t* pPlayer = players[consoleplayer].camera->player;
if ( ( VisibleToPlayerClass != NAME_None )
&& pPlayer && pPlayer->mo && ( VisibleToPlayerClass != pPlayer->mo->GetClass()->TypeName ) )
return false;
if(pPlayer && pPlayer->mo && GetClass()->ActorInfo->VisibleToPlayerClass.Size() > 0)
{
bool visible = false;
for(unsigned int i = 0;i < GetClass()->ActorInfo->VisibleToPlayerClass.Size();++i)
{
const PClass *cls = GetClass()->ActorInfo->VisibleToPlayerClass[i];
if(cls && pPlayer->mo->GetClass()->IsDescendantOf(cls))
{
visible = true;
break;
}
}
if(!visible)
return false;
}
// [BB] Passed all checks.
return true;