Handles object selection, preview, and editing UI. More...
#include <dungeon_object_selector.h>
Static Public Member Functions | |
| static bool | IsRepresentableChestObjectId (int object_id) |
Private Types | |
| enum class | BrowserMode { kObjects , kCustomAssets } |
Private Member Functions | |
| bool | MatchesObjectFilter (int obj_id, int filter_type) |
| bool | MatchesObjectSearch (int obj_id, const std::string &name, int subtype=-1) const |
| void | CalculateObjectDimensions (const zelda3::RoomObject &object, int &width, int &height) |
| bool | DrawObjectPreview (const zelda3::RoomObject &object, ImVec2 top_left, ImVec2 box_size) |
| zelda3::RoomObject | MakePreviewObject (int obj_id) const |
| void | EnsureRegistryInitialized () |
| ImU32 | GetObjectTypeColor (int object_id) |
| std::string | GetObjectTypeSymbol (int object_id) |
| absl::Status | GetCustomObjectAssetStatus (int object_id, int subtype) |
| void | DrawCustomObjectAssetBrowser () |
| absl::Status | OpenExistingCustomObjectEditor (int16_t object_id, int subtype, int room_id) |
| void | RetirePreviewCache () |
| void | SynchronizePreviewCacheRoomContext (const zelda3::Room &room) |
| bool | GetOrCreatePreview (const zelda3::RoomObject &object, gfx::BackgroundBuffer **out) |
Static Private Member Functions | |
| static uint32_t | MakeLayoutCacheKey (int object_id, uint8_t preview_size, const zelda3::Room *room) |
Friends | |
| struct | DungeonObjectSelectorTestAccess |
Handles object selection, preview, and editing UI.
Definition at line 62 of file dungeon_object_selector.h.
|
strongprivate |
| Enumerator | |
|---|---|
| kObjects | |
| kCustomAssets | |
Definition at line 155 of file dungeon_object_selector.h.
|
inlineexplicit |
Definition at line 64 of file dungeon_object_selector.h.
| yaze::editor::DungeonObjectSelector::~DungeonObjectSelector | ( | ) |
Definition at line 217 of file dungeon_object_selector.cc.
References RetirePreviewCache().

|
inline |
Definition at line 68 of file dungeon_object_selector.h.
References yaze::editor::EditorContext::game_data, game_data_, yaze::editor::EditorContext::rom, and rom_.
Referenced by yaze::editor::ObjectSelectorContent::SetContext().
|
inline |
Definition at line 72 of file dungeon_object_selector.h.
References game_data_, and rom_.
|
inline |
|
inline |
|
inline |
Definition at line 77 of file dungeon_object_selector.h.
References game_data(), and game_data_.
Referenced by yaze::editor::ObjectSelectorContent::SetGameData().

|
inline |
Definition at line 78 of file dungeon_object_selector.h.
References game_data_.
Referenced by SetGameData().
|
inline |
Definition at line 81 of file dungeon_object_selector.h.
References rooms_.
Referenced by yaze::editor::ObjectSelectorContent::SetRooms().
|
inline |
Definition at line 82 of file dungeon_object_selector.h.
References rooms_.
Referenced by yaze::editor::ObjectSelectorContent::DrawInteractionSummary().
|
inline |
Definition at line 83 of file dungeon_object_selector.h.
References current_room_id_.
Referenced by yaze::editor::ObjectSelectorContent::SetCurrentRoom().
|
inline |
Definition at line 93 of file dungeon_object_selector.h.
References current_palette_group_, and InvalidatePreviewCache().
Referenced by yaze::editor::ObjectSelectorContent::SetCurrentPaletteGroup().

