public ICollection<NPC> GetNpcs(Func<NPC, bool> predicate)
{
var result = new List<NPC>();
_creaturesRWLS.EnterReadLock();
try
{
foreach (var creature in _creatures.Values)
{
var npc = creature as NPC;
if (npc == null || !predicate(npc))
continue;
result.Add(npc);
}
}
finally
{
_creaturesRWLS.ExitReadLock();
}
return result;
}