public override void OnRecomputeVisibility(IVisibilityBuilder info)
        {
            base.OnRecomputeVisibility(info);

              // call it manually for the visibility zones
              if (this._visibilityZones != null)
            foreach (ShapeBase shape in _visibilityZones)
              shape.OnRecomputeVisibility(info);
        }
        public override void ResetVisibilityInfo(IVisibilityBuilder info)
        {
            base.ResetVisibilityInfo(info);

              // call it manually for the visibility zones
              if (this._visibilityZones != null)
            foreach (ShapeBase shape in _visibilityZones)
              shape.ResetVisibilityInfo(info);
        }
        public override void GetVisibilityInfo(IVisibilityBuilder info)
        {
            UpdateSectorBoundingBoxes(); // make sure box sizes are up-to-date because connecting relies on it

              base.GetVisibilityInfo(info);
              // call it manually for the visibility zones
              if (this._visibilityZones != null)
            foreach (ShapeBase shape in _visibilityZones)
              shape.GetVisibilityInfo(info);
        }