1#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_OBJECT_INTERACTION_H
2#define YAZE_APP_EDITOR_DUNGEON_DUNGEON_OBJECT_INTERACTION_H
7#include "imgui/imgui.h"
47 void SetCurrentRoom(std::array<zelda3::Room, 0x128>* rooms,
int room_id);
71 std::array<zelda3::Room, 0x128>*
rooms_ =
nullptr;
Handles object selection, placement, and interaction within the dungeon canvas.
void HandleDeleteSelected()
std::array< zelda3::Room, 0x128 > * rooms_
bool IsWithinCanvasBounds(int canvas_x, int canvas_y, int margin=32) const
void SetCacheInvalidationCallback(std::function< void()> callback)
void SetCurrentRoom(std::array< zelda3::Room, 0x128 > *rooms, int room_id)
void HandleCanvasMouseInput()
std::pair< int, int > RoomToCanvasCoordinates(int room_x, int room_y) const
bool IsObjectInSelectBox(const zelda3::RoomObject &object) const
void PlaceObjectAtPosition(int room_x, int room_y)
zelda3::RoomObject preview_object_
void SetObjectPlacedCallback(std::function< void(const zelda3::RoomObject &)> callback)
void UpdateSelectedObjects()
void DrawSelectionHighlights()
void DrawObjectSelectRect()
ImVec2 select_current_pos_
bool IsObjectSelectActive() const
std::vector< size_t > selected_object_indices_
DungeonObjectInteraction(gui::Canvas *canvas)
std::vector< int > selected_objects_
ImVec2 object_select_end_
std::vector< zelda3::RoomObject > clipboard_
void HandlePasteObjects()
std::function< void(const zelda3::RoomObject &)> object_placed_callback_
bool object_select_active_
const std::vector< size_t > & GetSelectedObjectIndices() const
void SelectObjectsInRect()
std::pair< int, int > CanvasToRoomCoordinates(int canvas_x, int canvas_y) const
std::function< void()> cache_invalidation_callback_
ImVec2 object_select_start_
void SetPreviewObject(const zelda3::RoomObject &object, bool loaded)
void HandleCopySelected()
void CheckForObjectSelection()
Modern, robust canvas for drawing and manipulating graphics.
Main namespace for the application.