feat: Introduce Dungeon Object Emulator Preview and Object Drawing Enhancements

- Added DungeonObjectEmulatorPreview for rendering dungeon objects using the SNES emulator, allowing real-time visualization of object graphics.
- Implemented ObjectDrawer class to handle drawing of various object types to background buffers, utilizing game-specific patterns.
- Updated DungeonCanvasViewer to integrate object rendering and improve background layer management.
- Enhanced DungeonEditorV2 to support the new emulator preview, providing a more interactive editing experience.
- Improved error handling and logging for better debugging during object rendering operations.
This commit is contained in:
scawful
2025-10-06 23:39:45 -04:00
parent 7f71fd9e80
commit eda582f740
13 changed files with 757 additions and 56 deletions

View File

@@ -13,6 +13,7 @@
#include "app/zelda3/dungeon/room.h"
#include "app/zelda3/dungeon/room_entrance.h"
#include "app/gui/editor_layout.h"
#include "app/gui/widgets/dungeon_object_emulator_preview.h"
#include "imgui/imgui.h"
namespace yaze {
@@ -39,7 +40,8 @@ class DungeonEditorV2 : public Editor {
room_loader_(rom),
room_selector_(rom),
canvas_viewer_(rom),
object_selector_(rom) {
object_selector_(rom),
object_emulator_preview_() {
type_ = EditorType::kDungeon;
}
@@ -62,6 +64,7 @@ class DungeonEditorV2 : public Editor {
room_selector_.set_rom(rom);
canvas_viewer_.SetRom(rom);
object_selector_.SetRom(rom);
object_emulator_preview_.Initialize(rom);
}
Rom* rom() const { return rom_; }
@@ -105,6 +108,7 @@ class DungeonEditorV2 : public Editor {
DungeonRoomSelector room_selector_;
DungeonCanvasViewer canvas_viewer_;
DungeonObjectSelector object_selector_;
gui::DungeonObjectEmulatorPreview object_emulator_preview_;
bool is_loaded_ = false;
};