[Editor] Add option to preview all layers in map canvas

This commit is contained in:
2022-08-30 21:22:08 +02:00
parent b5b423b278
commit 0338fa1c07
4 changed files with 20 additions and 8 deletions

View File

@@ -75,6 +75,9 @@ class MapCanvas(val map: GameMapVM, private val editorStateVM: EditorStateVM, pr
renderUnderlyingLayers(gc) renderUnderlyingLayers(gc)
renderCover(gc) renderCover(gc)
renderSelectedLayer(gc) renderSelectedLayer(gc)
if (editorStateVM.renderAllLayers) {
renderOverlappingLayers(gc)
}
renderGrid(gc) renderGrid(gc)
painter.render(gc) painter.render(gc)
} }
@@ -98,6 +101,12 @@ class MapCanvas(val map: GameMapVM, private val editorStateVM: EditorStateVM, pr
} }
} }
private fun renderOverlappingLayers(gc: GraphicsContext) {
for (layer in map.layers.drop(editorStateVM.selectedLayerIndex + 1)) {
dispatchLayerRender(gc, layer)
}
}
private fun dispatchLayerRender(gc: GraphicsContext, layer: Layer) { private fun dispatchLayerRender(gc: GraphicsContext, layer: Layer) {
when (layer) { when (layer) {
is TileLayer -> renderTileLayer(gc, layer) is TileLayer -> renderTileLayer(gc, layer)

View File

@@ -37,6 +37,7 @@ class MapPane(
editorStateVM.showGridProperty.addListener { _, _, _ -> render() } editorStateVM.showGridProperty.addListener { _, _, _ -> render() }
editorStateVM.selectedLayerIndexProperty.addListener { _, _, _ -> render() } editorStateVM.selectedLayerIndexProperty.addListener { _, _, _ -> render() }
editorStateVM.coverUnderlyingLayersProperty.addListener { _, _, _ -> render() } editorStateVM.coverUnderlyingLayersProperty.addListener { _, _, _ -> render() }
editorStateVM.renderAllLayersProperty.addListener { _, _, _ -> render() }
render() render()
} }

View File

@@ -40,7 +40,7 @@ class MapToolbarView : View() {
{ editorStateVM.selectedLayer is AutoTileLayer }, { editorStateVM.selectedLayer is AutoTileLayer },
editorStateVM.selectedLayerProperty editorStateVM.selectedLayerProperty
) )
private val isObjectLayerSelected = Bindings.createBooleanBinding( private val isObjectLayerSelected = Bindings.createBooleanBinding(
{ editorStateVM.selectedLayer is ObjectLayer }, { editorStateVM.selectedLayer is ObjectLayer },
editorStateVM.selectedLayerProperty editorStateVM.selectedLayerProperty
@@ -82,18 +82,17 @@ class MapToolbarView : View() {
togglebutton { togglebutton {
graphic = FontIcon("fa-window-restore") graphic = FontIcon("fa-window-restore")
editorStateVM.coverUnderlyingLayersProperty.bind(selectedProperty())
action {
editorStateVM.coverUnderlyingLayers = isSelected
}
} }
togglebutton { togglebutton {
graphic = FontIcon("fa-th") graphic = FontIcon("fa-th")
editorStateVM.showGridProperty.bind(selectedProperty())
}
action { togglebutton {
editorStateVM.showGrid = isSelected graphic = FontIcon("fa-clone")
} editorStateVM.renderAllLayersProperty.bind(selectedProperty())
} }
separator() separator()

View File

@@ -30,4 +30,7 @@ class EditorStateVM : ViewModel() {
val cursorColumnProperty = SimpleIntegerProperty(-1) val cursorColumnProperty = SimpleIntegerProperty(-1)
val cursorColumn by cursorColumnProperty val cursorColumn by cursorColumnProperty
val renderAllLayersProperty = SimpleBooleanProperty(false)
var renderAllLayers by renderAllLayersProperty
} }