private void updateNearest()
    {
        Switch     last = nearest;
        RaycastHit hit  = new RaycastHit();

        Physics.Raycast(cam.position, cam.forward, out hit, maxDistance, ~LayerMask.NameToLayer("Switch"));
        if (hit.transform)
        {
            nearest = (Switch)hit.transform.GetComponent("Switch");
            if (nearest && (last != nearest))
            {
                nearest.Active();
            }
        }
        else
        {
            nearest = null;
        }
        if (last && (last != nearest))
        {
            last.Inactive();
        }
    }