I have the following job that finds chunks with high priority:
[BurstCompile]
public struct PrioritizeChunksJob : IJob
{
[NativeDisableUnsafePtrRestriction] public EntityQuery query;
public NativeArray<Entity> chunks;
public TerrainGrid grid;
public int capacity;
public NativeArray<int> chunkCount;
private int count;
public void Execute()
{
query.AddSharedComponentFilter(new ChunkLod { value = 0 });
for (int lod = 0; lod < grid.lodCount && capacity > 0; lod++)
{
AddHighestPriorityChunks(lod);
}
chunkCount[0] = count;
}
private void AddHighestPriorityChunks(int lod)
{
query.SetSharedComponentFilter(new ChunkLod { value = lod });
NativeArray<Entity> entities = query.ToEntityArray(Allocator.Temp);
for (int i = 0; i < entities.Length && capacity > 0; i++, capacity--)
{
chunks[count] = entities[i];
count++;
}
entities.Dispose();
}
}