Skip to content

Commit

Permalink
tile map editor panel + palette widget
Browse files Browse the repository at this point in the history
  • Loading branch information
mrDIMAS committed Jul 6, 2024
1 parent cfae992 commit 5ae3df0
Show file tree
Hide file tree
Showing 5 changed files with 452 additions and 35 deletions.
2 changes: 1 addition & 1 deletion editor/src/absm/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ mod connection;
mod node;
mod parameter;
mod segment;
mod selectable;
pub mod selectable;
pub mod selection;
mod socket;
mod state_graph;
Expand Down
17 changes: 8 additions & 9 deletions editor/src/plugins/tilemap/brush.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,13 @@ use crate::fyrox::{
algebra::{Matrix4, Vector2, Vector3},
color::Color,
},
scene::{debug::SceneDrawingContext, tilemap::tileset::TileDefinition},
scene::debug::SceneDrawingContext,
};

#[allow(dead_code)] // TODO
#[derive(Default)]
#[derive(Default, PartialEq, Debug, Clone)]
pub struct BrushTile {
definition: TileDefinition,
local_position: Vector2<i32>,
pub tile_index: usize,
pub local_position: Vector2<i32>,
}

impl BrushTile {
Expand All @@ -35,12 +34,12 @@ impl BrushTile {
}
}

#[derive(Default)]
pub struct Brush {
tiles: Vec<BrushTile>,
#[derive(Default, PartialEq, Debug, Clone)]
pub struct TileMapBrush {
pub tiles: Vec<BrushTile>,
}

impl Brush {
impl TileMapBrush {
pub fn draw_outline(
&self,
ctx: &mut SceneDrawingContext,
Expand Down
26 changes: 20 additions & 6 deletions editor/src/plugins/tilemap/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ pub mod panel;
pub mod tile_set_import;
pub mod tileset;

use crate::plugins::tilemap::palette::PaletteMessage;
use crate::{
fyrox::{
core::{
Expand All @@ -25,7 +26,7 @@ use crate::{
},
interaction::{make_interaction_mode_button, InteractionMode},
plugin::EditorPlugin,
plugins::tilemap::{brush::Brush, panel::TileMapPanel, tileset::TileSetEditor},
plugins::tilemap::{brush::TileMapBrush, panel::TileMapPanel, tileset::TileSetEditor},
scene::{controller::SceneController, GameScene, Selection},
settings::Settings,
Editor, Message,
Expand Down Expand Up @@ -55,7 +56,7 @@ fn make_button(
pub struct TileMapInteractionMode {
#[allow(dead_code)]
tile_map: Handle<Node>,
brush: Arc<Mutex<Brush>>,
brush: Arc<Mutex<TileMapBrush>>,
brush_position: Vector2<i32>,
}

Expand Down Expand Up @@ -180,7 +181,7 @@ impl InteractionMode for TileMapInteractionMode {
#[derive(Default)]
pub struct TileMapEditorPlugin {
tile_set_editor: Option<TileSetEditor>,
brush: Arc<Mutex<Brush>>,
brush: Arc<Mutex<TileMapBrush>>,
panel: Option<TileMapPanel>,
}

Expand All @@ -192,14 +193,26 @@ impl EditorPlugin for TileMapEditorPlugin {
}

fn on_ui_message(&mut self, message: &mut UiMessage, editor: &mut Editor) {
let ui = editor.engine.user_interfaces.first_mut();

if let Some(tile_set_editor) = self.tile_set_editor.take() {
self.tile_set_editor = tile_set_editor.handle_ui_message(
message,
editor.engine.user_interfaces.first_mut(),
ui,
&editor.engine.resource_manager,
&editor.message_sender,
);
}

if let Some(panel) = self.panel.take() {
if let Some(PaletteMessage::Brush(brush)) = message.data() {
if message.destination() == panel.palette {
*self.brush.lock() = brush.clone();
}
}

self.panel = panel.handle_ui_message(message, ui);
}
}

fn on_update(&mut self, _editor: &mut Editor) {
Expand Down Expand Up @@ -241,9 +254,9 @@ impl EditorPlugin for TileMapEditorPlugin {

for node_handle in selection.nodes().iter() {
if let Some(tile_map) = scene.graph.try_get(*node_handle) {
if tile_map.component_ref::<TileMap>().is_none() {
let Some(tile_map) = tile_map.component_ref::<TileMap>() else {
continue;
}
};

entry.interaction_modes.add(TileMapInteractionMode {
tile_map: *node_handle,
Expand All @@ -254,6 +267,7 @@ impl EditorPlugin for TileMapEditorPlugin {
self.panel = Some(TileMapPanel::new(
&mut ui.build_ctx(),
editor.scene_viewer.frame(),
tile_map.tile_set().cloned(),
));

break;
Expand Down
Loading

0 comments on commit 5ae3df0

Please sign in to comment.