|
inline |
Definition at line 98 of file dungeon_object_selector.h.
References object_selected_callback_.
Referenced by yaze::editor::ObjectSelectorContent::ObjectSelectorContent().
|
inline |
Definition at line 102 of file dungeon_object_selector.h.
References placement_invalidated_callback_.
Referenced by yaze::editor::ObjectSelectorContent::ObjectSelectorContent().
|
inline |
Definition at line 107 of file dungeon_object_selector.h.
References preview_object_.
|
inline |
Definition at line 108 of file dungeon_object_selector.h.
References object_loaded_.
| void yaze::editor::DungeonObjectSelector::DrawObjectAssetBrowser | ( | ) |
Definition at line 320 of file dungeon_object_selector.cc.
References yaze::zelda3::DrawRoutineSymbology::badge, yaze::gui::BeginRoomObjectDragSource(), browser_mode_, yaze::zelda3::ObjectTileEditor::CaptureObjectLayout(), current_palette_group_, current_room_id_, yaze::Rom::data(), yaze::zelda3::DefaultRoomObjectSizeForPlacement(), DrawCustomObjectAssetBrowser(), DrawObjectPreview(), yaze::zelda3::DrawRoutineSymbology::dual_layer, enable_object_previews_, yaze::zelda3::DrawRoutineSymbology::family, yaze::core::FeatureFlags::get(), yaze::zelda3::CustomObjectManager::Get(), yaze::zelda3::ObjectDrawer::GetDrawRoutineId(), yaze::zelda3::GetObjectName(), yaze::zelda3::GetObjectSubtype(), GetObjectTypeColor(), GetObjectTypeSymbol(), yaze::zelda3::GetSymbologyForObject(), yaze::editor::AgentUI::GetTheme(), kCustomAssets, yaze::core::FeatureFlags::Flags::kEnableCustomObjects, yaze::zelda3::kNumberOfRooms, kObjects, layout_cache_, MakeLayoutCacheKey(), MakePreviewObject(), yaze::editor::MatchesDungeonObjectStreamFilter(), MatchesObjectFilter(), MatchesObjectSearch(), object_grid_density_, object_search_buffer_, object_stream_filter_, object_type_filter_, yaze::editor::ResolveDungeonObjectSelectorGridLayout(), rom_, rooms_, yaze::zelda3::CustomObjectManager::RuntimeObjectIds(), yaze::zelda3::CustomObjectManager::RuntimeSubtypeCountForObject(), selected_object_id_, SelectObject(), and SynchronizeCustomObjectGeneration().
Referenced by yaze::editor::ObjectSelectorContent::DrawObjectSelector().
| void yaze::editor::DungeonObjectSelector::SelectObject | ( | int | obj_id, |
| int | subtype = -1 ) |
Definition at line 269 of file dungeon_object_selector.cc.
References yaze::zelda3::CanonicalRoomObjectSize(), yaze::zelda3::DefaultRoomObjectSizeForPlacement(), yaze::core::FeatureFlags::get(), yaze::zelda3::CustomObjectManager::Get(), GetCustomObjectAssetStatus(), yaze::zelda3::CustomObjectManager::GetObjectInternal(), yaze::editor::IsDungeonCustomObjectRuntimeSlot(), yaze::core::FeatureFlags::Flags::kEnableCustomObjects, object_loaded_, object_selected_callback_, preview_object_, preview_uses_custom_override_, rom_, yaze::zelda3::CustomObjectManager::RuntimeSubtypeCountForObject(), selected_object_id_, yaze::zelda3::RoomObject::SetRom(), yaze::zelda3::RoomObject::size_, and SynchronizeCustomObjectGeneration().
Referenced by DrawCustomObjectAssetBrowser(), DrawObjectAssetBrowser(), and yaze::editor::ObjectSelectorContent::SelectObject().
|
inline |
Definition at line 117 of file dungeon_object_selector.h.
References tile_editor_panel_.
Referenced by yaze::editor::DungeonEditorV2::Load().
|
inline |
Definition at line 120 of file dungeon_object_selector.h.
References open_tile_editor_window_callback_.
Referenced by yaze::editor::DungeonEditorV2::Load().
|
inline |
Definition at line 123 of file dungeon_object_selector.h.
References open_minecart_editor_window_callback_.
Referenced by yaze::editor::DungeonEditorV2::Load().
| void yaze::editor::DungeonObjectSelector::InvalidatePreviewCache | ( | ) |
Definition at line 910 of file dungeon_object_selector.cc.
References custom_asset_status_cache_, layout_cache_, preview_cache_invalidations_, and RetirePreviewCache().
Referenced by DetachRuntimeContext(), yaze::editor::DungeonEditorV2::Load(), yaze::editor::DungeonEditorV2::RefreshRomBackedState(), SetCurrentPaletteGroup(), SynchronizeCustomObjectGeneration(), and SynchronizePreviewCacheRoomContext().

