public void Despawn(PlayerIndex index, bool removeActivePlayer) { PlayerInput player = _players.FirstOrDefault(p => p.Index == index); if (player) { Transform playerTransform = player.transform; Destroy(player.gameObject); ParticleSystem particleEmitter = Instantiate(_despawnParticleEffect, playerTransform.position, Quaternion.identity); particleEmitter.transform.parent = gameObject.transform; Material material = player.GetComponentInChildren <SkinnedMeshRenderer>().material; particleEmitter.GetComponent <Renderer>().material = material; int removedPlayers = _players.RemoveAll(p => p.Index == index); _colorController.ReturnMaterialToPool(material); if (removedPlayers > 0) { AudioManager.Instance.PlayOneShot("Character Death"); if (removeActivePlayer) { ActivePlayers.RemovePlayer(new Player((int)index, material)); } } } }