fixed a bug where spawned fixture's x-position is not wrapped as it should do

This commit is contained in:
minjaesong
2021-09-19 00:03:34 +09:00
parent e68d82f280
commit c94babdf04
3 changed files with 31 additions and 20 deletions

View File

@@ -128,7 +128,7 @@ class SpriteAnimation(@Transient val parentActor: ActorWithBody) {
if (visible) {
val region = textureRegion.get(currentFrame, currentRow)
batch.color = colorFilter
// batch.color = colorFilter
//val scale = parentActor.scale.toFloat() // wtf?

View File

@@ -1625,20 +1625,26 @@ open class ActorWithBody : Actor {
sprite.render(batch, x - offsetX, y - offsetY, scale.toFloat())
}
/*if (WorldCamera.x >= offendingPad && hitbox.startX < WorldCamera.width) {
sprite.render(batch,
(hitbox.startX - offsetX).toFloat() + world!!.width * TILE_SIZEF,
(hitbox.startY - offsetY).toFloat(),
(scale).toFloat()
)
}
else {
sprite.render(batch,
(hitbox.startX - offsetX).toFloat(),
(hitbox.startY - offsetY).toFloat(),
(scale).toFloat()
)
}*/
/*
sprite.render(batch,
(hitbox.startX - offsetX).toFloat(),
(hitbox.startY - offsetY).toFloat(),
(scale).toFloat()
)
batch.color = Color.BLUE
sprite.render(batch,
(hitbox.startX - offsetX).toFloat() - world!!.width * TILE_SIZEF,
(hitbox.startY - offsetY).toFloat(),
(scale).toFloat()
)
batch.color = Color.GREEN
sprite.render(batch,
(hitbox.startX - offsetX).toFloat() + world!!.width * TILE_SIZEF,
(hitbox.startY - offsetY).toFloat(),
(scale).toFloat()
)*/
}
override fun onActorValueChange(key: String, value: Any?) {
@@ -1923,10 +1929,14 @@ open class ActorWithBody : Actor {
inline fun drawBodyInGoodPosition(startX: Float, startY: Float, drawFun: (x: Float, y: Float) -> Unit) {
val offendingPad = INGAME.world.width.times(TerrarumAppConfiguration.TILE_SIZE) - WorldCamera.width - 1
val offendingPad2 = WorldCamera.width + 1
if (WorldCamera.x >= offendingPad && startX < WorldCamera.width) {
drawFun(startX + INGAME.world.width * TILE_SIZEF, startY)
}
// else if (WorldCamera.x <= offendingPad2 && startX > offendingPad) {
// drawFun(startX - INGAME.world.width * TILE_SIZEF, startY)
// }
else {
drawFun(startX , startY)
}

View File

@@ -1,19 +1,16 @@
package net.torvald.terrarum.modulebasegame.gameactors
import net.torvald.terrarum.App
import net.torvald.terrarum.*
import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.IngameInstance
import net.torvald.terrarum.Point2i
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.gameactors.ActorID
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameactors.PhysProperties
import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.ui.UICanvas
import org.dyn4j.geometry.Vector2
import net.torvald.terrarum.*
typealias BlockBoxIndex = Int
@@ -111,6 +108,10 @@ open class FixtureBase : ActorWithBody, CuedByTerrainChange {
// using the actor's hitbox
// wrap x-position
val posX = posX fmod world!!.width
// check for existing blocks (and fixtures)
var hasCollision = false
checkForCollision@