IEnumerator SpawnNewHydrogenInteractableCorutine(HydrogenInteractableType type, float delay)
    {
        yield return(new WaitForSeconds(delay));

        Vector3 spawnPos = transform.position;

        HydrogenInteractable interactable;

        switch (type)
        {
        case HydrogenInteractableType.LargeFilter:
            interactable = Instantiate(largeFilterPrefab, spawnPos, Quaternion.identity).GetComponent <HydrogenInteractable>();
            interactable.onHydrogenInteractableDestroyed.AddListener(OnInteractableDestroyed);
            break;

        case HydrogenInteractableType.SmallFilter:
            interactable = Instantiate(smallFilterPrefab, spawnPos, Quaternion.identity).GetComponent <HydrogenInteractable>();
            interactable.onHydrogenInteractableDestroyed.AddListener(OnInteractableDestroyed);
            break;

        case HydrogenInteractableType.GunModule:
            interactable = Instantiate(gunModulePrefab, spawnPos, Quaternion.identity).GetComponent <HydrogenInteractable>();
            interactable.onHydrogenInteractableDestroyed.AddListener(OnInteractableDestroyed);
            break;

        case HydrogenInteractableType.InstructionsClipboard:
            Instantiate(instructionsClipboard, spawnPos, Quaternion.identity);
            break;

        case HydrogenInteractableType.PlayAgainClipboard:
            var button = Instantiate(playAgainClipboard, spawnPos, Quaternion.identity).GetComponentInChildren <ClipboardButton>();
            button.onClicked.AddListener(Restart);
            break;
        }

        HL.AudioManagement.AudioManager.Instance.PlayIn3D(spawnSound, 1f, spawnPos, 1f, 10f);
    }
 public void SpawnNewHydrogenInteractable(HydrogenInteractableType type, float delay = 1f) => StartCoroutine(SpawnNewHydrogenInteractableCorutine(type, delay));