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); } } }