[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.Image
|
||||||
|
|
||||||
import javafx.scene.image.PixelReader
|
import javafx.scene.image.PixelReader
|
||||||
|
|
||||||
import javafx.scene.image.WritableImage
|
import javafx.scene.image.WritableImage
|
||||||
import javafx.scene.image.PixelWriter
|
|
||||||
import javafx.scene.paint.Color
|
|
||||||
|
|
||||||
|
|
||||||
class Tile(
|
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.Image
|
||||||
import javafx.scene.image.PixelFormat
|
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(row: Int, column: Int) = tiles[row][column]
|
||||||
|
|
||||||
fun getTile(id: Int) = tiles[id / rows][id % columns]
|
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.model.map.map.GameMap
|
||||||
import com.bartlomiejpluta.base.editor.render.canvas.map.MapCanvas
|
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.canvas.Canvas
|
||||||
|
import javafx.scene.input.MouseEvent
|
||||||
|
|
||||||
class MapPane : Canvas() {
|
class MapPane : Canvas(), EventHandler<MouseEvent> {
|
||||||
private val mapCanvas = MapCanvas()
|
private val mapCanvas = MapCanvas()
|
||||||
private val renderer = Renderer(graphicsContext2D, mapCanvas)
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
renderer.start()
|
onMouseMoved = this
|
||||||
|
onMouseClicked = this
|
||||||
|
onMouseDragged = this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateMap(map: GameMap) {
|
fun updateMap(map: GameMap) {
|
||||||
@@ -18,4 +20,13 @@ class MapPane : Canvas() {
|
|||||||
height = map.height.toDouble()
|
height = map.height.toDouble()
|
||||||
mapCanvas.updateMap(map)
|
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 com.bartlomiejpluta.base.editor.view.component.map.MapPane
|
||||||
import javafx.beans.property.SimpleDoubleProperty
|
import javafx.beans.property.SimpleDoubleProperty
|
||||||
import javafx.scene.transform.Scale
|
import javafx.scene.transform.Scale
|
||||||
import tornadofx.*
|
import tornadofx.Fragment
|
||||||
|
import tornadofx.group
|
||||||
|
import tornadofx.plusAssign
|
||||||
|
import tornadofx.scrollpane
|
||||||
|
|
||||||
class MapFragment : Fragment() {
|
class MapFragment : Fragment() {
|
||||||
private val pane = MapPane()
|
private val pane = MapPane()
|
||||||
@@ -17,6 +20,7 @@ class MapFragment : Fragment() {
|
|||||||
|
|
||||||
fun updateMap(map: GameMap) {
|
fun updateMap(map: GameMap) {
|
||||||
pane.updateMap(map)
|
pane.updateMap(map)
|
||||||
|
pane.render()
|
||||||
}
|
}
|
||||||
|
|
||||||
override val root = scrollpane {
|
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