private void CleanUpDeadNPCs() { var deadNPCs = _npcRendererRepository.NPCRenderers.Values.Where(x => x.IsDead).ToList(); if (!deadNPCs.Any()) { return; } foreach (var npc in deadNPCs) { npc.Dispose(); _npcRendererRepository.NPCRenderers.Remove(npc.NPC.Index); _npcStateCache.RemoveStateByIndex(npc.NPC.Index); } }
public void RemoveNPCFromView(int npcIndex, bool showDeathAnimation) { //possible that the server might send a packet for the npc to be removed by the map switch is completed if (!_hudControlProvider.IsInGame || !_npcRendererRepository.NPCRenderers.ContainsKey(npcIndex)) { return; } _npcStateCache.RemoveStateByIndex(npcIndex); if (!showDeathAnimation) { _npcRendererRepository.NPCRenderers[npcIndex].Dispose(); _npcRendererRepository.NPCRenderers.Remove(npcIndex); } else { _npcRendererRepository.NPCRenderers[npcIndex].StartDying(); } }