void Update()
    {
        Camera playerCam = SuperspectiveScreen.instance.playerCamera;

        Angle.Quadrant prevQuadrant = playerQuadrant;
        playerQuadrant = GetQuadrant(playerCam.transform.position);

        if (prevQuadrant == Angle.Quadrant.I && playerQuadrant == Angle.Quadrant.IV)
        {
            ShiftDimensionUp();
        }
        else if (prevQuadrant == Angle.Quadrant.IV && playerQuadrant == Angle.Quadrant.I)
        {
            ShiftDimensionDown();
        }
        else if (prevQuadrant != playerQuadrant)
        {
            debug.Log($"Prev Quadrant: {prevQuadrant}\nNew Quadrant: {playerQuadrant}");
        }
    }
    // Updates on/off positions for this object, then
    // Updates baseDimension if this object passed the dimensionShift angle, then
    // Updates state based on current cameraAngleRelativeToPillar
    void HandleThisObjectMoving()
    {
        Angle prevAvgAngleOfObject = centralAngle;

        Angle.Quadrant prevQuadrantOfObject = prevAvgAngleOfObject.quadrant;
        RecalculateOnOffPositions();
        Angle avgAngleOfObject = centralAngle;

        Angle.Quadrant quadrantOfObject = avgAngleOfObject.quadrant;

        //debug.Log(prevAvgAngleOfObject + ", " + avgAngleOfObject);// + "\nOn: " + onAngle + ", Off: " + offAngle);
        if (prevQuadrantOfObject != quadrantOfObject)
        {
            debug.Log("Prev Quadrant: " + prevQuadrantOfObject + ", Next Quadrant: " + quadrantOfObject);
        }

        bool clockwise = Angle.IsClockwise(prevAvgAngleOfObject, avgAngleOfObject);

        if (prevAvgAngleOfObject != avgAngleOfObject)
        {
            if (clockwise && prevQuadrantOfObject == Angle.Quadrant.IV && quadrantOfObject == Angle.Quadrant.I)
            {
                // Bump baseDimension up
                debug.Log("Bumping baseDimension up");
                SetBaseDimension((baseDimension + 1) % (DimensionPillar.activePillar.maxDimension + 1));
            }
            else if (!clockwise && prevQuadrantOfObject == Angle.Quadrant.I && quadrantOfObject == Angle.Quadrant.IV)
            {
                // Bump baseDimension down
                debug.Log("Bumping baseDimension down");
                SetBaseDimension((baseDimension == 0) ? DimensionPillar.activePillar.maxDimension : baseDimension - 1);
            }

            VisibilityState nextState = DetermineState(DimensionPillar.activePillar.curDimension, DimensionPillar.activePillar.cameraAngleRelativeToPillar, forceCalculations: true);

            if (nextState != visibilityState)
            {
                SwitchVisibilityState(nextState);
            }
        }
    }