13std::unique_ptr<ObjectCoveragePanel>
15 auto panel = std::make_unique<ObjectCoveragePanel>();
18 panel->SetNavigateCallback(
19 [
this](
int room_id,
size_t object_index,
int object_id) {
41 if (room_id < 0 || room_id >=
static_cast<int>(
rooms_.
size())) {
47 if (viewer ==
nullptr || room ==
nullptr) {
51 size_t target = object_index;
52 if (target >= objects.size() || objects[target].id_ != object_id) {
53 auto it = std::find_if(
54 objects.begin(), objects.end(),
55 [object_id](
const auto&
object) { return object.id_ == object_id; });
56 if (it == objects.end()) {
59 target =
static_cast<size_t>(it - objects.begin());
63 viewer->object_interaction().SetCurrentRoom(&
rooms_, room_id);
64 viewer->object_interaction().SetSelectedObjects({target});
65 viewer->ScrollToTile(objects[target].x(), objects[target].y());
class ObjectCoveragePanel * object_coverage_panel_
std::unique_ptr< ObjectCoveragePanel > CreateObjectCoveragePanel()
void OpenWindow(const std::string &window_id)
class DungeonWorkbenchContent * workbench_panel_
bool IsWorkbenchWorkflowEnabled() const
void OnRoomSelected(int room_id, bool request_focus=true)
void FocusObjectCoverage(int room_id, const zelda3::RoomObject &object)
DungeonCanvasViewer * GetViewerForRoom(int room_id)
void NavigateToPlacedObject(int room_id, size_t object_index, int object_id)
zelda3::Room * GetIfMaterialized(int room_id)
void OpenObjectCoverageTool()
EditorDependencies dependencies_
void FocusObject(int object_id, int room_id)
const std::vector< RoomObject > & GetTileObjects() const
Editors are the view controllers for the application.
project::YazeProject * project