Fixed the culling coordinate

This commit is contained in:
Leonardo
2021-09-18 17:09:13 +02:00
parent 5c59ba7a80
commit 1888ac7adc
2 changed files with 17 additions and 16 deletions
@@ -7,10 +7,12 @@ import com.seibel.lod.util.DataPointUtil;
import com.seibel.lod.wrappers.MinecraftWrapper;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import org.lwjgl.system.CallbackI;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
public class Box
{
@@ -186,17 +188,19 @@ public class Box
}
}
public void setUpCulling(BlockPos playerPos, int cullingDistance)
public void setUpCulling(int cullingDistance)
{
BlockPos playerPos = MinecraftWrapper.INSTANCE.getPlayer().blockPosition();
for (Direction direction : DIRECTIONS)
{
if(direction == Direction.UP || direction == Direction.DOWN)
culling.get(direction)[0] = false;
else if(direction == Direction.EAST || direction == Direction.SOUTH)
culling.get(direction)[0] = playerPos.get(direction.getAxis()) < getFacePos(direction) + 32;
else
culling.get(direction)[0] = playerPos.get(direction.getAxis()) > getFacePos(direction) - 32;
culling.get(direction)[0] = false;
if(direction == Direction.DOWN)
culling.get(direction)[0] = playerPos.get(direction.getAxis()) > getFacePos(direction) + cullingDistance;
else if(direction == Direction.UP)
culling.get(direction)[0] = playerPos.get(direction.getAxis()) < getFacePos(direction) - cullingDistance;
else if(direction == Direction.WEST || direction == Direction.NORTH)
culling.get(direction)[0] = -playerPos.get(direction.getAxis()) > getFacePos(direction) + cullingDistance;
else if(direction == Direction.WEST || direction == Direction.NORTH)
culling.get(direction)[0] = -playerPos.get(direction.getAxis()) < getFacePos(direction) - cullingDistance;
}
}
@@ -213,11 +217,9 @@ public class Box
int maxY = getMaxY();
for (Direction direction : ADJ_DIRECTIONS)
{
if(isCulled(direction)){
/*if(isCulled(direction)){
continue;
}
//Reset the ordered array
}*/
long[] dataPoint = adjData.get(direction);
if (dataPoint == null || DataPointUtil.isItVoid(dataPoint[0]))
@@ -377,9 +379,6 @@ public class Box
public boolean shouldContinue(Direction direction, int adjIndex)
{
if(isCulled(direction)){
return false;
}
if (direction == Direction.UP || direction == Direction.DOWN)
{
if (adjIndex == 0)
@@ -100,7 +100,7 @@ public class CubicLodTemplate extends AbstractLodTemplate
box.setColor(color);
box.set(width, height - depth, width);
box.move((int) (xOffset + x), (int) (depth + yOffset), (int) (zOffset + z));
box.setUpCulling(bufferCenterBlockPos, 32);
box.setUpCulling(32);
box.setAdjData(adjData);
}
@@ -108,6 +108,8 @@ public class CubicLodTemplate extends AbstractLodTemplate
{
for(Direction direction : Box.DIRECTIONS)
{
if(box.isCulled(direction))
continue;
int adjIndex = 0;
while(box.shouldContinue(direction, adjIndex))
{