internal void ComputeVolume(IBVHNodeAdapter <T> nAda)
 {
     AssignVolume(nAda.GetObjectPos(GObjects[0]), nAda.GetRadius(GObjects[0]));
     for (int i = 1; i < GObjects.Count; i++)
     {
         ExpandVolume(nAda, nAda.GetObjectPos(GObjects[i]), nAda.GetRadius(GObjects[i]));
     }
 }
        public void Add(T newOb)
        {
            Bounds box    = BoundsFromSphere(nAda.GetObjectPos(newOb), nAda.GetRadius(newOb));
            float  boxSAH = BVHNode <T> .SA(ref box);

            rootBVH.Add(nAda, newOb, ref box, boxSAH);
        }
        internal static float SA(IBVHNodeAdapter <T> nAda, T obj)
        {
            float radius = nAda.GetRadius(obj);

            float size = radius * 2;

            return(6.0f * (size * size));
        }
        internal static Bounds AABBofOBJ(IBVHNodeAdapter <T> nAda, T obj)
        {
            float  radius = nAda.GetRadius(obj);
            Bounds box    = new Bounds
            {
                min = new Vector3(-radius, -radius, -radius),
                max = new Vector3(radius, radius, radius)
            };

            return(box);
        }