private void RecalculateOnOffPositions(ObscurePillar unused)
        {
            if (ObscurePillar.activePillar == null)
            {
                onAngle = null; offAngle = null;
                return;
            }

            Vector3[] bounds  = new Vector3[] { thisRenderer.GetRendererBounds().min, thisRenderer.GetRendererBounds().max };
            Vector3[] corners = new Vector3[] {
                new Vector3(bounds[0].x, bounds[0].y, bounds[0].z),
                new Vector3(bounds[0].x, bounds[0].y, bounds[1].z),
                new Vector3(bounds[0].x, bounds[1].y, bounds[0].z),
                new Vector3(bounds[0].x, bounds[1].y, bounds[1].z),
                new Vector3(bounds[1].x, bounds[0].y, bounds[0].z),
                new Vector3(bounds[1].x, bounds[0].y, bounds[1].z),
                new Vector3(bounds[1].x, bounds[1].y, bounds[0].z),
                new Vector3(bounds[1].x, bounds[1].y, bounds[1].z)
            };

            Vector3 centerOfObject = thisRenderer.GetRendererBounds().center;
            Angle   baseAngle      = PolarCoordinate.CartesianToPolar(centerOfObject - ObscurePillar.activePillar.transform.position).angle;

            onAngle  = Angle.Radians(baseAngle.radians + .001f);
            offAngle = Angle.Radians(baseAngle.radians);
            foreach (var corner in corners)
            {
                PolarCoordinate cornerPolar = PolarCoordinate.CartesianToPolar(corner - ObscurePillar.activePillar.transform.position);
                if (!Angle.IsAngleBetween(cornerPolar.angle, offAngle, onAngle))
                {
                    Angle replaceOn  = Angle.AngleBetween(cornerPolar.angle, offAngle);
                    Angle replaceOff = Angle.AngleBetween(cornerPolar.angle, onAngle);
                    if (replaceOn.radians > replaceOff.radians)
                    {
                        onAngle = cornerPolar.angle;
                    }
                    else
                    {
                        offAngle = cornerPolar.angle;
                    }
                }
            }
            onAngle.Reverse();
            offAngle.Reverse();
        }
    private void RecalculateOnOffPositions()
    {
        if (overrideOnOffAngles)
        {
            return;
        }

        if (renderers.Length == 0)
        {
            Debug.LogError("No renderers found for: " + gameObject.name, gameObject);
            enabled = false;
            return;
        }

        if (DimensionPillar.activePillar == null)
        {
            onAngle = null; offAngle = null;
            return;
        }

        List <Bounds> allRendererBounds = new List <Bounds>();       // new Vector3[] { renderers[0].GetRendererBounds().min, renderers[0].GetRendererBounds().max };

        foreach (var r in renderers)
        {
            allRendererBounds.Add(r.GetRendererBounds());
        }
        Vector3 min = new Vector3(allRendererBounds.Min(b => b.min.x), 0, allRendererBounds.Min(b => b.min.z));
        Vector3 max = new Vector3(allRendererBounds.Max(b => b.max.x), 0, allRendererBounds.Max(b => b.max.z));

        Vector3[] corners = new Vector3[] {
            new Vector3(min.x, min.y, min.z),
            new Vector3(min.x, min.y, max.z),
            new Vector3(max.x, min.y, min.z),
            new Vector3(max.x, min.y, max.z),
        };

        Vector3 centerOfObject = (min + max) / 2f;

        centralAngle = DimensionPillar.activePillar.PillarAngleOfPoint(centerOfObject);
        onAngle      = Angle.Radians(centralAngle.radians - .001f);
        offAngle     = Angle.Radians(centralAngle.radians);
        foreach (var corner in corners)
        {
            Angle cornerAngle = DimensionPillar.activePillar.PillarAngleOfPoint(corner);
            if (!Angle.IsAngleBetween(cornerAngle, onAngle, offAngle))
            {
                Angle replaceOn  = Angle.AngleBetween(cornerAngle, offAngle);
                Angle replaceOff = Angle.AngleBetween(cornerAngle, onAngle);
                if (replaceOn.radians > replaceOff.radians)
                {
                    onAngle = cornerAngle;
                }
                else
                {
                    offAngle = cornerAngle;
                }
            }
        }
        onAngle.Reverse();
        offAngle.Reverse();
    }