Culling fix & null pointer fix
This commit is contained in:
parent
ca9e32ae53
commit
5efab22561
1 changed files with 11 additions and 6 deletions
|
@ -43,8 +43,8 @@ import java.util.function.Function;
|
||||||
public class OBJBlockModel implements UnbakedModel, BakedModel {
|
public class OBJBlockModel implements UnbakedModel, BakedModel {
|
||||||
private static final Vector3f[] POSITIONS = new Vector3f[] { new Vector3f(), new Vector3f(), new Vector3f() };
|
private static final Vector3f[] POSITIONS = new Vector3f[] { new Vector3f(), new Vector3f(), new Vector3f() };
|
||||||
|
|
||||||
protected final Map<Direction, List<UnbakedQuad>> quadsUnbakedMap = Maps.newHashMap();
|
protected final Map<Direction, List<UnbakedQuad>> quadsUnbakedMap = Maps.newEnumMap(Direction.class);
|
||||||
protected final Map<Direction, List<BakedQuad>> quadsBakedMap = Maps.newHashMap();
|
protected final Map<Direction, List<BakedQuad>> quadsBakedMap = Maps.newEnumMap(Direction.class);
|
||||||
protected final List<UnbakedQuad> quadsUnbaked = Lists.newArrayList();
|
protected final List<UnbakedQuad> quadsUnbaked = Lists.newArrayList();
|
||||||
protected final List<BakedQuad> quadsBaked = Lists.newArrayList();
|
protected final List<BakedQuad> quadsBaked = Lists.newArrayList();
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ public class OBJBlockModel implements UnbakedModel, BakedModel {
|
||||||
transforms = ItemTransforms.NO_TRANSFORMS;
|
transforms = ItemTransforms.NO_TRANSFORMS;
|
||||||
overrides = ItemOverrides.EMPTY;
|
overrides = ItemOverrides.EMPTY;
|
||||||
materials = new ArrayList<>(textureIDs.length + 1);
|
materials = new ArrayList<>(textureIDs.length + 1);
|
||||||
sprites = new TextureAtlasSprite[materials.size()];
|
sprites = new TextureAtlasSprite[textureIDs.length + 1];
|
||||||
this.particleIndex = particleIndex;
|
this.particleIndex = particleIndex;
|
||||||
this.useCulling = useCulling;
|
this.useCulling = useCulling;
|
||||||
this.useShading = useShading;
|
this.useShading = useShading;
|
||||||
|
@ -244,7 +244,12 @@ public class OBJBlockModel implements UnbakedModel, BakedModel {
|
||||||
}
|
}
|
||||||
if (useCulling) {
|
if (useCulling) {
|
||||||
Direction dir = getCullingDirection(quad);
|
Direction dir = getCullingDirection(quad);
|
||||||
quadsUnbakedMap.get(dir).add(quad);
|
if (dir == null) {
|
||||||
|
quadsUnbaked.add(quad);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
quadsUnbakedMap.get(dir).add(quad);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
quadsUnbaked.add(quad);
|
quadsUnbaked.add(quad);
|
||||||
|
@ -283,10 +288,10 @@ public class OBJBlockModel implements UnbakedModel, BakedModel {
|
||||||
Direction dir = null;
|
Direction dir = null;
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
Vector3f pos = quad.getPos(i, POSITIONS[0]);
|
Vector3f pos = quad.getPos(i, POSITIONS[0]);
|
||||||
if (pos.x() < 1 || pos.x() > 0 || pos.y() < 1 || pos.y() > 0 || pos.z() < 1 || pos.z() > 0) {
|
if (pos.x() < 1 && pos.x() > 0 && pos.y() < 1 && pos.y() > 0 && pos.z() < 1 && pos.z() > 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Direction newDir = Direction.getNearest(pos.x(), pos.y(), pos.z());
|
Direction newDir = Direction.getNearest(pos.x() - 0.5F, pos.y() - 0.5F, pos.z() - 0.5F);
|
||||||
if (dir == null) {
|
if (dir == null) {
|
||||||
dir = newDir;
|
dir = newDir;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue