Handles all canvas drawing and panel rendering for the overworld editor. More...
#include <overworld_canvas_renderer.h>

Classes | |
| struct | OverlayLayer |
Public Member Functions | |
| OverworldCanvasRenderer (OverworldEditor *editor) | |
| void | DrawOverworldCanvas () |
| Draw the main overworld canvas with toolbar, maps, and entities. This is the primary entry point called from the OverworldCanvasPanel. | |
| absl::Status | DrawTile16Selector () |
| Draw the tile16 selector panel. | |
| void | DrawTile8Selector () |
| Draw the tile8 selector panel (graphics bin) | |
| absl::Status | DrawAreaGraphics () |
| Draw the area graphics panel. | |
| void | DrawV3Settings () |
| Draw the v3 settings panel. | |
| void | DrawMapProperties () |
| Draw the map properties panel (sidebar-based) | |
| void | DrawOverworldProperties () |
| Draw the overworld properties grid (debug/info view) | |
Private Member Functions | |
| void | DrawOverworldMaps () |
| Render the 64 overworld map bitmaps to the canvas. | |
| void | DrawMapWithAreaLayers (int map_index, int map_x, int map_y, float scale) |
| OverlayLayer * | EnsureOverlayLayer (int map_index) |
| bool | PrepareContextMenu (const ImVec2 &screen_position) |
| void | FilterHoveredEntityByMode () |
| In an entity mode only that entity type responds to hover/drag/menu. | |
Private Attributes | |
| std::unordered_map< int, OverlayLayer > | overlay_layers_ |
| OverworldEditor * | editor_ |
| Non-owning pointer to the parent editor. | |
| gui::AdaptiveSheetScaleMode | tile16_scale_mode_ |
| gui::AdaptiveSheetScaleMode | area_graphics_scale_mode_ |
Handles all canvas drawing and panel rendering for the overworld editor.
Extracted from OverworldEditor to separate rendering concerns from editing logic. This class handles:
All state is accessed through a pointer to the owning OverworldEditor. The renderer is declared as a friend class of OverworldEditor for direct member access.
Definition at line 32 of file overworld_canvas_renderer.h.
|
explicit |
Definition at line 64 of file overworld_canvas_renderer.cc.
References editor_, yaze::editor::OverworldEditor::ow_map_canvas_, PrepareContextMenu(), yaze::gui::Canvas::SetContextMenuOpenCallback(), and yaze::gui::Canvas::SetShowBuiltinContextMenu().

| void yaze::editor::OverworldCanvasRenderer::DrawOverworldCanvas | ( | ) |
Draw the main overworld canvas with toolbar, maps, and entities. This is the primary entry point called from the OverworldCanvasPanel.
Definition at line 79 of file overworld_canvas_renderer.cc.
References yaze::editor::OverworldEditor::current_map_, yaze::editor::OverworldEditor::current_map_lock_, yaze::editor::OverworldEditor::current_mode, yaze::editor::OverworldEditor::current_world_, yaze::editor::Editor::dependencies_, editor_, yaze::editor::OverworldEditor::entity_edit_mode_, yaze::editor::OverworldEditor::game_state_, yaze::Rom::is_loaded(), yaze::zelda3::Overworld::is_loaded(), yaze::zelda3::Overworld::is_lyra_preview(), yaze::editor::OverworldEditor::JumpToMap(), yaze::editor::OverworldEditor::NormalizeCurrentSelectionState(), yaze::editor::OverworldEditor::overworld_, yaze::editor::EditorDependencies::project, yaze::editor::OverworldEditor::rom_, yaze::editor::EditorDependencies::shortcut_manager, yaze::editor::OverworldEditor::toolbar_, and yaze::editor::EditorDependencies::window_manager.
| absl::Status yaze::editor::OverworldCanvasRenderer::DrawTile16Selector | ( | ) |
Draw the tile16 selector panel.
Definition at line 477 of file overworld_canvas_renderer.cc.
References yaze::gui::CanvasMenuItem::callback, yaze::gui::TileSelectorWidget::CurrentScrollbarSize(), yaze::gui::AdaptiveSheetLayout::display_scale, yaze::gui::TileSelectorWidget::Config::display_scale, yaze::gui::TileSelectorWidget::Config::draw_offset, yaze::gui::TileSelectorWidget::Config::enable_drag, yaze::gui::CanvasMenuItem::enabled_condition, yaze::gui::TileSelectorWidget::Config::highlight_color, yaze::gui::CanvasMenuItem::icon, ICON_MD_GRID_VIEW, ICON_MD_IMAGE, yaze::gfx::Bitmap::is_active(), yaze::zelda3::kNumTile16Individual, yaze::editor::kTile16SelectorColumns, yaze::editor::kTile16SelectorDrawOffsetX, yaze::editor::kTile16SelectorScale, yaze::gui::CanvasMenuItem::label, yaze::gui::ResolveAdaptiveSheetLayout(), yaze::gui::CanvasMenuItem::shortcut, yaze::gui::TileSelectorWidget::Config::show_hover_tooltip, yaze::gui::TileSelectorWidget::Config::tile_size, yaze::gui::TileSelectorWidget::Config::tiles_per_row, and yaze::gui::TileSelectorWidget::Config::total_tiles.

