fix: zooming would not properly center the cam if streamers mode is on

This commit is contained in:
minjaesong
2024-03-01 18:14:12 +09:00
parent a773786c9e
commit 7d38ba866c

View File

@@ -21,7 +21,6 @@ import net.torvald.terrarum.gameactors.ActorWithBody.Companion.METER
import net.torvald.terrarum.gameactors.ActorWithBody.Companion.SI_TO_GAME_ACC import net.torvald.terrarum.gameactors.ActorWithBody.Companion.SI_TO_GAME_ACC
import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gamecontroller.KeyToggler
import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.gameitems.GameItem
import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.gameitems.mouseInInteractableRange import net.torvald.terrarum.gameitems.mouseInInteractableRange
import net.torvald.terrarum.gameparticles.ParticleBase import net.torvald.terrarum.gameparticles.ParticleBase
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
@@ -31,7 +30,6 @@ import net.torvald.terrarum.modulebasegame.gameitems.ItemThrowable
import net.torvald.terrarum.modulebasegame.gameitems.getThrowPosAndVector import net.torvald.terrarum.modulebasegame.gameitems.getThrowPosAndVector
import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.weather.WeatherMixer import net.torvald.terrarum.weather.WeatherMixer
import net.torvald.terrarum.weather.WeatherMixer.render
import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarum.worlddrawer.BlocksDrawer
import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.worlddrawer.FeaturesDrawer
import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.worlddrawer.LightmapRenderer
@@ -217,6 +215,17 @@ object IngameRenderer : Disposable {
private var oldCamX = 0 private var oldCamX = 0
private fun FlippingSpriteBatch.drawFramebufferWithZoom(buf: TextureRegion, zoom: Float) {
val t = (if (App.getConfigBoolean("fx_streamerslayout")) App.scr.chatWidth / 2 else 0).toFloat()
this.draw(buf,
-0.5f * buf.regionWidth * zoom + 0.5f * buf.regionWidth + t * (zoom - 1f),
-0.5f * buf.regionHeight * zoom + 0.5f * buf.regionHeight,
buf.regionWidth * zoom,
buf.regionHeight * zoom
)
}
operator fun invoke( operator fun invoke(
frameDelta: Float, frameDelta: Float,
gamePaused: Boolean, gamePaused: Boolean,
@@ -300,12 +309,7 @@ object IngameRenderer : Disposable {
blendNormalStraightAlpha(batch) blendNormalStraightAlpha(batch)
batch.shader = shaderBlendGlow batch.shader = shaderBlendGlow
shaderBlendGlow.setUniformi("tex1", 1) shaderBlendGlow.setUniformi("tex1", 1)
batch.draw(rgbTex, batch.drawFramebufferWithZoom(rgbTex, zoom)
-0.5f * rgbTex.regionWidth * zoom + 0.5f * rgbTex.regionWidth,
-0.5f * rgbTex.regionHeight * zoom + 0.5f * rgbTex.regionHeight,
rgbTex.regionWidth * zoom,
rgbTex.regionHeight * zoom
)
} }
} }
@@ -317,12 +321,7 @@ object IngameRenderer : Disposable {
batch.inUse { batch.inUse {
blendNormalStraightAlpha(batch) blendNormalStraightAlpha(batch)
batch.shader = null batch.shader = null
batch.draw(rgbTex, batch.drawFramebufferWithZoom(rgbTex, zoom)
-0.5f * rgbTex.regionWidth * zoom + 0.5f * rgbTex.regionWidth,
-0.5f * rgbTex.regionHeight * zoom + 0.5f * rgbTex.regionHeight,
rgbTex.regionWidth * zoom,
rgbTex.regionHeight * zoom
)
// indicator // indicator
batch.color = Color.RED batch.color = Color.RED
@@ -344,12 +343,7 @@ object IngameRenderer : Disposable {
batch.inUse { batch.inUse {
blendNormalStraightAlpha(batch) blendNormalStraightAlpha(batch)
batch.shader = null batch.shader = null
batch.draw(aTex, batch.drawFramebufferWithZoom(aTex, zoom)
-0.5f * aTex.regionWidth * zoom + 0.5f * aTex.regionWidth,
-0.5f * aTex.regionHeight * zoom + 0.5f * aTex.regionHeight,
aTex.regionWidth * zoom,
aTex.regionHeight * zoom
)
// indicator // indicator
batch.color = Color.WHITE batch.color = Color.WHITE