[Editor] Remove unnecessary map rendering in loop

This commit is contained in:
2021-02-04 10:37:27 +01:00
parent d94e810977
commit c0c04233bd
5 changed files with 22 additions and 38 deletions

View File

@@ -1,12 +1,10 @@
package com.bartlomiejpluta.base.editor.model.map.tileset
package com.bartlomiejpluta.base.editor.model.tileset
import javafx.scene.image.Image
import javafx.scene.image.PixelReader
import javafx.scene.image.WritableImage
import javafx.scene.image.PixelWriter
import javafx.scene.paint.Color
class Tile(

View File

@@ -1,4 +1,4 @@
package com.bartlomiejpluta.base.editor.model.map.tileset
package com.bartlomiejpluta.base.editor.model.tileset
import javafx.scene.image.Image
import javafx.scene.image.PixelFormat
@@ -28,8 +28,4 @@ class TileSet(private val image: Image, val rows: Int, val columns: Int) {
fun getTile(row: Int, column: Int) = tiles[row][column]
fun getTile(id: Int) = tiles[id / rows][id % columns]
companion object {
val EMPTY = TileSet(Image("/textures/tileset.png"), 1, 1)
}
}

View File

@@ -2,15 +2,17 @@ package com.bartlomiejpluta.base.editor.view.component.map
import com.bartlomiejpluta.base.editor.model.map.map.GameMap
import com.bartlomiejpluta.base.editor.render.canvas.map.MapCanvas
import com.bartlomiejpluta.base.editor.view.render.renderer.Renderer
import javafx.event.EventHandler
import javafx.scene.canvas.Canvas
import javafx.scene.input.MouseEvent
class MapPane : Canvas() {
class MapPane : Canvas(), EventHandler<MouseEvent> {
private val mapCanvas = MapCanvas()
private val renderer = Renderer(graphicsContext2D, mapCanvas)
init {
renderer.start()
onMouseMoved = this
onMouseClicked = this
onMouseDragged = this
}
fun updateMap(map: GameMap) {
@@ -18,4 +20,13 @@ class MapPane : Canvas() {
height = map.height.toDouble()
mapCanvas.updateMap(map)
}
fun render() {
mapCanvas.render(graphicsContext2D)
}
override fun handle(event: MouseEvent?) {
mapCanvas.handle(event)
mapCanvas.render(graphicsContext2D)
}
}

View File

@@ -4,7 +4,10 @@ import com.bartlomiejpluta.base.editor.model.map.map.GameMap
import com.bartlomiejpluta.base.editor.view.component.map.MapPane
import javafx.beans.property.SimpleDoubleProperty
import javafx.scene.transform.Scale
import tornadofx.*
import tornadofx.Fragment
import tornadofx.group
import tornadofx.plusAssign
import tornadofx.scrollpane
class MapFragment : Fragment() {
private val pane = MapPane()
@@ -17,6 +20,7 @@ class MapFragment : Fragment() {
fun updateMap(map: GameMap) {
pane.updateMap(map)
pane.render()
}
override val root = scrollpane {

View File

@@ -1,25 +0,0 @@
package com.bartlomiejpluta.base.editor.view.render.renderer
import com.bartlomiejpluta.base.editor.render.model.Renderable
import javafx.animation.AnimationTimer
import javafx.scene.canvas.GraphicsContext
class Renderer(
private val gc: GraphicsContext,
private val renderable: Renderable
) : AnimationTimer() {
private var previous = System.nanoTime()
override fun handle(now: Long) {
val dt = (now - previous) / 1000000000.0
previous = now
render()
}
private fun render() {
gc.clearRect(0.0, 0.0, gc.canvas.width, gc.canvas.height);
renderable.render(gc)
}
}