void DetermineCameraLocation()
    {
        var camPos = transform.position;

        camPos.y = puzzleObj.position.y;
        var angle = Vector3.SignedAngle(puzzleObj.forward, (camPos - puzzleObj.position).normalized, puzzleObj.up);

        int angleInt = Mathf.RoundToInt(angle);

        CAMERA_LOCATION newCameraLocation = cameraLocation;

        if (-90 <= angleInt && angleInt <= 0)
        {
            newCameraLocation = CAMERA_LOCATION.FRONT_RIGHT;
        }
        else if (0 <= angleInt && angleInt <= 90)
        {
            newCameraLocation = CAMERA_LOCATION.FRONT_LEFT;
        }
        else if (90 <= angleInt && angleInt <= 180)
        {
            newCameraLocation = CAMERA_LOCATION.BACK_LEFT;
        }
        else if (-180 <= angleInt && angleInt <= -90)
        {
            newCameraLocation = CAMERA_LOCATION.BACK_RIGHT;
        }

        if (cameraLocation != newCameraLocation)
        {
            cameraLocation = newCameraLocation;
            if (slicers)
            {
                slicers.UpdateBlueSlicersVisibility(cameraLocation);
            }
        }

        Debug.Log(cameraLocation);
    }
 private void Awake()
 {
     camRotAllowed  = true;
     cameraLocation = CAMERA_LOCATION.FRONT_RIGHT;
 }