| void yaze::editor::DungeonObjectSelector::SynchronizeCustomObjectGeneration | ( | ) |
Definition at line 786 of file dungeon_object_selector.cc.
References yaze::zelda3::CustomObjectManager::asset_generation(), yaze::editor::DungeonRoomStore::ForEachMaterialized(), yaze::core::FeatureFlags::get(), yaze::zelda3::CustomObjectManager::Get(), GetCustomObjectAssetStatus(), yaze::zelda3::RoomObject::id_, InvalidatePreviewCache(), yaze::editor::IsDungeonCustomObjectRuntimeSlot(), yaze::core::FeatureFlags::Flags::kEnableCustomObjects, yaze::zelda3::Room::MarkObjectsDirty(), object_loaded_, object_selected_callback_, observed_custom_object_generation_, observed_custom_objects_enabled_, placement_invalidated_callback_, preview_object_, preview_uses_custom_override_, rooms_, selected_object_id_, and yaze::zelda3::RoomObject::size_.
Referenced by DrawCustomObjectAssetBrowser(), DrawObjectAssetBrowser(), GetOrCreatePreview(), SelectObject(), and yaze::editor::DungeonEditorV2::SynchronizeCustomObjectAssets().
| void yaze::editor::DungeonObjectSelector::DetachRuntimeContext | ( | ) |
Definition at line 863 of file dungeon_object_selector.cc.
References yaze::zelda3::CustomObjectManager::asset_generation(), custom_object_action_error_, game_data_, yaze::core::FeatureFlags::get(), yaze::zelda3::CustomObjectManager::Get(), InvalidatePreviewCache(), yaze::core::FeatureFlags::Flags::kEnableCustomObjects, object_loaded_, observed_custom_object_generation_, observed_custom_objects_enabled_, open_minecart_editor_window_callback_, open_tile_editor_window_callback_, placement_invalidated_callback_, preview_uses_custom_override_, rom_, rooms_, selected_object_id_, and tile_editor_panel_.
Referenced by yaze::editor::ObjectSelectorContent::DetachRuntimeContext().

|
inline |
Definition at line 138 of file dungeon_object_selector.h.
References preview_cache_invalidations_.
|
inline |
Definition at line 141 of file dungeon_object_selector.h.
References enable_object_previews_.
|
inline |
Definition at line 144 of file dungeon_object_selector.h.
References selected_object_id_.
|
inline |
Definition at line 145 of file dungeon_object_selector.h.
References MatchesObjectFilter().

|
inline |
Definition at line 148 of file dungeon_object_selector.h.
References GetObjectTypeSymbol().

|
static |
Definition at line 221 of file dungeon_object_selector.cc.
References yaze::zelda3::ObjectCategories::GetObjectCategory().

|
private |
Definition at line 720 of file dungeon_object_selector.cc.
References yaze::zelda3::ObjectCategories::GetObjectCategory().
Referenced by DrawObjectAssetBrowser(), and matches_object_filter_for_testing().

|
private |
Definition at line 730 of file dungeon_object_selector.cc.
References object_search_buffer_.
Referenced by DrawObjectAssetBrowser().
|
private |
Definition at line 772 of file dungeon_object_selector.cc.
References yaze::zelda3::DimensionService::Get(), and yaze::zelda3::DimensionService::GetPixelDimensions().

