From 4d987cb0d009bccebe840c0a934e2d3ad1f25e4e Mon Sep 17 00:00:00 2001 From: Lukas Date: Sun, 21 Feb 2021 21:53:58 +0100 Subject: [PATCH] rendering: add support for rotated textures --- .../chunk/models/loading/BlockModelFace.kt | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelFace.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelFace.kt index 978ed0353..a01a62c58 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelFace.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/loading/BlockModelFace.kt @@ -17,12 +17,12 @@ import com.google.gson.JsonObject import de.bixilon.minosoft.data.Directions import glm_.vec2.Vec2 import glm_.vec3.Vec3 +import java.util.* class BlockModelFace(data: JsonObject, from: Vec3, to: Vec3, direction: Directions) { val textureName: String = data.get("texture").asString.removePrefix("#") val cullFace: Directions? - - private var positions: Array + private var positions: MutableList init { var textureStart = Vec2(0, 0) @@ -45,13 +45,6 @@ class BlockModelFace(data: JsonObject, from: Vec3, to: Vec3, direction: Directio textureStart = Vec2(it[0].asFloat, it[1].asFloat) textureEnd = Vec2(it[2].asFloat, it[3].asFloat) } - positions = arrayOf( - uvToFloat(Vec2(textureStart.x, textureStart.y)), - uvToFloat(Vec2(textureStart.x, textureEnd.y)), - uvToFloat(Vec2(textureEnd.x, textureEnd.y)), - uvToFloat(Vec2(textureEnd.x, textureStart.y)), - ) - cullFace = data["cullface"]?.asString?.let { return@let if (it == "bottom") { Directions.DOWN @@ -59,12 +52,14 @@ class BlockModelFace(data: JsonObject, from: Vec3, to: Vec3, direction: Directio Directions.valueOf(it.toUpperCase()) } } - positions = arrayOf( + positions = mutableListOf( Vec2(uvToFloat(textureStart.x), uvToFloat(textureStart.y)), Vec2(uvToFloat(textureStart.x), uvToFloat(textureEnd.y)), Vec2(uvToFloat(textureEnd.x), uvToFloat(textureEnd.y)), Vec2(uvToFloat(textureEnd.x), uvToFloat(textureStart.y)), ) + val rotation = data["rotation"]?.asInt?.div(90) ?: 0 + Collections.rotate(positions, rotation) } fun getTexturePositionArray(direction: Directions): Array {