Using the Distance Bands from the CullingGroup API correctly
I find it bizarre that I find almost nothing about CullingGroup stuff outside of unity's own tutorial and API pages. Does no one use this? Or is it really just that simple to use?
Anyways, my issue is that I don't think I'm using the distance bands correctly, although I thought I was following the CullingGroup API just fine.
Here's the gist of my cullinggroup code. When I start up the program, this is what it does:
cullinggroup = new CullingGroup();
cullinggroup.targetCamera = Camera.main;
cullinggroup.onStateChanged = StateChangedMethod;
cullingSpheres = new BoundingSphere[maxNumSpheres];
distances = new float[3];
distances[0] = 10.0f;
distances[1] = 20.0f;
distances[2] = 30.0f;
cullinggroup.SetBoundingDistances(distances);
// place the culling group spheres
while(currNumSpheres < maxNumSpheres)
{
// ...
// code to randomly create BoundingSpheres on a plane
// ...
cullingSpheres[currNumSpheres] = new BoundingSphere(sphereLoc, sphereRadius);
++currNumSpheres;
}
cullinggroup.SetBoundingSpheres(cullingSpheres);
cullinggroup.SetBoundingSphereCount(currNumSpheres);
// test that the spheres have been distributed accordingly
resultIndices = new int[maxNumSpheres];
resultLength = cullinggroup.QueryIndices(0, resultIndices, 0);
Debug.Log("0: Number of results is: " + resultLength);
resultLength = cullinggroup.QueryIndices(1, resultIndices, 0);
Debug.Log("1: Number of results is: " + resultLength);
resultLength = cullinggroup.QueryIndices(2, resultIndices, 0);
Debug.Log("2: Number of results is: " + resultLength);
Here's the result of the print statements when I randomly create 60 spheres:
0: Number of results is: 60
1: Number of results is: 0
2: Number of results is: 0
Here's one example from my level: The player's position is at around (258, 0, 84) and the sphere is placed around (237,0,291). Yet even when I set the three distance bands to something crazy like .1, .2, and 100, it still says that all my spheres are in distance band zero. Am I overlooking something that is supposed to explicitly assign the spheres to some distance? I thought it did it automatically.
Answer by quesadillas · Sep 21, 2016 at 11:28 PM
So, I think I finally got it. If you check the distances immediately after placing them, they'll all show up at 0 like what happened to me above. You have to wait at least a frame or so to give it a chance to organize the spheres into different distance bounds. Now it works correctly!
So if anyone else runs into this issue, hopefully this helps!