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();
            }
        }