/// <summary> /// Respawns the player core, deinitializes the HUD /// </summary> public override void Respawn() { List <bool> weaponActivationStates = new List <bool>(); for (int i = 0; i < abilities.Count; i++) { if (abilities[i] is WeaponAbility weapon) { weaponActivationStates.Add(weapon.GetActiveTimeRemaining() == -1); } } if (hud) { hud.DeinitializeHUD(); // deinitialize HUD } carrier = FindCarrier(); if (carrier != null) { spawnPoint = carrier.GetSpawnPoint(); } else { spawnPoint = havenSpawnPoint; dimension = lastDimension; } transform.position = spawnPoint; // reset position to spawn point base.Respawn(); // this will reinitialize the HUD spawnPoint = havenSpawnPoint; // reset spawn point int weaponIndex = 0; for (int i = 0; i < abilities.Count; i++) { if (abilities[i] is WeaponAbility weapon) { weapon.SetActive(weaponActivationStates[weaponIndex++]); } } }