mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-10 10:34:06 +09:00
removing 99999 for endX finally works
This commit is contained in:
@@ -219,7 +219,8 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
|
|||||||
@Transient private val COLLIDING_UD = 4
|
@Transient private val COLLIDING_UD = 4
|
||||||
@Transient private val COLLIDING_LR = 5
|
@Transient private val COLLIDING_LR = 5
|
||||||
@Transient private val COLLIDING_ALLSIDE = 6
|
@Transient private val COLLIDING_ALLSIDE = 6
|
||||||
@Transient private val COLLIDING_EXTRA_SIZE = 7
|
@Transient private val COLLIDING_LEFT_EXTRA = 7
|
||||||
|
@Transient private val COLLIDING_RIGHT_EXTRA = 7
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Temporary variables
|
* Temporary variables
|
||||||
@@ -639,6 +640,8 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
|
|||||||
|
|
||||||
return Vector2(0.0, controllerMoveDelta!!.y * percentage)
|
return Vector2(0.0, controllerMoveDelta!!.y * percentage)
|
||||||
}
|
}
|
||||||
|
fun Double.modTile() = this.toInt().div(TILE_SIZE).times(TILE_SIZE)
|
||||||
|
fun Double.modTileDelta() = this - this.modTile()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -832,8 +835,10 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
|
|||||||
// 3.1. there's two main cases: "main axis" being X; "main axis" being Y
|
// 3.1. there's two main cases: "main axis" being X; "main axis" being Y
|
||||||
// 3.2. edge cases: (TBA)
|
// 3.2. edge cases: (TBA)
|
||||||
|
|
||||||
fun Double.modTile() = this.toInt().div(TILE_SIZE).times(TILE_SIZE)
|
|
||||||
fun Double.modTileDelta() = this - this.modTile()
|
//println("endX modDelta: ${simulationHitbox.endX.modTileDelta()}")
|
||||||
|
//println("touching_right_extra: ${isTouchingSide(simulationHitbox, COLLIDING_RIGHT_EXTRA)}")
|
||||||
|
|
||||||
|
|
||||||
val vectorSum = externalForce + controllerMoveDelta
|
val vectorSum = externalForce + controllerMoveDelta
|
||||||
// --> Y-Axis
|
// --> Y-Axis
|
||||||
@@ -852,21 +857,17 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
|
|||||||
//debug2("2 dx: $displacementSecondAxis, dy: $displacementMainAxis")
|
//debug2("2 dx: $displacementSecondAxis, dy: $displacementMainAxis")
|
||||||
simulationHitbox.translate(0.0, 1.0)
|
simulationHitbox.translate(0.0, 1.0)
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
// --> X-Axis
|
// --> X-Axis
|
||||||
/*if (simulationHitbox.endX.modTileDelta() > 0 && isTouchingSide(simulationHitbox, COLLIDING_RIGHT)) {
|
if (simulationHitbox.endX.modTileDelta() >= 15.99999) {
|
||||||
//val displacementMainAxis = -1.00001
|
val target = simulationHitbox.endX.div(TILE_SIZE).floorInt().plus(1).times(TILE_SIZE).toDouble()
|
||||||
//val displacementSecondAxis = displacementMainAxis * vectorSum.y / vectorSum.x
|
val delta = target - simulationHitbox.endX
|
||||||
//simulationHitbox.translate(displacementMainAxis, displacementSecondAxis)
|
debug2("xR target: $target, delta: $delta")
|
||||||
//debug2("3 dx: $displacementMainAxis, dy: $displacementSecondAxis")
|
simulationHitbox.translatePosX(delta)
|
||||||
simulationHitbox.translate(-simulationHitbox.endX.modTileDelta(), 0.0)
|
|
||||||
}
|
}
|
||||||
else if (vectorSum.x < 0.0 && isTouchingSide(simulationHitbox, COLLIDING_LEFT)) {
|
|
||||||
//val displacementMainAxis = 1.0
|
|
||||||
//val displacementSecondAxis = displacementMainAxis * vectorSum.y / vectorSum.x
|
|
||||||
//simulationHitbox.translate(displacementMainAxis, displacementSecondAxis)
|
|
||||||
//debug2("4 dx: $displacementMainAxis, dy: $displacementSecondAxis")
|
|
||||||
simulationHitbox.translate(1.0, 0.0)
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
if (isTouchingSide(simulationHitbox, COLLIDING_LR)) {
|
if (isTouchingSide(simulationHitbox, COLLIDING_LR)) {
|
||||||
@@ -973,10 +974,10 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
|
|||||||
val y2 = hitbox.endY - A_PIXEL
|
val y2 = hitbox.endY - A_PIXEL
|
||||||
|
|
||||||
|
|
||||||
val txStart = x1.plus(0.00001f).div(TILE_SIZE).floorInt() // fuck you x.99999999999999
|
val txStart = x1.div(TILE_SIZE).floorInt()
|
||||||
val txEnd = x2.plus(0.00001f).div(TILE_SIZE).floorInt() // fuck you x.99999999999999
|
val txEnd = x2.div(TILE_SIZE).floorInt()
|
||||||
val tyStart = y1.plus(0.00001f).div(TILE_SIZE).floorInt() // fuck you x.99999999999999
|
val tyStart = y1.div(TILE_SIZE).floorInt()
|
||||||
val tyEnd = y2.plus(0.00001f).div(TILE_SIZE).floorInt() // fuck you x.99999999999999
|
val tyEnd = y2.div(TILE_SIZE).floorInt()
|
||||||
|
|
||||||
return isCollidingInternal(txStart, tyStart, txEnd, tyEnd)
|
return isCollidingInternal(txStart, tyStart, txEnd, tyEnd)
|
||||||
}
|
}
|
||||||
@@ -1025,6 +1026,18 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
|
|||||||
y1 = hitbox.startY
|
y1 = hitbox.startY
|
||||||
y2 = hitbox.endY - A_PIXEL
|
y2 = hitbox.endY - A_PIXEL
|
||||||
}
|
}
|
||||||
|
else if (option == COLLIDING_LEFT_EXTRA) {
|
||||||
|
x1 = hitbox.startX - A_PIXEL - A_PIXEL
|
||||||
|
x2 = x1 + A_PIXEL
|
||||||
|
y1 = hitbox.startY
|
||||||
|
y2 = hitbox.endY - A_PIXEL
|
||||||
|
}
|
||||||
|
else if (option == COLLIDING_RIGHT_EXTRA) {
|
||||||
|
x1 = hitbox.endX
|
||||||
|
x2 = x1 + A_PIXEL
|
||||||
|
y1 = hitbox.startY
|
||||||
|
y2 = hitbox.endY - A_PIXEL
|
||||||
|
}
|
||||||
else if (option == COLLIDING_ALLSIDE) {
|
else if (option == COLLIDING_ALLSIDE) {
|
||||||
return isTouchingSide(hitbox, COLLIDING_LEFT) || isTouchingSide(hitbox, COLLIDING_RIGHT) ||
|
return isTouchingSide(hitbox, COLLIDING_LEFT) || isTouchingSide(hitbox, COLLIDING_RIGHT) ||
|
||||||
isTouchingSide(hitbox, COLLIDING_BOTTOM) || isTouchingSide(hitbox, COLLIDING_TOP)
|
isTouchingSide(hitbox, COLLIDING_BOTTOM) || isTouchingSide(hitbox, COLLIDING_TOP)
|
||||||
@@ -1038,10 +1051,10 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean
|
|||||||
}
|
}
|
||||||
else throw IllegalArgumentException()
|
else throw IllegalArgumentException()
|
||||||
|
|
||||||
val txStart = x1.plus(0.00001f).div(TILE_SIZE).floorInt() // fuck you x.99999999999999
|
val txStart = x1.div(TILE_SIZE).floorInt()
|
||||||
val txEnd = x2.plus(0.00001f).div(TILE_SIZE).floorInt() // fuck you x.99999999999999
|
val txEnd = x2.div(TILE_SIZE).floorInt()
|
||||||
val tyStart = y1.plus(0.00001f).div(TILE_SIZE).floorInt() // fuck you x.99999999999999
|
val tyStart = y1.div(TILE_SIZE).floorInt()
|
||||||
val tyEnd = y2.plus(0.00001f).div(TILE_SIZE).floorInt() // fuck you x.99999999999999
|
val tyEnd = y2.div(TILE_SIZE).floorInt()
|
||||||
|
|
||||||
return isCollidingInternal(txStart, tyStart, txEnd, tyEnd)
|
return isCollidingInternal(txStart, tyStart, txEnd, tyEnd)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user