Handle generated LOD updates outside the render thread
This commit is contained in:
+9
-2
@@ -15,6 +15,7 @@ import com.seibel.distanthorizons.core.util.LodUtil;
|
|||||||
import com.seibel.distanthorizons.core.util.WorldGenUtil;
|
import com.seibel.distanthorizons.core.util.WorldGenUtil;
|
||||||
import com.seibel.distanthorizons.core.util.objects.RollingAverage;
|
import com.seibel.distanthorizons.core.util.objects.RollingAverage;
|
||||||
import com.seibel.distanthorizons.core.logging.DhLogger;
|
import com.seibel.distanthorizons.core.logging.DhLogger;
|
||||||
|
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
@@ -60,6 +61,12 @@ public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQue
|
|||||||
|
|
||||||
CompletableFuture<DataSourceRetrievalResult> returnFuture = new CompletableFuture<>();
|
CompletableFuture<DataSourceRetrievalResult> returnFuture = new CompletableFuture<>();
|
||||||
|
|
||||||
|
Executor worldGenExecutor = ThreadPoolUtil.getWorldGenExecutor();
|
||||||
|
if (worldGenExecutor == null)
|
||||||
|
{
|
||||||
|
return CompletableFuture.completedFuture(DataSourceRetrievalResult.CreateFail());
|
||||||
|
}
|
||||||
|
|
||||||
CompletableFuture<NetRequestResult> netFuture = super.submitRequest(sectionPos, /* client timestamp */null);
|
CompletableFuture<NetRequestResult> netFuture = super.submitRequest(sectionPos, /* client timestamp */null);
|
||||||
netFuture.handle((NetRequestResult netResult, Throwable throwable) ->
|
netFuture.handle((NetRequestResult netResult, Throwable throwable) ->
|
||||||
{
|
{
|
||||||
@@ -121,7 +128,7 @@ public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQue
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
// convert the net result
|
// convert the net result
|
||||||
.handle((DataSourceRetrievalResult retrievalResult, Throwable throwable) ->
|
.handleAsync((DataSourceRetrievalResult retrievalResult, Throwable throwable) ->
|
||||||
{
|
{
|
||||||
if (throwable != null)
|
if (throwable != null)
|
||||||
{
|
{
|
||||||
@@ -133,7 +140,7 @@ public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQue
|
|||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
});
|
}, worldGenExecutor);
|
||||||
|
|
||||||
return returnFuture;
|
return returnFuture;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user