From 1d704768bf2503b41fb1b2fbe216dc9e1c2fcdda Mon Sep 17 00:00:00 2001 From: Tobias Knerr Date: Tue, 28 May 2024 11:09:52 +0200 Subject: [PATCH] Support padding for road marking arrows --- .../core/world/modules/RoadModule.java | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/osm2world/core/world/modules/RoadModule.java b/src/main/java/org/osm2world/core/world/modules/RoadModule.java index bdfb67a33..d90f6a88e 100644 --- a/src/main/java/org/osm2world/core/world/modules/RoadModule.java +++ b/src/main/java/org/osm2world/core/world/modules/RoadModule.java @@ -43,6 +43,7 @@ import org.osm2world.core.target.common.material.TextureDataDimensions; import org.osm2world.core.target.common.mesh.Mesh; import org.osm2world.core.target.common.texcoord.TexCoordFunction; +import org.osm2world.core.target.common.texcoord.TexCoordUtil; import org.osm2world.core.util.enums.LeftRight; import org.osm2world.core.world.data.LegacyWorldObject; import org.osm2world.core.world.data.ProceduralWorldObject; @@ -2271,22 +2272,12 @@ private static Material addTurnArrows(Material material, * To reduce the number of necessary textures, it uses mirrored versions of * the various right-pointing arrows for left-pointing arrows. */ - private static class ArrowTexCoordFunction implements TexCoordFunction { - - private final RoadPart roadPart; - private final boolean rightHandTraffic; - private final boolean mirrorLeftRight; - private final TextureDataDimensions textureDimensions; - - private ArrowTexCoordFunction(RoadPart roadPart, - boolean rightHandTraffic, boolean mirrorLeftRight, TextureDataDimensions textureDimensions) { - - this.roadPart = roadPart; - this.rightHandTraffic = rightHandTraffic; - this.mirrorLeftRight = mirrorLeftRight; - this.textureDimensions = textureDimensions; - - } + private record ArrowTexCoordFunction ( + RoadPart roadPart, + boolean rightHandTraffic, + boolean mirrorLeftRight, + TextureDataDimensions textureDimensions + ) implements TexCoordFunction { @Override public List apply(List vs) { @@ -2295,7 +2286,7 @@ public List apply(List vs) { throw new IllegalArgumentException("not a triangle strip lane"); } - List result = new ArrayList(vs.size()); + List result = new ArrayList<>(vs.size()); boolean forward = roadPart == RoadPart.LEFT ^ rightHandTraffic; @@ -2361,7 +2352,8 @@ public List apply(List vs) { t = higher ? 0 : 1; } - result.add(new VectorXZ(s, t)); + VectorXZ rawTexCoord = new VectorXZ(s, t); + result.add(TexCoordUtil.applyPadding(rawTexCoord, textureDimensions)); }