refactoring/renaming before adding N-sized world gen

This commit is contained in:
James Seibel
2024-10-06 08:29:39 -05:00
parent 1d8ac571cf
commit d86a0dc2b0
5 changed files with 13 additions and 20 deletions
@@ -62,7 +62,7 @@ public class FullDataSourceV2 implements IDataSource<IDhLevel>
/** measured in data columns */
public static final int WIDTH = 64;
/** how many chunks wide this datasource is. */
/** how many chunks wide this datasource is at detail level 0. */
public static final int NUMB_OF_CHUNKS_WIDE = WIDTH / LodUtil.CHUNK_WIDTH;
public static final byte DATA_FORMAT_VERSION = 1;
@@ -219,8 +219,8 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im
return false;
}
GenTask genTask = new GenTask(genPos);
CompletableFuture<WorldGenResult> worldGenFuture = worldGenQueue.submitRetrievalTask(genPos, (byte) (DhSectionPos.getDetailLevel(genPos) - DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL), genTask);
WorldGenTaskTracker genTaskTracker = new WorldGenTaskTracker(genPos);
CompletableFuture<WorldGenResult> worldGenFuture = worldGenQueue.submitRetrievalTask(genPos, (byte) (DhSectionPos.getDetailLevel(genPos) - DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL), genTaskTracker);
worldGenFuture.whenComplete((genTaskResult, ex) -> this.onWorldGenTaskComplete(genTaskResult, ex));
return true;
@@ -385,23 +385,19 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im
//================//
// TODO may not be needed
private class GenTask implements IWorldGenTaskTracker
private class WorldGenTaskTracker implements IWorldGenTaskTracker
{
private final long pos;
public GenTask(long pos) { this.pos = pos; }
public WorldGenTaskTracker(long pos) { this.pos = pos; }
@Override
public boolean isMemoryAddressValid() { return true; }
@Override
public Consumer<FullDataSourceV2> getDataSourceConsumer()
{
return (chunkSizedFullDataSource) ->
return (dataSource) ->
{
GeneratedFullDataSourceProvider.this.delayedFullDataSourceSaveCache.queueDataSourceForUpdateAndSave(chunkSizedFullDataSource);
GeneratedFullDataSourceProvider.this.delayedFullDataSourceSaveCache.queueDataSourceForUpdateAndSave(dataSource);
};
}
@@ -30,9 +30,6 @@ import java.util.function.Consumer;
*/
public interface IWorldGenTaskTracker
{
/** Returns true if the task hasn't been garbage collected. */
boolean isMemoryAddressValid();
@Nullable
Consumer<FullDataSourceV2> getDataSourceConsumer();
@@ -19,6 +19,8 @@
package com.seibel.distanthorizons.core.generation.tasks;
import com.seibel.distanthorizons.core.file.fullDatafile.GeneratedFullDataSourceProvider;
import java.util.concurrent.CompletableFuture;
/**
@@ -42,6 +44,4 @@ public final class WorldGenTask
this.future = future;
}
public boolean StillValid() { return this.taskTracker.isMemoryAddressValid(); }
}
@@ -45,21 +45,21 @@ public final class WorldGenTaskGroup
this.dataDetail = dataDetail;
}
public void consumeChunkData(FullDataSourceV2 chunkSizedFullDataView)
public void consumeDataSource(FullDataSourceV2 dataSource)
{
Iterator<WorldGenTask> tasks = this.worldGenTasks.iterator();
while (tasks.hasNext())
{
WorldGenTask task = tasks.next();
Consumer<FullDataSourceV2> chunkDataConsumer = task.taskTracker.getDataSourceConsumer();
if (chunkDataConsumer == null)
Consumer<FullDataSourceV2> dataSourceConsumer = task.taskTracker.getDataSourceConsumer();
if (dataSourceConsumer == null)
{
tasks.remove();
task.future.complete(WorldGenResult.CreateFail());
}
else
{
chunkDataConsumer.accept(chunkSizedFullDataView);
dataSourceConsumer.accept(dataSource);
}
}
}