q&d hack to circumvent the dangling pointer issue #26

This commit is contained in:
minjaesong
2019-06-25 15:22:24 +09:00
parent 44405111eb
commit d2e886aec2
4 changed files with 15 additions and 2 deletions

View File

@@ -12,6 +12,7 @@ import net.torvald.terrarum.AppLoader.printdbg
*/
open class BlockLayer(val width: Int, val height: Int) : Disposable {
// using unsafe pointer gets you 100 fps, whereas using directbytebuffer gets you 90
private val ptr = UnsafeHelper.allocate(width * height * BYTES_PER_BLOCK)
//private val directByteBuffer: ByteBuffer

View File

@@ -93,6 +93,9 @@ open class GameWorld : Disposable {
var generatorSeed: Long = 0
internal set
var disposed = false
private set
constructor(worldIndex: Int, width: Int, height: Int, creationTIME_T: Long, lastPlayTIME_T: Long, totalPlayTime: Int) {
if (width <= 0 || height <= 0) throw IllegalArgumentException("Non-positive width/height: ($width, $height)")
@@ -461,6 +464,8 @@ open class GameWorld : Disposable {
layerWall.dispose()
layerTerrain.dispose()
//nullWorldInstance?.dispose() // must be called ONLY ONCE; preferably when the app exits
disposed = true
}
companion object {