so many bloody todos ;-; aaaaa

This commit is contained in:
mcrcortex
2025-09-18 12:02:56 +10:00
parent b1582e5a1f
commit 000fa24b2f

View File

@@ -397,16 +397,21 @@ public class RenderDataFactory {
int iA = idx * 2 + (facingForward == 1 ? 0 : shift);
int iB = idx * 2 + (facingForward == 1 ? shift : 0);
long selfModel = this.sectionData[iA];
long nextModel = this.sectionData[iB];
//Check if next culls this face
if (CHECK_NEIGHBOR_FACE_OCCLUSION) {
if (ModelQueries.faceOccludes(this.sectionData[iB + 1], (axis << 1) | (1 - facingForward))) {
long neighbor = this.sectionData[iB + 1];
boolean culls = false;
culls |= ((selfModel^nextModel)&(0xFFFFL<<26))==0&&ModelQueries.cullsSame(neighbor);
culls |= ModelQueries.faceOccludes(neighbor, (axis << 1) | (1 - facingForward));
if (culls) {
this.blockMesher.skip(1);
continue;
}
}
long selfModel = this.sectionData[iA];
long nextModel = this.sectionData[iB];
this.blockMesher.putNext(((long) facingForward) |//Facing
(selfModel&~LM) |
(nextModel&LM)//Apply lighting
@@ -452,8 +457,10 @@ public class RenderDataFactory {
int neighborIdx = ((axis+1)*32*32 * 2)+(side)*32*32;
long neighborId = this.neighboringFaces[neighborIdx + (other*32) + index];
long A = this.sectionData[idx * 2];
if (Mapper.getBlockId(neighborId) != 0) {//Not air
int nib = Mapper.getBlockId(neighborId);
if (nib != 0) {//Not air
long meta = this.modelMan.getModelMetadataFromClientId(this.modelMan.getModelId(Mapper.getBlockId(neighborId)));
if (ModelQueries.isFullyOpaque(meta)) {//Dont mesh this face
this.blockMesher.skip(1);
@@ -463,7 +470,10 @@ public class RenderDataFactory {
//This very funnily causes issues when not combined with meshing non full opaque geometry
//TODO:FIXME, when non opaque geometry is added
if (CHECK_NEIGHBOR_FACE_OCCLUSION) {
if (ModelQueries.faceOccludes(meta, (axis << 1) | (1 - side))) {
boolean culls = false;
culls |= nib==((A>>26)&0xFFFF)&&ModelQueries.cullsSame(meta);
culls |= ModelQueries.faceOccludes(meta, (axis << 1) | (1 - side));
if (culls) {
this.blockMesher.skip(1);
continue;
}
@@ -471,7 +481,6 @@ public class RenderDataFactory {
}
long A = this.sectionData[idx * 2];
this.blockMesher.putNext(((side == 0) ? 0L : 1L) |
(A&~LM) |
@@ -531,7 +540,7 @@ public class RenderDataFactory {
int bi = facingForward == 1 ? b : a;
//TODO: check if must cull against next entries face
if (CHECK_NEIGHBOR_FACE_OCCLUSION) {
if (CHECK_NEIGHBOR_FACE_OCCLUSION) {//TODO:SELF OCCLUSION
if (ModelQueries.faceOccludes(this.sectionData[bi + 1], (axis << 1) | (1 - facingForward))) {
this.blockMesher.skip(1);
continue;
@@ -754,6 +763,7 @@ public class RenderDataFactory {
if (Mapper.getBlockId(neighborId) != 0) {//Not air
int modelId = this.modelMan.getModelId(Mapper.getBlockId(neighborId));
if (modelId == ((A>>26)&0xFFFF)) {//TODO: FIXME, this technically isnt correct as need to check self occulsion, thinks?
//TODO: check self occlsuion in the if statment
fail = true;
} else {
long meta = this.modelMan.getModelMetadataFromClientId(modelId);
@@ -768,6 +778,7 @@ public class RenderDataFactory {
long nB = this.sectionData[(idx+skipAmount) * 2 + 1];
boolean failB = false;
if ((nA&(0xFFFFL<<26)) == (A&(0xFFFFL<<26))) {//TODO: FIXME, this technically isnt correct as need to check self occulsion, thinks?
//TODO: check self occlsuion in the if statment
failB = true;
} else {
if (ModelQueries.faceOccludes(nB, (axis << 1) | (side))) {
@@ -930,6 +941,7 @@ public class RenderDataFactory {
//Check if next culls this face
if (CHECK_NEIGHBOR_FACE_OCCLUSION) {
//TODO: check self occlsuion
if (ModelQueries.faceOccludes(this.sectionData[iB + 1], (2 << 1) | (1 - facingForward))) {
mesher.skip(1);
continue;
@@ -996,6 +1008,7 @@ public class RenderDataFactory {
if (ModelQueries.isFullyOpaque(meta)) {
oki = false;
} else if (CHECK_NEIGHBOR_FACE_OCCLUSION && ModelQueries.faceOccludes(meta, (2 << 1) | (1 - 1))) {
//TODO check self occlsion
oki = false;
}
}
@@ -1017,6 +1030,7 @@ public class RenderDataFactory {
if (ModelQueries.isFullyOpaque(meta)) {
oki = false;
} else if (CHECK_NEIGHBOR_FACE_OCCLUSION && ModelQueries.faceOccludes(meta, (2 << 1) | (1 - 0))) {
//TODO check self occlsion
oki = false;
}
}
@@ -1122,6 +1136,7 @@ public class RenderDataFactory {
if (CHECK_NEIGHBOR_FACE_OCCLUSION) {
if (ModelQueries.faceOccludes(this.sectionData[bi + 1], (2 << 1) | (1 - facingForward))) {
//TODO check self occlsion
this.blockMesher.skip(1);
continue;
}