X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fmisc%2Futils%2FRenderingUtils.kt;h=917f69b591933ee9a6bfc83354e5f012c0894363;hb=3a443514027417133d7a7e18766720dfea028a87;hp=8976c9963cd8935d64a373ee54db088513537662;hpb=ccbfd61561462c67debf5eb6111c35f91037ab76;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/misc/utils/RenderingUtils.kt b/core/src/ru/deadsoftware/cavedroid/misc/utils/RenderingUtils.kt index 8976c99..917f69b 100644 --- a/core/src/ru/deadsoftware/cavedroid/misc/utils/RenderingUtils.kt +++ b/core/src/ru/deadsoftware/cavedroid/misc/utils/RenderingUtils.kt @@ -1,9 +1,12 @@ package ru.deadsoftware.cavedroid.misc.utils +import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.Color +import com.badlogic.gdx.graphics.GL20 import com.badlogic.gdx.graphics.g2d.GlyphLayout import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.math.Rectangle +import ru.deadsoftware.cavedroid.MainConfig import ru.deadsoftware.cavedroid.misc.Assets private fun Rectangle.shifted(shift: Float) = Rectangle(x + shift, y, width, height) @@ -69,3 +72,27 @@ fun colorFromHexString(hex: String): Color { rgba = (rgba shl 8) or 0xFF return Color(rgba) } + +fun SpriteBatch.withScissors( + mainConfig: MainConfig, + x: Float, + y: Float, + width: Float, + height: Float, + block: () -> Unit +) { + val scaleX = Gdx.graphics.width / mainConfig.width + val scaleY = Gdx.graphics.height / mainConfig.height + + flush() + Gdx.gl.glEnable(GL20.GL_SCISSOR_TEST) + Gdx.gl.glScissor( + /* x = */ (x * scaleX).toInt(), + /* y = */ ((mainConfig.height - y - height) * scaleY).toInt(), + /* width = */ (width * scaleX).toInt(), + /* height = */ (height * scaleY).toInt() + ) + block.invoke() + flush() + Gdx.gl.glDisable(GL20.GL_SCISSOR_TEST) +}