[Editor] Remove unnecessary map rendering in loop
This commit is contained in:
@@ -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(
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user