public void ReleaseSphere(ICullingSystemListener listener) { if (cullingGroup == null) { return; } var sphereIndex = indices[listener]; cullingGroup.EraseSwapBack(sphereIndex); indices[listeners[boundingSphereCount - 1]] = sphereIndex; CullingGroup.EraseSwapBack(sphereIndex, listeners, ref boundingSphereCount); }
public void SetSphere(ICullingSystemListener listener, Vector3 position, float radius) { if (cullingGroup == null) { return; } var sphereIndex = indices[listener]; var bs = boundingSpheres[sphereIndex]; bs.position = position; bs.radius = radius; boundingSpheres[sphereIndex] = bs; }
public void SetSphere(ICullingSystemListener listener, Vector3 position) { Debug.Assert(cullingGroup != null); if (cullingGroup == null) { return; } var sphereIndex = indices[listener]; var bs = boundingSpheres[sphereIndex]; bs.position = position; boundingSpheres[sphereIndex] = bs; }
public void ReserveSphere(ICullingSystemListener listener, Vector3 position, float radius) { Debug.Assert(cullingGroup != null); if (cullingGroup == null) { return; } if (boundingSphereCount == boundingSpheres.Length) { int newSize = boundingSphereCount + GrowthSize; System.Array.Resize(ref boundingSpheres, newSize); System.Array.Resize(ref listeners, newSize); cullingGroup.SetBoundingSpheres(boundingSpheres); } indices.Add(listener, boundingSphereCount); listeners[boundingSphereCount] = listener; var bs = boundingSpheres[boundingSphereCount]; bs.position = position; bs.radius = radius; boundingSpheres[boundingSphereCount] = bs; boundingSphereCount++; cullingGroup.SetBoundingSphereCount(boundingSphereCount); }