| void yaze::editor::OverworldCanvasRenderer::DrawTile8Selector | ( | ) |
Draw the tile8 selector panel (graphics bin)
Definition at line 597 of file overworld_canvas_renderer.cc.
References yaze::gui::BeginCanvas(), yaze::gui::CanvasFrameOptions::canvas_size, yaze::gui::CanvasFrameOptions::draw_context_menu, yaze::gui::CanvasFrameOptions::draw_grid, yaze::gui::CanvasFrameOptions::draw_overlay, yaze::gui::EndCanvas(), yaze::gfx::Arena::Get(), yaze::gfx::Arena::gfx_sheets(), yaze::gui::CanvasFrameOptions::grid_step, yaze::editor::kGraphicsBinCanvasSize(), yaze::gui::CanvasFrameOptions::render_popups, and yaze::gui::CanvasFrameOptions::use_child_window.
| absl::Status yaze::editor::OverworldCanvasRenderer::DrawAreaGraphics | ( | ) |
Draw the area graphics panel.
Definition at line 631 of file overworld_canvas_renderer.cc.
References yaze::gui::BeginCanvas(), yaze::gui::BeginChildWithScrollbar(), yaze::gui::BeginPadding(), yaze::gui::CanvasFrameOptions::canvas_size, yaze::gfx::Arena::CREATE, yaze::gui::AdaptiveSheetLayout::display_scale, yaze::gui::AdaptiveSheetLayout::displayed_height, yaze::gui::AdaptiveSheetLayout::displayed_width, yaze::gui::CanvasFrameOptions::draw_context_menu, yaze::gui::CanvasFrameOptions::draw_grid, yaze::gui::CanvasFrameOptions::draw_overlay, yaze::gui::EndCanvas(), yaze::gui::EndPadding(), yaze::gfx::Arena::Get(), yaze::gui::CanvasFrameOptions::grid_step, yaze::editor::kOverworldMapSize, yaze::gfx::Arena::QueueTextureCommand(), yaze::gui::CanvasFrameOptions::render_popups, yaze::gui::ResolveAdaptiveSheetLayout(), and yaze::gui::CanvasFrameOptions::use_child_window.
| void yaze::editor::OverworldCanvasRenderer::DrawV3Settings | ( | ) |
Draw the v3 settings panel.
Definition at line 697 of file overworld_canvas_renderer.cc.
References yaze::gui::CenterText(), ICON_MD_SAVE, and yaze::zelda3::OverworldCustomASMHasBeenApplied.

| void yaze::editor::OverworldCanvasRenderer::DrawMapProperties | ( | ) |
Draw the map properties panel (sidebar-based)
Definition at line 779 of file overworld_canvas_renderer.cc.
| void yaze::editor::OverworldCanvasRenderer::DrawOverworldProperties | ( | ) |
Draw the overworld properties grid (debug/info view)
Definition at line 791 of file overworld_canvas_renderer.cc.
References yaze::gui::BeginWindowWithDisplaySettings(), and yaze::gui::EndWindowWithDisplaySettings().

|
private |
Render the 64 overworld map bitmaps to the canvas.
Definition at line 373 of file overworld_canvas_renderer.cc.
References IM_PI, and yaze::editor::kOverworldMapSize.
|
private |
Definition at line 295 of file overworld_canvas_renderer.cc.
References yaze::editor::kOverworldMapSize.
|
private |
Definition at line 328 of file overworld_canvas_renderer.cc.
References yaze::gfx::Arena::CREATE, yaze::gfx::Arena::Get(), yaze::editor::OverworldCanvasRenderer::OverlayLayer::has_overlay, yaze::editor::kOverworldMapSize, yaze::gfx::Arena::QueueTextureCommand(), yaze::zelda3::SubscreenOverlayScreen(), and yaze::gfx::Arena::UPDATE.

|
private |
Definition at line 12 of file overworld_context_actions.cc.
References yaze::gui::Canvas::ClearContextMenuItems(), yaze::editor::OverworldEditor::current_map_lock_, yaze::editor::OverworldEditor::current_mode, yaze::editor::OverworldEditor::current_world_, yaze::editor::Editor::dependencies_, editor_, yaze::editor::OverworldEditor::entity_renderer_, yaze::editor::OverworldEditor::game_state_, yaze::Rom::is_loaded(), yaze::zelda3::Overworld::is_loaded(), yaze::zelda3::Overworld::is_lyra_preview(), yaze::editor::OverworldEditor::map_properties_system_, yaze::editor::MOUSE, yaze::zelda3::Overworld::mutable_map_tiles(), yaze::editor::OverworldEditor::overworld_, yaze::zelda3::Overworld::overworld_map(), yaze::editor::OverworldEditor::ow_map_canvas_, yaze::editor::EditorDependencies::project, yaze::editor::ResolveOverworldContextTarget(), yaze::editor::OverworldEditor::rom_, and yaze::editor::EditorDependencies::shared_clipboard.
Referenced by OverworldCanvasRenderer().
|
private |
In an entity mode only that entity type responds to hover/drag/menu.
Definition at line 751 of file overworld_canvas_renderer.cc.
|
private |
Definition at line 84 of file overworld_canvas_renderer.h.
|
private |
Non-owning pointer to the parent editor.
Definition at line 93 of file overworld_canvas_renderer.h.
Referenced by DrawOverworldCanvas(), OverworldCanvasRenderer(), and PrepareContextMenu().
|
private |
Definition at line 94 of file overworld_canvas_renderer.h.
|
private |
Definition at line 96 of file overworld_canvas_renderer.h.