public void AddCullingTarget(ICulling target)
 {
     if (mCullingSpheres == null)
     {
         InitCapacity(m_CullingCapacity);
     }
     for (int i = 0; i < mCullLength; i++)
     {
         if (mCullingTarget[i].target == null)
         {
             mCullingTarget[i].target = target;
             mCullingSpheres[i]       = target.Bounding;
             return;
         }
     }
     mCullingTarget[mCullLength]  = new CullTarget(target);
     mCullingSpheres[mCullLength] = target.Bounding;
     mCullLength++;
     if (mCullingGroup != null)
     {
         mCullingGroup.SetBoundingSphereCount(mCullLength);
     }
 }
    private void Update()
    {
        if (!doCulling)
        {
            return;
        }

        // https://answers.unity.com/questions/174002/what-is-the-relationship-between-camera-size-units.html
        Vector3 boxDimensions = Vector3.one;

        boxDimensions.z = cullThickness;
        boxDimensions.y = _c.orthographicSize; //would usually mult this by 2, but overlab box takes half dimensions
        boxDimensions.x = boxDimensions.y * _c.aspect;
        Collider[] hitCol = Physics.OverlapBox(transform.position, boxDimensions, transform.rotation, cullLayer);
        foreach (Collider c in hitCol)
        {
            CullTarget ct = c.GetComponent <CullTarget>();
            if (ct)
            {
                ct.SetVisibility(false);
            }
        }
    }