From fa6990b0b27bd30e8abb495541f9eaff2dab4658 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 18 Mar 2021 14:43:29 +0100 Subject: [PATCH] rendering: fix water --- .../gui/rendering/chunk/models/loading/BlockModelFace.kt | 6 ++++++ .../rendering/chunk/models/renderable/FluidRenderer.kt | 8 ++++++-- 2 files changed, 12 insertions(+), 2 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 e01fd359e..1d1a7ead8 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 @@ -112,6 +112,12 @@ class BlockModelFace { } } + fun scale(scaleFactor: Double) { + for ((i, position) in positions.withIndex()) { + positions[i] = position * scaleFactor + } + } + companion object { private fun uvToFloat(uv: Float): Float { return (uv) / BlockModelElement.BLOCK_RESOLUTION diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/FluidRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/FluidRenderer.kt index 63a87c0c8..9372cd810 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/FluidRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/models/renderable/FluidRenderer.kt @@ -28,7 +28,8 @@ class FluidRenderer(private val stillTextureName: String, private val flowingTex val modelMatrix = Mat4().translate(position.toVec3()) val lightLevel = lightAccessor.getLightLevel(position) val heights = calculateHeights(neighbourBlocks, blockState, world, position) - val (texture, angle) = if (isLiquidFlowing(heights)) { + val isFlowing = isLiquidFlowing(heights) + val (texture, angle) = if (isFlowing) { Pair(flowing, getRotationAngle(heights)) } else { Pair(still, 0f) @@ -39,6 +40,9 @@ class FluidRenderer(private val stillTextureName: String, private val flowingTex continue } val face = BlockModelFace(VecUtil.EMPTY_VECTOR, Vec3(VecUtil.BLOCK_SIZE_VECTOR.x, positions[7].y * 8, VecUtil.BLOCK_SIZE_VECTOR.z), direction) + if (isFlowing) { + face.scale(0.5) + } face.rotate(angle) val positionTemplate = BlockModelElement.FACE_POSITION_MAP_TEMPLATE[direction.ordinal] val drawPositions = arrayOf(positions[positionTemplate[0]], positions[positionTemplate[1]], positions[positionTemplate[2]], positions[positionTemplate[3]]) @@ -68,7 +72,7 @@ class FluidRenderer(private val stillTextureName: String, private val flowingTex for (direction in directions!!) { angle += getRotationAngle(direction) } - return angle / directions.size + return if (position == 1) { angle / directions.size } else { angle / directions.size + glm.PI.toFloat() } } private fun getRotationAngle(direction: Directions): Float {