|
private |
Definition at line 1066 of file dungeon_object_selector.cc.
References yaze::gfx::BackgroundBuffer::bitmap(), GetOrCreatePreview(), yaze::editor::DungeonObjectPreviewFit::height, yaze::editor::ResolveDungeonObjectPreviewFit(), yaze::editor::DungeonObjectPreviewFit::valid, yaze::editor::DungeonObjectPreviewFit::width, yaze::editor::DungeonObjectPreviewFit::x, and yaze::editor::DungeonObjectPreviewFit::y.
Referenced by DrawCustomObjectAssetBrowser(), and DrawObjectAssetBrowser().

|
private |
Definition at line 903 of file dungeon_object_selector.cc.
References yaze::zelda3::DefaultRoomObjectSizeForPlacement(), rom_, and yaze::zelda3::RoomObject::SetRom().
Referenced by DrawCustomObjectAssetBrowser(), and DrawObjectAssetBrowser().

|
private |
Definition at line 779 of file dungeon_object_selector.cc.
References object_registry_, yaze::zelda3::DungeonObjectRegistry::RegisterVanillaRange(), and registry_initialized_.

|
private |
Definition at line 226 of file dungeon_object_selector.cc.
References yaze::zelda3::ObjectCategories::GetObjectCategory(), and yaze::editor::AgentUI::GetTheme().
Referenced by DrawObjectAssetBrowser().

|
private |
Definition at line 248 of file dungeon_object_selector.cc.
References yaze::zelda3::ObjectCategories::GetObjectCategory().
Referenced by DrawObjectAssetBrowser(), and object_type_symbol_for_testing().

|
private |
Definition at line 882 of file dungeon_object_selector.cc.
References custom_asset_status_cache_, yaze::zelda3::CustomObjectManager::Get(), yaze::zelda3::CustomObjectManager::GetObjectInternal(), and yaze::editor::IsDungeonCustomObjectRuntimeSlot().
Referenced by DrawCustomObjectAssetBrowser(), SelectObject(), and SynchronizeCustomObjectGeneration().

|
private |
Definition at line 1119 of file dungeon_object_selector.cc.
References yaze::gui::BeginRoomObjectDragSource(), yaze::zelda3::CanonicalRoomObjectSize(), current_room_id_, custom_asset_family_id_, custom_asset_subtype_, custom_object_action_error_, DrawObjectPreview(), enable_object_previews_, yaze::core::FeatureFlags::get(), yaze::zelda3::CustomObjectManager::Get(), GetCustomObjectAssetStatus(), yaze::editor::GetDungeonCustomObjectSlotName(), yaze::editor::DungeonRoomStore::GetIfLoaded(), yaze::editor::AgentUI::GetTheme(), ICON_MD_ADD, ICON_MD_CHECK_CIRCLE, ICON_MD_EDIT, ICON_MD_ERROR, ICON_MD_FOLDER, ICON_MD_INFO, ICON_MD_PRECISION_MANUFACTURING, ICON_MD_REFRESH, ICON_MD_TRAIN, ICON_MD_WARNING, yaze::editor::IsMinecartGraphicsRuntimeSlot(), yaze::zelda3::kConfiguredFilename, MakePreviewObject(), object_grid_density_, open_minecart_editor_window_callback_, OpenExistingCustomObjectEditor(), yaze::zelda3::ResolveCustomObjectAssetPath(), yaze::editor::ResolveDungeonObjectSelectorGridLayout(), rooms_, yaze::zelda3::CustomObjectManager::RuntimeObjectIds(), SelectObject(), SynchronizeCustomObjectGeneration(), and tile_editor_panel_.
Referenced by DrawObjectAssetBrowser().
|
private |
Definition at line 1095 of file dungeon_object_selector.cc.
References yaze::editor::ObjectTileEditorPanel::Close(), current_palette_group_, yaze::editor::ObjectTileEditorPanel::IsOpen(), open_tile_editor_window_callback_, yaze::editor::ObjectTileEditorPanel::OpenForCustomObject(), rooms_, and tile_editor_panel_.
Referenced by DrawCustomObjectAssetBrowser().

