mirror of
https://github.com/webbukkit/dynmap.git
synced 2025-03-25 13:00:17 +01:00
Fix handling of flipped texture offsets
This commit is contained in:
parent
53c4ebf233
commit
dacd51aabb
DynmapCore/src/main/java/org/dynmap
exporter
hdmap
modsupport/impl
utils
DynmapCoreAPI/src/main/java/org/dynmap/renderer
@ -529,6 +529,9 @@ public class OBJExport {
|
||||
case TOPFLIPV:
|
||||
f.faceLine = String.format("f %d/%d %d/%d %d/%d %d/%d\n", v[0], uv[0], v[1], uv[1], v[2], uv[2], v[3], uv[3]);
|
||||
break;
|
||||
case TOPFLIPHV:
|
||||
f.faceLine = String.format("f %d/%d %d/%d %d/%d %d/%d\n", v[0], uv[0], v[1], uv[1], v[2], uv[2], v[3], uv[3]);
|
||||
break;
|
||||
case BOTTOM:
|
||||
f.faceLine = String.format("f %d/%d %d/%d %d/%d %d/%d\n", v[3], uv[3], v[2], uv[2], v[1], uv[1], v[0], uv[0]);
|
||||
break;
|
||||
|
@ -683,6 +683,8 @@ public class HDBlockModels {
|
||||
p_sidevis = SideVisible.TOPFLIP;
|
||||
else if(av[1].equals("topflipv"))
|
||||
p_sidevis = SideVisible.TOPFLIPV;
|
||||
else if(av[1].equals("topfliphv"))
|
||||
p_sidevis = SideVisible.TOPFLIPHV;
|
||||
else if(av[1].equals("bottom"))
|
||||
p_sidevis = SideVisible.BOTTOM;
|
||||
else if(av[1].equals("flip"))
|
||||
|
@ -411,6 +411,7 @@ public class IsoHDPerspective implements HDPerspective {
|
||||
case TOP:
|
||||
case TOPFLIP:
|
||||
case TOPFLIPV:
|
||||
case TOPFLIPHV:
|
||||
if (det < 0.000001) {
|
||||
return hitcnt;
|
||||
}
|
||||
@ -464,6 +465,10 @@ public class IsoHDPerspective implements HDPerspective {
|
||||
else if (pd.sidevis == SideVisible.TOPFLIPV) {
|
||||
patch_v[hitcnt] = 1 - v;
|
||||
}
|
||||
else if (pd.sidevis == SideVisible.TOPFLIPHV) {
|
||||
patch_u[hitcnt] = 1 - u;
|
||||
patch_v[hitcnt] = 1 - v;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (pd.sidevis == SideVisible.FLIP) {
|
||||
|
@ -299,6 +299,9 @@ public class ModModelDefinitionImpl implements ModModelDefinition {
|
||||
case TOPFLIPV:
|
||||
line += ",visibility=topflipv";
|
||||
break;
|
||||
case TOPFLIPHV:
|
||||
line += ",visibility=topfliphv";
|
||||
break;
|
||||
case FLIP:
|
||||
line += ",visibility=flip";
|
||||
break;
|
||||
|
@ -312,8 +312,10 @@ public class PatchDefinition implements RenderPatch {
|
||||
boolean flipU = false, flipV = false;
|
||||
if (uv != null) { // MC V is top down, so flip
|
||||
patchuv = new double[] { uv[0] / 16.0, 1 - uv[3] / 16.0, uv[2] / 16.0, 1 - uv[1] / 16.0 };
|
||||
if (patchuv[0] > patchuv[2]) { flipU = true; double save = patchuv[0]; patchuv[0] = patchuv[2]; patchuv[2] = save; }
|
||||
if (patchuv[1] > patchuv[3]) { flipV = true; double save = patchuv[1]; patchuv[1] = patchuv[3]; patchuv[3] = save; }
|
||||
// if (patchuv[0] > patchuv[2]) { flipU = true; double save = patchuv[0]; patchuv[0] = patchuv[2]; patchuv[2] = save; }
|
||||
// if (patchuv[1] > patchuv[3]) { flipV = true; double save = patchuv[1]; patchuv[1] = patchuv[3]; patchuv[3] = save; }
|
||||
if (patchuv[0] > patchuv[2]) { flipU = true; patchuv[0] = 1.0 - patchuv[0]; patchuv[2] = 1.0 - patchuv[2]; }
|
||||
if (patchuv[1] > patchuv[3]) { flipV = true; patchuv[1] = 1.0 - patchuv[1]; patchuv[3] = 1.0 - patchuv[3]; }
|
||||
}
|
||||
|
||||
switch (face) {
|
||||
@ -450,6 +452,6 @@ public class PatchDefinition implements RenderPatch {
|
||||
txtV.add(txtorig); // And add it to compute full V
|
||||
}
|
||||
update(txtorig.x, txtorig.y, txtorig.z, txtU.x, txtU.y, txtU.z, txtV.x, txtV.y, txtV.z,
|
||||
patchuv[0], patchuv[2], patchuv[1], patchuv[3], flipU ? (flipV ? SideVisible.TOP : SideVisible.TOPFLIP) : (flipV ? SideVisible.TOPFLIPV : SideVisible.TOP), textureid, patchuv[1], patchuv[3]);
|
||||
patchuv[0], patchuv[2], patchuv[1], patchuv[3], flipU ? (flipV ? SideVisible.TOPFLIPHV : SideVisible.TOPFLIP) : (flipV ? SideVisible.TOPFLIPV : SideVisible.TOP), textureid, patchuv[1], patchuv[3]);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package org.dynmap.renderer;
|
||||
|
||||
public interface RenderPatchFactory {
|
||||
public enum SideVisible { TOP, BOTTOM, BOTH, FLIP, TOPFLIP, TOPFLIPV };
|
||||
public enum SideVisible { TOP, BOTTOM, BOTH, FLIP, TOPFLIP, TOPFLIPV, TOPFLIPHV };
|
||||
|
||||
/**
|
||||
* Get/create patch with given attributes.
|
||||
|
Loading…
Reference in New Issue
Block a user