У меня есть
ObjectsBuffer
, который содержит
std::vector<LevelObject> (objectsBuffer)
, а класс имеет функцию
updateObject(int index, LevelObject &updatedObject)
Исходный код функции:
void updateObject(int index, LevelObject &updatedObject) {
this->getReferenceBuffer()[index] = updatedObject;
}
getReferenceBuffer
std::vector<LevelObject> &getReferenceBuffer() {
return this->objectsBuffer;
}
Основной код:
LevelObject object = objectsBuffer.getWithIndex(selectedObjectIndex);
if(object.lobjecttype == LevelObjectType::RECTANGLE) {
static char objectName[28];
strcpy(objectName, object.lobjectname.c_str());
static int objectWidth = object.objectWidth;
static int objectHeight = object.objectHeight;
static int objectX = object.objectX;
static int objectY = object.objectY;
ImGui::InputText("Object name.", objectName, IM_ARRAYSIZE(objectName));
ImGui::InputInt("Object Width.", &objectWidth);
ImGui::InputInt("Object Height.", &objectHeight);
ImGui::InputInt("Object X.", &objectX);
ImGui::InputInt("Object Y.", &objectY);
if(ImGui::Button("Apply.")) {
object.lobjectname = objectName;
object.objectWidth = objectWidth;
object.objectHeight = objectHeight;
object.objectX = objectX;
object.objectY = objectY;
objectsBuffer.updateObject(selectedObjectIndex, object); // Сдесь пытаюсь обновить обьект.
}
}
Из примера я получаю объект по индексу из вектора по индексу, изменяю его, а затем пытаюсь обновить объект. Все свойства, такие как objectWidth или другие, остаются прежними. Я не создаю буфер в цикле, я его нигде не перезаписываю (только обновляю его здесь и добавляю новые элементы). Как это исправить?