Ref B
This commit is contained in:
@@ -6,7 +6,6 @@ import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
|
|||||||
import me.cortex.voxy.client.core.gl.GlBuffer;
|
import me.cortex.voxy.client.core.gl.GlBuffer;
|
||||||
import me.cortex.voxy.client.core.rendering.building.BuiltSection;
|
import me.cortex.voxy.client.core.rendering.building.BuiltSection;
|
||||||
import me.cortex.voxy.client.core.rendering.util.DownloadStream;
|
import me.cortex.voxy.client.core.rendering.util.DownloadStream;
|
||||||
import me.cortex.voxy.client.core.util.MarkedCachedObjectList;
|
|
||||||
import me.cortex.voxy.client.core.rendering.util.UploadStream;
|
import me.cortex.voxy.client.core.rendering.util.UploadStream;
|
||||||
import me.cortex.voxy.common.util.HierarchicalBitSet;
|
import me.cortex.voxy.common.util.HierarchicalBitSet;
|
||||||
import me.cortex.voxy.common.world.WorldEngine;
|
import me.cortex.voxy.common.world.WorldEngine;
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
package me.cortex.voxy.client.core.util;
|
|
||||||
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectFunction;
|
|
||||||
import me.cortex.voxy.common.util.HierarchicalBitSet;
|
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
public class MarkedCachedObjectList<T> {
|
|
||||||
private static final float GROWTH_FACTOR = 0.75f;
|
|
||||||
|
|
||||||
private final Int2ObjectFunction<T[]> arrayGenerator;
|
|
||||||
private final Supplier<T> nullSupplier;
|
|
||||||
private final HierarchicalBitSet bitSet = new HierarchicalBitSet();
|
|
||||||
private T[] objects;//Should maybe make a getter function instead
|
|
||||||
|
|
||||||
public MarkedCachedObjectList(Int2ObjectFunction<T[]> arrayGenerator, Supplier<T> nullSupplier) {
|
|
||||||
this.arrayGenerator = arrayGenerator;
|
|
||||||
this.nullSupplier = nullSupplier;
|
|
||||||
this.objects = this.arrayGenerator.apply(16);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int allocate() {
|
|
||||||
//Gets an unused id for some entry in objects, if its null fill it
|
|
||||||
int id = this.bitSet.allocateNext();
|
|
||||||
if (this.objects.length <= id) {
|
|
||||||
//Resize and copy over the objects array
|
|
||||||
int newLen = this.objects.length + (int)Math.ceil(this.objects.length*GROWTH_FACTOR);
|
|
||||||
T[] newArr = this.arrayGenerator.apply(newLen);
|
|
||||||
System.arraycopy(this.objects, 0, newArr, 0, this.objects.length);
|
|
||||||
this.objects = newArr;
|
|
||||||
}
|
|
||||||
if (this.objects[id] == null) {
|
|
||||||
this.objects[id] = this.nullSupplier.get();
|
|
||||||
}
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void release(int id) {
|
|
||||||
if (!this.bitSet.free(id)) {
|
|
||||||
throw new IllegalArgumentException("Index " + id + " was already released");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public T get(int index) {
|
|
||||||
//Make the checking that index is allocated optional, as it might cause overhead due to multiple cacheline misses
|
|
||||||
if (!this.bitSet.isSet(index)) {
|
|
||||||
throw new IllegalArgumentException("Index " + index + " is not allocated");
|
|
||||||
}
|
|
||||||
return this.objects[index];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package me.cortex.voxy.client.importers;
|
package me.cortex.voxy.client.importers;
|
||||||
|
|
||||||
import com.mojang.serialization.Codec;
|
import com.mojang.serialization.Codec;
|
||||||
import me.cortex.voxy.client.core.util.ByteBufferBackedInputStream;
|
import me.cortex.voxy.common.util.ByteBufferBackedInputStream;
|
||||||
import me.cortex.voxy.common.Logger;
|
import me.cortex.voxy.common.Logger;
|
||||||
import me.cortex.voxy.common.voxelization.VoxelizedSection;
|
import me.cortex.voxy.common.voxelization.VoxelizedSection;
|
||||||
import me.cortex.voxy.common.voxelization.WorldConversionFactory;
|
import me.cortex.voxy.common.voxelization.WorldConversionFactory;
|
||||||
@@ -32,7 +32,6 @@ import java.nio.channels.FileChannel;
|
|||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardOpenOption;
|
import java.nio.file.StandardOpenOption;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.concurrent.ConcurrentLinkedDeque;
|
import java.util.concurrent.ConcurrentLinkedDeque;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
package me.cortex.voxy.client.mixin.minecraft;
|
|
||||||
|
|
||||||
import me.cortex.voxy.client.config.VoxyConfig;
|
|
||||||
import me.cortex.voxy.client.core.IGetVoxelCore;
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
|
||||||
import net.minecraft.client.world.ClientChunkManager;
|
|
||||||
import net.minecraft.client.world.ClientWorld;
|
|
||||||
import net.minecraft.util.math.ChunkPos;
|
|
||||||
import net.minecraft.world.chunk.WorldChunk;
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
|
||||||
|
|
||||||
/*
|
|
||||||
@Mixin(ClientChunkManager.class)
|
|
||||||
public class MixinClientChunkManager {
|
|
||||||
@Shadow @Final ClientWorld world;
|
|
||||||
|
|
||||||
@Inject(require = 0, method = "unload", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientChunkManager$ClientChunkMap;compareAndSet(ILnet/minecraft/world/chunk/WorldChunk;Lnet/minecraft/world/chunk/WorldChunk;)Lnet/minecraft/world/chunk/WorldChunk;", shift = At.Shift.BEFORE), locals = LocalCapture.CAPTURE_FAILHARD)
|
|
||||||
private void injectUnload(ChunkPos pos, CallbackInfo ci, int index, WorldChunk worldChunk) {
|
|
||||||
var core = ((IGetVoxelCore)(world.worldRenderer)).getVoxelCore();
|
|
||||||
if (core != null && VoxyConfig.CONFIG.ingestEnabled) {
|
|
||||||
//core.enqueueIngest(worldChunk);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
package me.cortex.voxy.client.mixin.nvidium;
|
|
||||||
|
|
||||||
import me.cortex.nvidium.RenderPipeline;
|
|
||||||
import me.cortex.voxy.client.config.VoxyConfig;
|
|
||||||
import me.cortex.voxy.client.core.IGetVoxelCore;
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
|
||||||
import org.joml.Matrix4f;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
@Mixin(value = RenderPipeline.class, remap = false)
|
|
||||||
public class MixinRenderPipeline {
|
|
||||||
/*
|
|
||||||
@Inject(method = "renderFrame", at = @At("RETURN"))
|
|
||||||
private void injectVoxyRender(Viewport frustum, ChunkRenderMatrices crm, double px, double py, double pz, CallbackInfo ci) {
|
|
||||||
var core = ((IGetVoxelCore) MinecraftClient.getInstance().worldRenderer).getVoxelCore();
|
|
||||||
if (core != null) {
|
|
||||||
var stack = new MatrixStack();
|
|
||||||
stack.loadIdentity();
|
|
||||||
stack.multiplyPositionMatrix(new Matrix4f(crm.modelView()));
|
|
||||||
core.renderOpaque(stack, px, py, pz);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package me.cortex.voxy.client.core.util;
|
package me.cortex.voxy.common.util;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@@ -8,7 +8,6 @@
|
|||||||
"minecraft.MixinDebugHud",
|
"minecraft.MixinDebugHud",
|
||||||
"minecraft.MixinMinecraftClient",
|
"minecraft.MixinMinecraftClient",
|
||||||
"minecraft.MixinWorldRenderer",
|
"minecraft.MixinWorldRenderer",
|
||||||
"nvidium.MixinRenderPipeline",
|
|
||||||
"sodium.MixinDefaultChunkRenderer",
|
"sodium.MixinDefaultChunkRenderer",
|
||||||
"sodium.MixinRenderSectionManager"
|
"sodium.MixinRenderSectionManager"
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user