private void Update()
    {
        // Pressing E while standing in front of an interactable enables the artifact viewer for that object
        if (Input.GetKeyDown(KeyCode.E))
        {
            // remove any active tutorials
            meltTutorial.SetActive(false);
            createTutorial.SetActive(false);

            Vector3 camPos = playerCamera.position;

            RaycastHit hit;

            if (!pmScript.enabled)
            {
                DisableArtifactViewer(true);
            }
            else if (Physics.Raycast(camPos, playerCamera.TransformDirection(Vector3.forward), out hit, interactReach, interactableMask))
            {
                Interactable interactable = hit.collider.GetComponent <Interactable>();
                Key          key          = hit.collider.GetComponent <Key>();
                Keyhole      keyhole      = hit.collider.GetComponent <Keyhole>();
                Antidote     antidote     = hit.collider.GetComponent <Antidote>();

                if (interactable != null)
                {
                    InteractWithArtifact(hit.collider.gameObject);
                    hit.collider.gameObject.SetActive(false);
                }
                else if (key != null)
                {
                    key.Collect();
                }
                else if (keyhole != null)
                {
                    keyhole.PlaceKeyOnKeyhole();
                }
                else if (antidote != null)
                {
                    antidotePickupSource.clip = antidotePickupSound;
                    antidotePickupSource.Play();

                    antidote.Collect();
                }
                else if (hit.collider.CompareTag("gun"))
                {
                    gunObject.SetActive(true);
                    toolScript.enabled = true;
                    meltTutorial.SetActive(true);
                    menuManager.playerHasTool = true;
                    hit.collider.gameObject.SetActive(false);
                }
                else if (hit.collider.CompareTag("Tool Component"))
                {
                    toolScript.canFreeze = true;
                    hit.collider.gameObject.SetActive(false);
                    createTutorial.SetActive(true);
                    freezerAttachment.SetActive(false);
                    fuelBar.SetActive(true);
                    toolScript.toolFuel = startingFuelPercent * toolScript.capacity;
                }
            }
        }
    }