|
private |
Definition at line 917 of file dungeon_object_selector.cc.
References yaze::gfx::Arena::Get(), and preview_cache_.
Referenced by InvalidatePreviewCache(), and ~DungeonObjectSelector().

|
private |
Definition at line 928 of file dungeon_object_selector.cc.
References yaze::zelda3::Room::blockset(), cached_preview_blockset_, cached_preview_entrance_blockset_, cached_preview_floor1_, cached_preview_floor2_, cached_preview_graphics_revision_, cached_preview_palette_, cached_preview_room_id_, current_room_id_, yaze::zelda3::Room::floor1(), yaze::zelda3::Room::floor2(), yaze::zelda3::Room::graphics_revision(), InvalidatePreviewCache(), yaze::zelda3::Room::palette(), and yaze::zelda3::Room::render_entrance_blockset().
Referenced by GetOrCreatePreview().
|
staticprivate |
Definition at line 950 of file dungeon_object_selector.cc.
References yaze::zelda3::Room::floor1(), and yaze::zelda3::Room::floor2().
Referenced by DrawObjectAssetBrowser().

|
private |
Definition at line 966 of file dungeon_object_selector.cc.
References yaze::gfx::BackgroundBuffer::bitmap(), cached_preview_blockset_, cached_preview_floor1_, cached_preview_floor2_, cached_preview_palette_, yaze::zelda3::CanonicalRoomObjectSize(), yaze::zelda3::ObjectTileEditor::CaptureObjectLayout(), yaze::gfx::Arena::CREATE, current_palette_group_, current_room_id_, yaze::gfx::Arena::Get(), yaze::zelda3::Room::get_gfx_buffer(), yaze::editor::DungeonRoomStore::GetIfLoaded(), yaze::Rom::is_loaded(), preview_cache_, yaze::gfx::Arena::ProcessTextureQueue(), yaze::gfx::Arena::QueueTextureCommand(), yaze::zelda3::ObjectTileEditor::RenderLayoutToBitmap(), yaze::gfx::Arena::RetireBitmap(), rom_, rooms_, SynchronizeCustomObjectGeneration(), and SynchronizePreviewCacheRoomContext().
Referenced by DrawObjectPreview().
|
friend |
Definition at line 154 of file dungeon_object_selector.h.
|
private |
Definition at line 176 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser().
|
private |
Definition at line 177 of file dungeon_object_selector.h.
Referenced by DrawCustomObjectAssetBrowser().
|
private |
Definition at line 178 of file dungeon_object_selector.h.
Referenced by DrawCustomObjectAssetBrowser().
|
private |
Definition at line 181 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), DrawCustomObjectAssetBrowser(), OpenExistingCustomObjectEditor(), and SetTileEditorPanel().
|
private |
Definition at line 182 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), OpenExistingCustomObjectEditor(), and SetOpenTileEditorWindowCallback().
|
private |
Definition at line 183 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), DrawCustomObjectAssetBrowser(), and SetOpenMinecartEditorWindowCallback().
|
private |
Definition at line 184 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), and DrawCustomObjectAssetBrowser().
|
private |
Definition at line 186 of file dungeon_object_selector.h.
Referenced by context(), DetachRuntimeContext(), DrawObjectAssetBrowser(), GetOrCreatePreview(), MakePreviewObject(), rom(), SelectObject(), SetContext(), and SetRom().
|
private |
Definition at line 187 of file dungeon_object_selector.h.
Referenced by context(), DetachRuntimeContext(), game_data(), SetContext(), and SetGameData().
|
private |
Definition at line 188 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), and SynchronizeCustomObjectGeneration().
|
private |
Definition at line 189 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), and SynchronizeCustomObjectGeneration().
|
private |
Definition at line 190 of file dungeon_object_selector.h.
Referenced by GetCustomObjectAssetStatus(), and InvalidatePreviewCache().
|
private |
Definition at line 193 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), DrawCustomObjectAssetBrowser(), DrawObjectAssetBrowser(), get_rooms(), GetOrCreatePreview(), OpenExistingCustomObjectEditor(), set_rooms(), and SynchronizeCustomObjectGeneration().
|
private |
Definition at line 194 of file dungeon_object_selector.h.
Referenced by DrawCustomObjectAssetBrowser(), DrawObjectAssetBrowser(), GetOrCreatePreview(), set_current_room_id(), and SynchronizePreviewCacheRoomContext().
|
private |
Definition at line 197 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser(), GetOrCreatePreview(), OpenExistingCustomObjectEditor(), and SetCurrentPaletteGroup().
|
private |
Definition at line 199 of file dungeon_object_selector.h.
Referenced by EnsureRegistryInitialized().
|
private |
Definition at line 202 of file dungeon_object_selector.h.
Referenced by GetPreviewObject(), SelectObject(), and SynchronizeCustomObjectGeneration().
|
private |
Definition at line 203 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), IsObjectLoaded(), SelectObject(), and SynchronizeCustomObjectGeneration().
|
private |
Definition at line 204 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), SelectObject(), and SynchronizeCustomObjectGeneration().
|
private |
Definition at line 207 of file dungeon_object_selector.h.
Referenced by SelectObject(), SetObjectSelectedCallback(), and SynchronizeCustomObjectGeneration().
|
private |
Definition at line 208 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), SetPlacementInvalidatedCallback(), and SynchronizeCustomObjectGeneration().
|
private |
Definition at line 211 of file dungeon_object_selector.h.
Referenced by DetachRuntimeContext(), DrawObjectAssetBrowser(), selected_object_id_for_testing(), SelectObject(), and SynchronizeCustomObjectGeneration().
|
private |
Definition at line 214 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser().
|
private |
Definition at line 215 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser().
|
private |
Definition at line 216 of file dungeon_object_selector.h.
Referenced by DrawCustomObjectAssetBrowser(), and DrawObjectAssetBrowser().
|
private |
Definition at line 217 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser(), and MatchesObjectSearch().
|
private |
Definition at line 220 of file dungeon_object_selector.h.
Referenced by EnsureRegistryInitialized().
|
private |
Definition at line 223 of file dungeon_object_selector.h.
Referenced by DrawCustomObjectAssetBrowser(), DrawObjectAssetBrowser(), and object_previews_enabled_for_testing().
|
private |
Definition at line 228 of file dungeon_object_selector.h.
Referenced by GetOrCreatePreview(), and RetirePreviewCache().
|
private |
Definition at line 229 of file dungeon_object_selector.h.
Referenced by GetOrCreatePreview(), and SynchronizePreviewCacheRoomContext().
|
private |
Definition at line 230 of file dungeon_object_selector.h.
Referenced by SynchronizePreviewCacheRoomContext().
|
private |
Definition at line 231 of file dungeon_object_selector.h.
Referenced by GetOrCreatePreview(), and SynchronizePreviewCacheRoomContext().
|
private |
Definition at line 232 of file dungeon_object_selector.h.
Referenced by GetOrCreatePreview(), and SynchronizePreviewCacheRoomContext().
|
private |
Definition at line 233 of file dungeon_object_selector.h.
Referenced by GetOrCreatePreview(), and SynchronizePreviewCacheRoomContext().
|
private |
Definition at line 234 of file dungeon_object_selector.h.
Referenced by SynchronizePreviewCacheRoomContext().
|
private |
Definition at line 235 of file dungeon_object_selector.h.
Referenced by SynchronizePreviewCacheRoomContext().
|
private |
Definition at line 237 of file dungeon_object_selector.h.
Referenced by DrawObjectAssetBrowser(), and InvalidatePreviewCache().
|
private |
Definition at line 241 of file dungeon_object_selector.h.
Referenced by InvalidatePreviewCache(), and preview_cache_invalidations_for_testing().