mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-06 08:38:30 +09:00
simple hack for out-of-place render of terrain and lightmap
- Just made them not have negative value
This commit is contained in:
@@ -135,14 +135,14 @@ class FuckingWorldRenderer(val batch: SpriteBatch) : Screen {
|
|||||||
init {
|
init {
|
||||||
setHitboxDimension(2, 2, 0, 0)
|
setHitboxDimension(2, 2, 0, 0)
|
||||||
hitbox.setPosition(
|
hitbox.setPosition(
|
||||||
HQRNG().nextInt(demoWorld.width) * FeaturesDrawer.TILE_SIZE.toDouble(),
|
38000.0,//HQRNG().nextInt(demoWorld.width) * FeaturesDrawer.TILE_SIZE.toDouble(),
|
||||||
0.0 // placeholder; camera AI will take it over
|
0.0 // Y pos: placeholder; camera AI will take it over
|
||||||
)
|
)
|
||||||
noClip = true
|
noClip = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
demoWorld.time.timeDelta = 150
|
//demoWorld.time.timeDelta = 150
|
||||||
|
|
||||||
|
|
||||||
LightmapRendererNew.world = demoWorld
|
LightmapRendererNew.world = demoWorld
|
||||||
@@ -201,7 +201,7 @@ class FuckingWorldRenderer(val batch: SpriteBatch) : Screen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun updateScreen(delta: Float) {
|
fun updateScreen(delta: Float) {
|
||||||
Gdx.graphics.setTitle(TerrarumAppLoader.GAME_NAME +
|
Gdx.graphics.setTitle("WorldRenderTest" +
|
||||||
" — F: ${Gdx.graphics.framesPerSecond} (${Terrarum.TARGET_INTERNAL_FPS})" +
|
" — F: ${Gdx.graphics.framesPerSecond} (${Terrarum.TARGET_INTERNAL_FPS})" +
|
||||||
" — M: ${Terrarum.memInUse}M / ${Terrarum.memTotal}M / ${Terrarum.memXmx}M"
|
" — M: ${Terrarum.memInUse}M / ${Terrarum.memTotal}M / ${Terrarum.memXmx}M"
|
||||||
)
|
)
|
||||||
@@ -248,6 +248,12 @@ class FuckingWorldRenderer(val batch: SpriteBatch) : Screen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun renderDemoWorld() {
|
private fun renderDemoWorld() {
|
||||||
|
println("camera TL: ${WorldCamera.x}, ${WorldCamera.y}")
|
||||||
|
println("camera CN: ${WorldCamera.gdxCamX}, ${WorldCamera.gdxCamY}")
|
||||||
|
println()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// draw skybox //
|
// draw skybox //
|
||||||
|
|
||||||
setCameraPosition(0f, 0f)
|
setCameraPosition(0f, 0f)
|
||||||
@@ -287,8 +293,8 @@ class FuckingWorldRenderer(val batch: SpriteBatch) : Screen {
|
|||||||
//blendNormal()
|
//blendNormal()
|
||||||
|
|
||||||
batch.color = Color.WHITE
|
batch.color = Color.WHITE
|
||||||
val xrem = -(WorldCamera.x % TILE_SIZEF)
|
val xrem = -(WorldCamera.x.toFloat() fmod TILE_SIZEF)
|
||||||
val yrem = -(WorldCamera.y % TILE_SIZEF)
|
val yrem = -(WorldCamera.y.toFloat() fmod TILE_SIZEF)
|
||||||
batch.draw(lightTex,
|
batch.draw(lightTex,
|
||||||
xrem,
|
xrem,
|
||||||
yrem,
|
yrem,
|
||||||
|
|||||||
@@ -287,8 +287,8 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
//blendNormal()
|
//blendNormal()
|
||||||
|
|
||||||
batch.color = Color.WHITE
|
batch.color = Color.WHITE
|
||||||
val xrem = -(WorldCamera.x % TILE_SIZEF)
|
val xrem = -(WorldCamera.x.toFloat() fmod TILE_SIZEF)
|
||||||
val yrem = -(WorldCamera.y % TILE_SIZEF)
|
val yrem = -(WorldCamera.y.toFloat() fmod TILE_SIZEF)
|
||||||
batch.draw(lightTex,
|
batch.draw(lightTex,
|
||||||
xrem,
|
xrem,
|
||||||
yrem,
|
yrem,
|
||||||
@@ -471,7 +471,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class TitleScreenController(val screen: FuckingWorldRenderer) : InputAdapter() {
|
class TitleScreenController(val screen: TitleScreen) : InputAdapter() {
|
||||||
override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
||||||
screen.uiContainer.forEach { it.touchUp(screenX, screenY, pointer, button) }
|
screen.uiContainer.forEach { it.touchUp(screenX, screenY, pointer, button) }
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -309,3 +309,4 @@ class GameWorld(val width: Int, val height: Int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
infix fun Int.fmod(other: Int) = Math.floorMod(this, other)
|
infix fun Int.fmod(other: Int) = Math.floorMod(this, other)
|
||||||
|
infix fun Float.fmod(other: Float) = if (this >= 0f) this % other else (this % other) + other
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import net.torvald.terrarum.blockproperties.Block
|
|||||||
import net.torvald.terrarum.blockproperties.BlockCodex
|
import net.torvald.terrarum.blockproperties.BlockCodex
|
||||||
import net.torvald.terrarum.*
|
import net.torvald.terrarum.*
|
||||||
import net.torvald.terrarum.gameactors.ceilInt
|
import net.torvald.terrarum.gameactors.ceilInt
|
||||||
|
import net.torvald.terrarum.gameworld.fmod
|
||||||
import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_TILES
|
import net.torvald.terrarum.itemproperties.ItemCodex.ITEM_TILES
|
||||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||||
import java.io.BufferedOutputStream
|
import java.io.BufferedOutputStream
|
||||||
@@ -748,7 +749,7 @@ object BlocksDrawer {
|
|||||||
shader.setUniformi("tilemap", 2)
|
shader.setUniformi("tilemap", 2)
|
||||||
shader.setUniformi("tilemapDimension", tilesBuffer.width, tilesBuffer.height)
|
shader.setUniformi("tilemapDimension", tilesBuffer.width, tilesBuffer.height)
|
||||||
shader.setUniformf("tilesInAxes", tilesInHorizontal.toFloat(), tilesInVertical.toFloat())
|
shader.setUniformf("tilesInAxes", tilesInHorizontal.toFloat(), tilesInVertical.toFloat())
|
||||||
shader.setUniformi("cameraTranslation", WorldCamera.x % TILE_SIZE, WorldCamera.y % TILE_SIZE)
|
shader.setUniformi("cameraTranslation", WorldCamera.x fmod TILE_SIZE, WorldCamera.y fmod TILE_SIZE)
|
||||||
shader.setUniformi("tileSizeInPx", TILE_SIZE)
|
shader.setUniformi("tileSizeInPx", TILE_SIZE)
|
||||||
shader.setUniformi("tilesInAtlas", tileAtlas.horizontalCount, tileAtlas.verticalCount) //depends on the tile atlas
|
shader.setUniformi("tilesInAtlas", tileAtlas.horizontalCount, tileAtlas.verticalCount) //depends on the tile atlas
|
||||||
shader.setUniformi("atlasTexSize", tileAtlas.texture.width, tileAtlas.texture.height) //depends on the tile atlas
|
shader.setUniformi("atlasTexSize", tileAtlas.texture.width, tileAtlas.texture.height) //depends on the tile atlas
|
||||||
|
|||||||
@@ -37,8 +37,7 @@ object WorldCamera {
|
|||||||
height = FastMath.ceil(Terrarum.HEIGHT / (Terrarum.ingame?.screenZoom ?: 1f))
|
height = FastMath.ceil(Terrarum.HEIGHT / (Terrarum.ingame?.screenZoom ?: 1f))
|
||||||
|
|
||||||
// position - (WH / 2)
|
// position - (WH / 2)
|
||||||
x = (// X only: ROUNDWORLD implementation
|
x = player.hitbox.startX.toFloat().floorInt() // X only: ROUNDWORLD implementation
|
||||||
player.hitbox.centeredX.toFloat() - width / 2).floorInt()
|
|
||||||
y = (FastMath.clamp(
|
y = (FastMath.clamp(
|
||||||
player.hitbox.centeredY.toFloat() - height / 2,
|
player.hitbox.centeredY.toFloat() - height / 2,
|
||||||
TILE_SIZE.toFloat(),
|
TILE_SIZE.toFloat(),
|
||||||
@@ -46,6 +45,7 @@ object WorldCamera {
|
|||||||
)).floorInt().clampCameraY(world)
|
)).floorInt().clampCameraY(world)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gdxCamX = x + (width / 2f).floor()
|
gdxCamX = x + (width / 2f).floor()
|
||||||
gdxCamY = y + (height / 2f).floor()
|
gdxCamY = y + (height / 2f).floor()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user