18std::vector<DungeonRenderEntranceCandidate>
20 std::vector<DungeonRenderEntranceCandidate> candidates;
24 if (spawn.spawn_id() != slot) {
27 candidates.push_back({
29 .room_id = spawn.room_id,
30 .main_gfx = spawn.main_gfx,
34 slot < static_cast<int>(
entrances_.size()); ++slot) {
36 candidates.push_back({
38 .room_id = entrance.room_,
39 .main_gfx = entrance.blockset_,
52 std::chrono::seconds(0)) != std::future_status::ready) {
64 std::string(census.status().message());
65 LOG_WARN(
"DungeonEditorV2",
"Render-context census failed: %s",
97 auto rom_copy = std::make_shared<Rom>(*
rom_);
106 [rom_copy, project_registry = std::move(project_registry),
107 manifest = std::move(manifest),
108 custom_objects = std::move(custom_objects),
109 addresses = std::move(addresses),
111 zelda3::RoomCensusOptions options;
112 options.stop_token = stop_token;
113 options.project = &project_registry;
114 options.manifest = &manifest;
115 options.custom_objects = &custom_objects;
116 options.address_overrides = &addresses;
117 return zelda3::ComputeRoomCensus(rom_copy.get(), options);
135 uint8_t room_header_blockset = 0xFF;
136 if (room_id >= 0 && room_id <
static_cast<int>(
rooms_.
size())) {
138 room_header_blockset = room->blockset();
140 room_header_blockset =
151 default_entrance = {};
159 candidates, default_entrance, dungeon);
Loads and queries the hack manifest JSON for yaze-ASM integration.
const ProjectRegistry & project_registry() const
bool loaded() const
Check if the manifest has been loaded.
const RomAddressOverrides & address_overrides() const
static RomSettings & Get()
std::optional< zelda3::RoomCensus > dungeon_render_context_census_
DungeonRenderContext ResolveDungeonRenderContextForRoom(int room_id) const
bool dungeon_render_context_census_attempted_
std::array< zelda3::RoomEntrance, zelda3::kNumDungeonEntranceSlots > entrances_
bool automatic_entrance_preview_
std::vector< DungeonRenderEntranceCandidate > BuildDungeonRenderEntranceCandidates() const
RoomMatrixContent * room_matrix_panel_
std::string dungeon_render_context_census_error_
std::array< zelda3::DungeonSpawnPoint, zelda3::kNumDungeonSpawnPoints > spawn_points_
const zelda3::RoomCensus * GetDungeonRenderContextCensus() const
std::future< absl::StatusOr< zelda3::RoomCensus > > dungeon_render_context_census_pending_
void InvalidateDungeonRenderContextCensus()
bool dungeon_render_context_census_shutdown_
uint64_t dungeon_render_context_pending_generation_
uint64_t dungeon_render_context_census_generation_
zelda3::GameData * game_data_
util::StopSource dungeon_render_context_census_stop_
zelda3::Room * GetIfMaterialized(int room_id)
EditorDependencies dependencies_
RoomMatrixCensusOverlay & census_overlay()
StopToken get_token() const noexcept
bool request_stop() noexcept
CustomObjectRenderSnapshot CaptureRenderSnapshot(bool enabled)
static CustomObjectManager & Get()
static DrawRoutineRegistry & Get()
#define LOG_WARN(category, format,...)
const core::DungeonEntry * FindDungeonForRoom(const project::YazeProject *project, int room_id, size_t *dungeon_index=nullptr)
Editors are the view controllers for the application.
DungeonRenderContext ResolveDungeonRenderContext(int room_id, int selected_entrance_slot, uint8_t room_header_blockset, const zelda3::RoomCensus *census, std::span< const DungeonRenderEntranceCandidate > entrances, zelda3::RoomDefaultEntrance default_entrance, const core::DungeonEntry *project_dungeon)
Room LoadRoomHeaderFromRom(Rom *rom, int room_id)
constexpr int kNumDungeonSpawnPoints
Project-level registry data loaded from the Oracle planning outputs.
project::YazeProject * project
core::HackManifest hack_manifest
std::vector< RoomDefaultEntrance > room_default_entrances
std::array< std::array< uint8_t, 8 >, kNumMainBlocksets > main_blockset_ids