1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-01 13:36:40 +00:00

Do not copy vector for every door marker

This commit is contained in:
Andrei Kortunov 2024-01-07 18:53:07 +04:00
parent 828c40c710
commit 4f65b7167a
2 changed files with 5 additions and 7 deletions

View file

@ -300,11 +300,9 @@ namespace MWGui
return MyGUI::IntCoord(position.left - halfMarkerSize, position.top - halfMarkerSize, markerSize, markerSize); return MyGUI::IntCoord(position.left - halfMarkerSize, position.top - halfMarkerSize, markerSize, markerSize);
} }
MyGUI::Widget* LocalMapBase::createDoorMarker( MyGUI::Widget* LocalMapBase::createDoorMarker(const std::string& name, float x, float y) const
const std::string& name, const MyGUI::VectorString& notes, float x, float y) const
{ {
MarkerUserData data(mLocalMapRender); MarkerUserData data(mLocalMapRender);
data.notes = notes;
data.caption = name; data.caption = name;
MarkerWidget* markerWidget = mLocalMap->createWidget<MarkerWidget>( MarkerWidget* markerWidget = mLocalMap->createWidget<MarkerWidget>(
"MarkerButton", getMarkerCoordinates(x, y, data, 8), MyGUI::Align::Default); "MarkerButton", getMarkerCoordinates(x, y, data, 8), MyGUI::Align::Default);
@ -662,8 +660,9 @@ namespace MWGui
MarkerUserData* data; MarkerUserData* data;
if (mDoorMarkersToRecycle.empty()) if (mDoorMarkersToRecycle.empty())
{ {
markerWidget = createDoorMarker(marker.name, destNotes, marker.x, marker.y); markerWidget = createDoorMarker(marker.name, marker.x, marker.y);
data = markerWidget->getUserData<MarkerUserData>(); data = markerWidget->getUserData<MarkerUserData>();
data->notes = std::move(destNotes);
doorMarkerCreated(markerWidget); doorMarkerCreated(markerWidget);
} }
else else
@ -672,7 +671,7 @@ namespace MWGui
mDoorMarkersToRecycle.pop_back(); mDoorMarkersToRecycle.pop_back();
data = markerWidget->getUserData<MarkerUserData>(); data = markerWidget->getUserData<MarkerUserData>();
data->notes = destNotes; data->notes = std::move(destNotes);
data->caption = marker.name; data->caption = marker.name;
markerWidget->setCoord(getMarkerCoordinates(marker.x, marker.y, *data, 8)); markerWidget->setCoord(getMarkerCoordinates(marker.x, marker.y, *data, 8));
markerWidget->setVisible(true); markerWidget->setVisible(true);

View file

@ -170,8 +170,7 @@ namespace MWGui
MyGUI::IntPoint getMarkerPosition(float worldX, float worldY, MarkerUserData& markerPos) const; MyGUI::IntPoint getMarkerPosition(float worldX, float worldY, MarkerUserData& markerPos) const;
MyGUI::IntCoord getMarkerCoordinates( MyGUI::IntCoord getMarkerCoordinates(
float worldX, float worldY, MarkerUserData& markerPos, size_t markerSize) const; float worldX, float worldY, MarkerUserData& markerPos, size_t markerSize) const;
MyGUI::Widget* createDoorMarker( MyGUI::Widget* createDoorMarker(const std::string& name, float x, float y) const;
const std::string& name, const MyGUI::VectorString& notes, float x, float y) const;
MyGUI::IntCoord getMarkerCoordinates(MyGUI::Widget* widget, size_t markerSize) const; MyGUI::IntCoord getMarkerCoordinates(MyGUI::Widget* widget, size_t markerSize) const;
virtual void notifyPlayerUpdate() {} virtual void notifyPlayerUpdate() {}