diff --git a/apps/essimporter/convertacdt.cpp b/apps/essimporter/convertacdt.cpp index a737e0a3a2..d9823a6c2a 100644 --- a/apps/essimporter/convertacdt.cpp +++ b/apps/essimporter/convertacdt.cpp @@ -90,7 +90,7 @@ namespace ESSImport scriptedAnim.mAbsolute = true; // Neither loop count nor queueing seems to be supported by the ess format. scriptedAnim.mLoopCount = std::numeric_limits::max(); - state.mScriptedAnims.push_back(scriptedAnim); + state.mScriptedAnims.push_back(std::move(scriptedAnim)); } else // TODO: Handle 0xFF index, which seems to be used for finished animations. diff --git a/apps/essimporter/converter.cpp b/apps/essimporter/converter.cpp index ebb0c9d281..d439552d53 100644 --- a/apps/essimporter/converter.cpp +++ b/apps/essimporter/converter.cpp @@ -303,7 +303,7 @@ namespace ESSImport marker.mWorldY = notepos[1]; marker.mNote = std::move(note); marker.mCell = cell.mId; - mMarkers.push_back(marker); + mMarkers.push_back(std::move(marker)); } newcell.mRefs = std::move(cellrefs); diff --git a/apps/essimporter/converter.hpp b/apps/essimporter/converter.hpp index db801f4e92..9221adf83d 100644 --- a/apps/essimporter/converter.hpp +++ b/apps/essimporter/converter.hpp @@ -584,7 +584,7 @@ namespace ESSImport script.load(esm); ESM::GlobalScript out; convertSCPT(script, out); - mScripts.push_back(out); + mScripts.push_back(std::move(out)); } void write(ESM::ESMWriter& esm) override { diff --git a/apps/essimporter/importer.cpp b/apps/essimporter/importer.cpp index cf04fee163..84ddfc0463 100644 --- a/apps/essimporter/importer.cpp +++ b/apps/essimporter/importer.cpp @@ -136,9 +136,9 @@ namespace ESSImport sub.mName = esm.retSubName().toString(); sub.mData.resize(esm.getSubSize()); esm.getExact(sub.mData.data(), sub.mData.size()); - rec.mSubrecords.push_back(sub); + rec.mSubrecords.push_back(std::move(sub)); } - file.mRecords.push_back(rec); + file.mRecords.push_back(std::move(rec)); } } diff --git a/apps/essimporter/importinventory.cpp b/apps/essimporter/importinventory.cpp index f1db301bd0..c28c28c017 100644 --- a/apps/essimporter/importinventory.cpp +++ b/apps/essimporter/importinventory.cpp @@ -49,7 +49,7 @@ namespace ESSImport } if (!separateStacks) - mItems.push_back(item); + mItems.push_back(std::move(item)); } // equipped items diff --git a/apps/essimporter/importsplm.cpp b/apps/essimporter/importsplm.cpp index 6019183f83..49bf95e40a 100644 --- a/apps/essimporter/importsplm.cpp +++ b/apps/essimporter/importsplm.cpp @@ -38,7 +38,7 @@ namespace ESSImport unsigned char xnam; // sentinel esm.getHNT(xnam, "XNAM"); - mActiveSpells.push_back(spell); + mActiveSpells.push_back(std::move(spell)); } } diff --git a/apps/mwiniimporter/importer.cpp b/apps/mwiniimporter/importer.cpp index 88afc09707..e50e1ed561 100644 --- a/apps/mwiniimporter/importer.cpp +++ b/apps/mwiniimporter/importer.cpp @@ -351,7 +351,7 @@ MwIniImporter::multistrmap MwIniImporter::loadIniFile(const std::filesystem::pat if (it == map.end()) it = map.emplace_hint(it, std::move(key), std::vector()); - it->second.push_back(std::string(value)); + it->second.emplace_back(value); } return map; @@ -393,7 +393,7 @@ MwIniImporter::multistrmap MwIniImporter::loadCfgFile(const std::filesystem::pat { map.insert(std::make_pair(key, std::vector())); } - map[key].push_back(value); + map[key].push_back(std::move(value)); } return map; diff --git a/apps/opencs/editor.cpp b/apps/opencs/editor.cpp index ab361e7568..ae3159c280 100644 --- a/apps/opencs/editor.cpp +++ b/apps/opencs/editor.cpp @@ -166,7 +166,7 @@ std::pair> CS::Editor::readConfig if (!local.empty()) { std::filesystem::create_directories(local); - dataLocal.push_back(local); + dataLocal.push_back(std::move(local)); } mCfgMgr.filterOutNonExistingPaths(dataDirs); mCfgMgr.filterOutNonExistingPaths(dataLocal); diff --git a/apps/opencs/model/filter/parser.cpp b/apps/opencs/model/filter/parser.cpp index 6248b03bb4..2897dfe3fe 100644 --- a/apps/opencs/model/filter/parser.cpp +++ b/apps/opencs/model/filter/parser.cpp @@ -365,7 +365,7 @@ std::shared_ptr CSMFilter::Parser::parseNAry(const Token& keywo if (mError) return std::shared_ptr(); - nodes.push_back(node); + nodes.push_back(std::move(node)); token = getNextToken(); diff --git a/apps/opencs/model/world/refidadapterimp.hpp b/apps/opencs/model/world/refidadapterimp.hpp index 5c54b9a0cf..fd8f8ffa8c 100644 --- a/apps/opencs/model/world/refidadapterimp.hpp +++ b/apps/opencs/model/world/refidadapterimp.hpp @@ -1466,7 +1466,7 @@ namespace CSMWorld newRow.mCellName.clear(); if (position >= (int)list.size()) - list.push_back(newRow); + list.push_back(std::move(newRow)); else list.insert(list.begin() + position, newRow); @@ -1636,7 +1636,7 @@ namespace CSMWorld newRow.mCellName.clear(); if (position >= (int)list.size()) - list.push_back(newRow); + list.push_back(std::move(newRow)); else list.insert(list.begin() + position, newRow); diff --git a/apps/opencs/view/render/worldspacewidget.cpp b/apps/opencs/view/render/worldspacewidget.cpp index 32b8311725..76bea2c4ee 100644 --- a/apps/opencs/view/render/worldspacewidget.cpp +++ b/apps/opencs/view/render/worldspacewidget.cpp @@ -449,7 +449,7 @@ CSVRender::WorldspaceHitResult CSVRender::WorldspaceWidget::mousePick( mView->getCamera()->accept(visitor); - auto intersections = intersector->getIntersections(); + const auto& intersections = intersector->getIntersections(); std::vector validIntersections = { intersections.begin(), intersections.end() }; diff --git a/apps/opencs/view/world/regionmap.cpp b/apps/opencs/view/world/regionmap.cpp index ae9ac94022..a22ee1fc92 100644 --- a/apps/opencs/view/world/regionmap.cpp +++ b/apps/opencs/view/world/regionmap.cpp @@ -133,10 +133,10 @@ QModelIndexList CSVWorld::RegionMap::getMissingRegionCells() const for (QModelIndexList::const_iterator iter(selected.begin()); iter != selected.end(); ++iter) { - std::string region = model->data(*iter, CSMWorld::RegionMap::Role_Region).toString().toUtf8().constData(); + std::string_view region = model->data(*iter, CSMWorld::RegionMap::Role_Region).toString().toUtf8().constData(); if (!region.empty()) - regions.insert(region); + regions.emplace(region); } QModelIndexList list; diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index 12b327c222..70e48e0cfc 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -86,7 +86,7 @@ bool parseOptions(int argc, char** argv, OMW::Engine& engine, Files::Configurati .u8string()); // This call to u8string is redundant, but required to // build on MSVC 14.26 due to implementation bugs. if (!local.empty()) - dataDirs.push_back(local); + dataDirs.push_back(std::move(local)); cfgMgr.filterOutNonExistingPaths(dataDirs); diff --git a/apps/openmw/mwdialogue/journalimp.cpp b/apps/openmw/mwdialogue/journalimp.cpp index 28a2e16699..04574e92c5 100644 --- a/apps/openmw/mwdialogue/journalimp.cpp +++ b/apps/openmw/mwdialogue/journalimp.cpp @@ -111,7 +111,7 @@ namespace MWDialogue // there is no need to show empty entries in journal if (!entry.getText().empty()) { - mJournal.push_back(entry); + mJournal.push_back(std::move(entry)); MWBase::Environment::get().getWindowManager()->messageBox("#{sJournalEntry}"); } } diff --git a/apps/openmw/mwgui/screenfader.cpp b/apps/openmw/mwgui/screenfader.cpp index 0068ba7960..4f251233df 100644 --- a/apps/openmw/mwgui/screenfader.cpp +++ b/apps/openmw/mwgui/screenfader.cpp @@ -207,7 +207,7 @@ namespace MWGui mQueue.pop_front(); if (mRepeat) - mQueue.push_back(op); + mQueue.push_back(std::move(op)); } float ScreenFader::getCurrentAlpha() diff --git a/apps/openmw/mwgui/settingswindow.cpp b/apps/openmw/mwgui/settingswindow.cpp index 15e083d94e..70a067899a 100644 --- a/apps/openmw/mwgui/settingswindow.cpp +++ b/apps/openmw/mwgui/settingswindow.cpp @@ -422,7 +422,7 @@ namespace MWGui continue; // fake locale to get gmst strings from content files if (std::find(availableLanguages.begin(), availableLanguages.end(), localeName) == availableLanguages.end()) - availableLanguages.push_back(localeName); + availableLanguages.push_back(std::move(localeName)); } } diff --git a/apps/openmw/mwgui/spellicons.cpp b/apps/openmw/mwgui/spellicons.cpp index aa29dfc156..f296617eb6 100644 --- a/apps/openmw/mwgui/spellicons.cpp +++ b/apps/openmw/mwgui/spellicons.cpp @@ -42,7 +42,7 @@ namespace MWGui newEffectSource.mRemainingTime = effect.mTimeLeft; newEffectSource.mSource = params.getDisplayName(); newEffectSource.mTotalTime = effect.mDuration; - effects[effect.mEffectId].push_back(newEffectSource); + effects[effect.mEffectId].push_back(std::move(newEffectSource)); } } diff --git a/apps/openmw/mwgui/spellmodel.cpp b/apps/openmw/mwgui/spellmodel.cpp index 3d70c391c9..06bc8a2ee9 100644 --- a/apps/openmw/mwgui/spellmodel.cpp +++ b/apps/openmw/mwgui/spellmodel.cpp @@ -164,7 +164,7 @@ namespace MWGui newSpell.mActive = invStore.isEquipped(item); } - mSpells.push_back(newSpell); + mSpells.push_back(std::move(newSpell)); } std::stable_sort(mSpells.begin(), mSpells.end(), sortSpells); diff --git a/apps/openmw/mwinput/bindingsmanager.cpp b/apps/openmw/mwinput/bindingsmanager.cpp index 22322014d4..1a3e612cee 100644 --- a/apps/openmw/mwinput/bindingsmanager.cpp +++ b/apps/openmw/mwinput/bindingsmanager.cpp @@ -702,9 +702,10 @@ namespace MWInput void BindingsManager::saveBindings() { - const std::string newFileName = Files::pathToUnicodeString(mUserFile) + ".new"; + std::string newFileName; try { + newFileName = Files::pathToUnicodeString(mUserFile) + ".new"; if (mInputBinder->save(newFileName)) { std::filesystem::rename(Files::pathFromUnicodeString(newFileName), mUserFile); diff --git a/apps/openmw/mwlua/coremwscriptbindings.cpp b/apps/openmw/mwlua/coremwscriptbindings.cpp index 6bf01a4b3d..c4054cf32b 100644 --- a/apps/openmw/mwlua/coremwscriptbindings.cpp +++ b/apps/openmw/mwlua/coremwscriptbindings.cpp @@ -19,7 +19,8 @@ namespace MWLua = [](const ESM::Script& rec) { return "ESM3_Script[" + rec.mId.toDebugString() + "]"; }; recordBindingsClass["id"] = sol::readonly_property([](const ESM::Script& rec) { return rec.mId.serializeText(); }); - recordBindingsClass["text"] = sol::readonly_property([](const ESM::Script& rec) { return rec.mScriptText; }); + recordBindingsClass["text"] + = sol::readonly_property([](const ESM::Script& rec) -> std::string_view { return rec.mScriptText; }); addRecordFunctionBinding(api, context); diff --git a/apps/openmw/mwlua/luamanagerimp.cpp b/apps/openmw/mwlua/luamanagerimp.cpp index 66ecfb1c55..40ec9d93a9 100644 --- a/apps/openmw/mwlua/luamanagerimp.cpp +++ b/apps/openmw/mwlua/luamanagerimp.cpp @@ -161,7 +161,7 @@ namespace MWLua { binary = LuaUtil::serialize(*data, mLocalSerializer.get()); } - mLuaEvents.addLocalEvent({ getId(target), name, binary }); + mLuaEvents.addLocalEvent({ getId(target), name, std::move(binary) }); } void LuaManager::update() diff --git a/apps/openmw/mwlua/types/actor.cpp b/apps/openmw/mwlua/types/actor.cpp index 2d7db8ec77..29882f6dcb 100644 --- a/apps/openmw/mwlua/types/actor.cpp +++ b/apps/openmw/mwlua/types/actor.cpp @@ -442,9 +442,9 @@ namespace MWLua sol::optional ammo = options.get>("ammo"); context.mLuaManager->addAction( - [self = self, damages = std::move(damageCpp), attacker = options.get>("attacker"), - weapon = ammo ? ammo : weapon, successful = options.get("successful"), - sourceType = sourceType] { + [self = Object(self), damages = std::move(damageCpp), + attacker = options.get>("attacker"), weapon = ammo ? ammo : weapon, + successful = options.get("successful"), sourceType = sourceType] { MWWorld::Ptr attackerPtr; MWWorld::Ptr weaponPtr; if (attacker) diff --git a/apps/openmw/mwlua/uibindings.cpp b/apps/openmw/mwlua/uibindings.cpp index 8d9892005c..61b1671087 100644 --- a/apps/openmw/mwlua/uibindings.cpp +++ b/apps/openmw/mwlua/uibindings.cpp @@ -168,7 +168,7 @@ namespace MWLua LuaUi::Layer::Options options; options.mInteractive = LuaUtil::getValueOrDefault(LuaUtil::getFieldOrNil(opt, "interactive"), true); context.mLuaManager->addAction( - [=]() { + [afterName = std::move(afterName), name = std::move(name), options]() { size_t index = LuaUi::Layer::indexOf(afterName); if (index == LuaUi::Layer::count()) throw std::logic_error( diff --git a/apps/openmw/mwlua/weatherbindings.cpp b/apps/openmw/mwlua/weatherbindings.cpp index daabd08620..dffd708783 100644 --- a/apps/openmw/mwlua/weatherbindings.cpp +++ b/apps/openmw/mwlua/weatherbindings.cpp @@ -48,7 +48,8 @@ namespace MWLua auto weatherT = lua.new_usertype("Weather"); weatherT[sol::meta_function::to_string] = [](const MWWorld::Weather& w) -> std::string { return "Weather[" + w.mName + "]"; }; - weatherT["name"] = sol::readonly_property([](const MWWorld::Weather& w) { return w.mName; }); + weatherT["name"] + = sol::readonly_property([](const MWWorld::Weather& w) -> std::string_view { return w.mName; }); weatherT["windSpeed"] = sol::readonly_property([](const MWWorld::Weather& w) { return w.mWindSpeed; }); weatherT["cloudSpeed"] = sol::readonly_property([](const MWWorld::Weather& w) { return w.mCloudSpeed; }); weatherT["cloudTexture"] = sol::readonly_property([vfs](const MWWorld::Weather& w) { @@ -139,7 +140,8 @@ namespace MWLua weatherT["scriptId"] = sol::readonly_property([](const MWWorld::Weather& w) { return w.mScriptId; }); weatherT["recordId"] = sol::readonly_property([](const MWWorld::Weather& w) { return w.mId.serializeText(); }); - api["getCurrent"] = []() { return MWBase::Environment::get().getWorld()->getCurrentWeather(); }; + api["getCurrent"] + = []() -> const MWWorld::Weather* { return &MWBase::Environment::get().getWorld()->getCurrentWeather(); }; api["getNext"] = []() -> const MWWorld::Weather* { return MWBase::Environment::get().getWorld()->getNextWeather(); }; api["getTransition"] = []() { return MWBase::Environment::get().getWorld()->getWeatherTransition(); }; diff --git a/apps/openmw/mwmechanics/alchemy.cpp b/apps/openmw/mwmechanics/alchemy.cpp index 4be48296a9..e2edf5f9cf 100644 --- a/apps/openmw/mwmechanics/alchemy.cpp +++ b/apps/openmw/mwmechanics/alchemy.cpp @@ -628,7 +628,7 @@ std::vector MWMechanics::Alchemy::effectsDescription(const MWWorld: const ESM::Skill* skill = store->get().search(ESM::Skill::indexToRefId(data.mSkills[i])); std::string effect = getMagicEffectString(*mgef.find(effectID), attribute, skill); - effects.push_back(effect); + effects.push_back(std::move(effect)); } } return effects; diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index 3f4f6c6956..bd84776c00 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -2531,7 +2531,7 @@ namespace MWMechanics anim.mTime = 0.f; } - state.mScriptedAnims.push_back(anim); + state.mScriptedAnims.push_back(std::move(anim)); } } @@ -2563,7 +2563,7 @@ namespace MWMechanics entry.mTime = (time - start) / (stop - start); } - mAnimQueue.push_back(entry); + mAnimQueue.push_back(std::move(entry)); } playAnimQueue(); @@ -2644,7 +2644,7 @@ namespace MWMechanics mAnimQueue.resize(1); } - mAnimQueue.push_back(entry); + mAnimQueue.push_back(std::move(entry)); if (playImmediately) playAnimQueue(mode == 2); @@ -2675,7 +2675,7 @@ namespace MWMechanics if (mAnimQueue.size() > 1) mAnimQueue.resize(1); - mAnimQueue.push_back(entry); + mAnimQueue.push_back(std::move(entry)); if (mAnimQueue.size() == 1) playAnimQueue(); diff --git a/apps/openmw/mwrender/postprocessor.cpp b/apps/openmw/mwrender/postprocessor.cpp index 365429a4a8..930bcece65 100644 --- a/apps/openmw/mwrender/postprocessor.cpp +++ b/apps/openmw/mwrender/postprocessor.cpp @@ -185,7 +185,7 @@ namespace MWRender auto distortion = loadTechnique("internal_distortion"); distortion->setInternal(true); distortion->setLocked(true); - mInternalTechniques.push_back(distortion); + mInternalTechniques.push_back(std::move(distortion)); osg::GraphicsContext* gc = viewer->getCamera()->getGraphicsContext(); osg::GLExtensions* ext = gc->getState()->get(); diff --git a/apps/openmw/mwscript/interpretercontext.cpp b/apps/openmw/mwscript/interpretercontext.cpp index a177e97b37..4c890db12b 100644 --- a/apps/openmw/mwscript/interpretercontext.cpp +++ b/apps/openmw/mwscript/interpretercontext.cpp @@ -130,7 +130,7 @@ namespace MWScript if (ptr) mReference = *ptr; else - mGlobalScriptDesc = globalScriptDesc; + mGlobalScriptDesc = std::move(globalScriptDesc); } ESM::RefId InterpreterContext::getTarget() const diff --git a/apps/openmw/mwstate/character.cpp b/apps/openmw/mwstate/character.cpp index 22d7e7ba1e..5199445c40 100644 --- a/apps/openmw/mwstate/character.cpp +++ b/apps/openmw/mwstate/character.cpp @@ -58,7 +58,7 @@ void MWState::Character::addSlot(const std::filesystem::path& path, const std::s if (!Misc::StringUtils::ciEqual(getFirstGameFile(slot.mProfile.mContentFiles), game)) return; // this file is for a different game -> ignore - mSlots.push_back(slot); + mSlots.push_back(std::move(slot)); } void MWState::Character::addSlot(const ESM::SavedGame& profile) @@ -92,7 +92,7 @@ void MWState::Character::addSlot(const ESM::SavedGame& profile) slot.mProfile = profile; slot.mTimeStamp = std::filesystem::file_time_type::clock::now(); - mSlots.push_back(slot); + mSlots.push_back(std::move(slot)); } MWState::Character::Character(const std::filesystem::path& saves, const std::string& game) @@ -174,7 +174,7 @@ const MWState::Slot* MWState::Character::updateSlot(const Slot* slot, const ESM: mSlots.erase(mSlots.begin() + index); - mSlots.push_back(newSlot); + mSlots.push_back(std::move(newSlot)); return &mSlots.back(); } diff --git a/apps/openmw/mwstate/charactermanager.cpp b/apps/openmw/mwstate/charactermanager.cpp index 02d993d186..1989f31229 100644 --- a/apps/openmw/mwstate/charactermanager.cpp +++ b/apps/openmw/mwstate/charactermanager.cpp @@ -25,7 +25,7 @@ MWState::CharacterManager::CharacterManager(std::filesystem::path saves, const s Character character(characterDir, mGame); if (character.begin() != character.end()) - mCharacters.push_back(character); + mCharacters.push_back(std::move(character)); } } mCharacters.sort(); diff --git a/apps/openmw/mwworld/esmstore.cpp b/apps/openmw/mwworld/esmstore.cpp index 369731a019..eb26c00f9e 100644 --- a/apps/openmw/mwworld/esmstore.cpp +++ b/apps/openmw/mwworld/esmstore.cpp @@ -150,7 +150,7 @@ namespace } if (changed) - npcsToReplace.push_back(npc); + npcsToReplace.push_back(std::move(npc)); } return npcsToReplace; diff --git a/apps/openmw/mwworld/projectilemanager.cpp b/apps/openmw/mwworld/projectilemanager.cpp index 667a9d608b..2d6a2e7dce 100644 --- a/apps/openmw/mwworld/projectilemanager.cpp +++ b/apps/openmw/mwworld/projectilemanager.cpp @@ -335,7 +335,7 @@ namespace MWWorld } state.mProjectileId = mPhysics->addProjectile(caster, pos, model, true); state.mToDelete = false; - mMagicBolts.push_back(state); + mMagicBolts.push_back(std::move(state)); } void ProjectileManager::launchProjectile(const Ptr& actor, const ConstPtr& projectile, const osg::Vec3f& pos, @@ -361,7 +361,7 @@ namespace MWWorld state.mProjectileId = mPhysics->addProjectile(actor, pos, model, false); state.mToDelete = false; - mProjectiles.push_back(state); + mProjectiles.push_back(std::move(state)); } void ProjectileManager::updateCasters() @@ -725,7 +725,7 @@ namespace MWWorld createModel(state, model, osg::Vec3f(esm.mPosition), osg::Quat(esm.mOrientation), false, false, osg::Vec4(0, 0, 0, 0)); - mProjectiles.push_back(state); + mProjectiles.push_back(std::move(state)); return true; } if (type == ESM::REC_MPRJ) diff --git a/apps/openmw/mwworld/weather.cpp b/apps/openmw/mwworld/weather.cpp index adc2a175fd..60d63fe46b 100644 --- a/apps/openmw/mwworld/weather.cpp +++ b/apps/openmw/mwworld/weather.cpp @@ -1096,7 +1096,7 @@ namespace MWWorld Weather weather( id, mWeatherSettings.size(), name, fStromWindSpeed, mRainSpeed, dlFactor, dlOffset, particleEffect); - mWeatherSettings.push_back(weather); + mWeatherSettings.push_back(std::move(weather)); } inline void WeatherManager::importRegions() diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index d8bc768b39..8bb4d087a1 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -1955,7 +1955,7 @@ namespace MWWorld newMarker.x = pos.pos[0]; newMarker.y = pos.pos[1]; - mOut.push_back(newMarker); + mOut.push_back(std::move(newMarker)); } return true; } diff --git a/components/bsa/ba2dx10file.cpp b/components/bsa/ba2dx10file.cpp index afb2c0a4aa..d4f14926c6 100644 --- a/components/bsa/ba2dx10file.cpp +++ b/components/bsa/ba2dx10file.cpp @@ -138,7 +138,7 @@ namespace Bsa fileName.resize(fileNameSize); input.read(fileName.data(), fileName.size()); fileName.push_back('\0'); - mFileNames.push_back(fileName); + mFileNames.push_back(std::move(fileName)); mFiles[i].setNameInfos(0, &mFileNames.back()); } diff --git a/components/bsa/ba2gnrlfile.cpp b/components/bsa/ba2gnrlfile.cpp index f169440208..dcef09296e 100644 --- a/components/bsa/ba2gnrlfile.cpp +++ b/components/bsa/ba2gnrlfile.cpp @@ -129,7 +129,7 @@ namespace Bsa fileName.resize(fileNameSize); input.read(fileName.data(), fileName.size()); fileName.push_back('\0'); - mFileNames.push_back(fileName); + mFileNames.push_back(std::move(fileName)); mFiles[i].setNameInfos(0, &mFileNames.back()); } diff --git a/components/compiler/controlparser.cpp b/components/compiler/controlparser.cpp index a130695ae1..579af0d9fe 100644 --- a/components/compiler/controlparser.cpp +++ b/components/compiler/controlparser.cpp @@ -22,7 +22,7 @@ namespace Compiler std::copy(mCodeBlock.begin(), mCodeBlock.end(), std::back_inserter(entry.second)); - mIfCode.push_back(entry); + mIfCode.push_back(std::move(entry)); mCodeBlock.clear(); diff --git a/components/compiler/exprparser.cpp b/components/compiler/exprparser.cpp index bd4e722205..b41bd0eb13 100644 --- a/components/compiler/exprparser.cpp +++ b/components/compiler/exprparser.cpp @@ -327,7 +327,7 @@ namespace Compiler if (mExplicit.empty() && getContext().isId(ESM::RefId::stringRefId(name2))) { - mExplicit = name2; + mExplicit = std::move(name2); return true; } diff --git a/components/compiler/scanner.cpp b/components/compiler/scanner.cpp index 49f3999740..451dbe42ed 100644 --- a/components/compiler/scanner.cpp +++ b/components/compiler/scanner.cpp @@ -205,7 +205,7 @@ namespace Compiler else if (!c.isMinusSign() && isStringCharacter(c)) { /// workaround that allows names to begin with digits - return scanName(c, parser, cont, value); + return scanName(c, parser, cont, std::move(value)); } else if (c == '.') { diff --git a/components/config/gamesettings.cpp b/components/config/gamesettings.cpp index f5d9918c10..00b9fe30be 100644 --- a/components/config/gamesettings.cpp +++ b/components/config/gamesettings.cpp @@ -202,7 +202,7 @@ bool Config::GameSettings::readFile( if (settings.isEmpty()) { - settings = cache; // This is the first time we read a file + settings = std::move(cache); // This is the first time we read a file validatePaths(); return true; } diff --git a/components/esm/esmterrain.cpp b/components/esm/esmterrain.cpp index ec824d5112..1330418429 100644 --- a/components/esm/esmterrain.cpp +++ b/components/esm/esmterrain.cpp @@ -23,31 +23,30 @@ namespace ESM ESM::LandData::LandData(const ESM::Land& land, int loadFlags) : mData(loadData(land, loadFlags)) + , mHeights(mData->mHeights) + , mNormals(mData->mNormals) + , mColors(mData->mColours) + , mTextures(mData->mTextures) , mLoadFlags(mData->mDataLoaded) , mMinHeight(mData->mMinHeight) , mMaxHeight(mData->mMaxHeight) , mSize(Constants::CellSizeInUnits) , mLandSize(ESM::Land::LAND_SIZE) , mPlugin(land.getPlugin()) - , mHeights(mData->mHeights) - , mNormals(mData->mNormals) - , mColors(mData->mColours) - , mTextures(mData->mTextures) - , mIsEsm4(false) { } ESM::LandData::LandData(const ESM4::Land& land, int /*loadFlags*/) - : mLoadFlags(land.mDataTypes) // ESM4::Land is always fully loaded. TODO: implement lazy loading - , mHeightsData(ESM4::Land::sLandNumVerts) + : mHeightsData(ESM4::Land::sLandNumVerts) + , mNormals(land.mVertNorm) + , mColors(land.mVertColr) + , mTextures(textures) + , mLoadFlags(land.mDataTypes) // ESM4::Land is always fully loaded. TODO: implement lazy loading , mMinHeight(std::numeric_limits::max()) , mMaxHeight(std::numeric_limits::lowest()) , mSize(Constants::ESM4CellSizeInUnits) , mLandSize(ESM4::Land::sVertsPerSide) , mPlugin(land.mId.mContentFile) - , mNormals(land.mVertNorm) - , mColors(land.mVertColr) - , mTextures(textures) , mIsEsm4(true) { float rowOffset = land.mHeightMap.heightOffset; diff --git a/components/esm/esmterrain.hpp b/components/esm/esmterrain.hpp index b6b62773d5..73652b2e35 100644 --- a/components/esm/esmterrain.hpp +++ b/components/esm/esmterrain.hpp @@ -51,19 +51,19 @@ namespace ESM private: std::unique_ptr mData; - int mLoadFlags = 0; std::vector mHeightsData; - float mMinHeight = 0.f; - float mMaxHeight = 0.f; - float mSize = 0.f; - int mLandSize = 0; - int mPlugin = 0; std::span mHeights; std::span mNormals; std::span mColors; std::span mTextures; std::array mEsm4Textures; - bool mIsEsm4; + int mLoadFlags = 0; + float mMinHeight = 0.f; + float mMaxHeight = 0.f; + float mSize = 0.f; + int mLandSize = 0; + int mPlugin = 0; + bool mIsEsm4 = false; }; } diff --git a/components/esm3/aipackage.cpp b/components/esm3/aipackage.cpp index 33b8a0bca2..9bee9f2187 100644 --- a/components/esm3/aipackage.cpp +++ b/components/esm3/aipackage.cpp @@ -55,25 +55,25 @@ namespace ESM { pack.mType = AI_Wander; esm.getSubComposite(pack.mWander); - mList.push_back(pack); + mList.push_back(std::move(pack)); } else if (esm.retSubName() == AI_Travel) { pack.mType = AI_Travel; esm.getSubComposite(pack.mTravel); - mList.push_back(pack); + mList.push_back(std::move(pack)); } else if (esm.retSubName() == AI_Escort || esm.retSubName() == AI_Follow) { pack.mType = (esm.retSubName() == AI_Escort) ? AI_Escort : AI_Follow; esm.getSubComposite(pack.mTarget); - mList.push_back(pack); + mList.push_back(std::move(pack)); } else if (esm.retSubName() == AI_Activate) { pack.mType = AI_Activate; esm.getSubComposite(pack.mActivate); - mList.push_back(pack); + mList.push_back(std::move(pack)); } } diff --git a/components/esm3/animationstate.cpp b/components/esm3/animationstate.cpp index 79dcad7578..43e56b698f 100644 --- a/components/esm3/animationstate.cpp +++ b/components/esm3/animationstate.cpp @@ -23,7 +23,7 @@ namespace ESM esm.getHNOT(anim.mAbsolute, "ABST"); esm.getHNT(anim.mLoopCount, "COUN"); - mScriptedAnims.push_back(anim); + mScriptedAnims.push_back(std::move(anim)); } } diff --git a/components/esm3/esmwriter.cpp b/components/esm3/esmwriter.cpp index 8bae844585..3820137685 100644 --- a/components/esm3/esmwriter.cpp +++ b/components/esm3/esmwriter.cpp @@ -127,7 +127,7 @@ namespace ESM Header::MasterData d; d.name = name; d.size = size; - mHeader.mMaster.push_back(d); + mHeader.mMaster.push_back(std::move(d)); } void ESMWriter::save(std::ostream& file) diff --git a/components/esm3/fogstate.cpp b/components/esm3/fogstate.cpp index 194e4ae745..8b89c8f789 100644 --- a/components/esm3/fogstate.cpp +++ b/components/esm3/fogstate.cpp @@ -82,7 +82,7 @@ namespace ESM if (dataFormat <= MaxOldFogOfWarFormatVersion) convertFogOfWar(tex.mImageData); - mFogTextures.push_back(tex); + mFogTextures.push_back(std::move(tex)); } } diff --git a/components/esm3/loadtes3.cpp b/components/esm3/loadtes3.cpp index eeb2d38761..ab7abac3ad 100644 --- a/components/esm3/loadtes3.cpp +++ b/components/esm3/loadtes3.cpp @@ -38,7 +38,7 @@ namespace ESM MasterData m; m.name = esm.getHString(); esm.getHNT(m.size, "DATA"); - mMaster.push_back(m); + mMaster.push_back(std::move(m)); } esm.getHNOT("GMDT", mGameData.mCurrentHealth, mGameData.mMaximumHealth, mGameData.mHour, mGameData.unknown1, diff --git a/components/esm3/transport.cpp b/components/esm3/transport.cpp index a72cdbbaf8..0a77cc71a4 100644 --- a/components/esm3/transport.cpp +++ b/components/esm3/transport.cpp @@ -14,7 +14,7 @@ namespace ESM { Dest dodt; esm.getSubComposite(dodt.mPos); - mList.push_back(dodt); + mList.push_back(std::move(dodt)); } else if (esm.retSubName().toInt() == fourCC("DNAM")) { diff --git a/components/esm4/loadingr.cpp b/components/esm4/loadingr.cpp index 64103058e5..5238fffab3 100644 --- a/components/esm4/loadingr.cpp +++ b/components/esm4/loadingr.cpp @@ -59,7 +59,7 @@ void ESM4::Ingredient::load(ESM4::Reader& reader) if (!reader.getZString(scriptEffectName)) throw std::runtime_error("INGR FULL data read error"); - mScriptEffect.push_back(scriptEffectName); + mScriptEffect.push_back(std::move(scriptEffectName)); break; } diff --git a/components/esm4/loadnavi.cpp b/components/esm4/loadnavi.cpp index 47befbf268..941b8088eb 100644 --- a/components/esm4/loadnavi.cpp +++ b/components/esm4/loadnavi.cpp @@ -130,7 +130,7 @@ void ESM4::Navigation::NavMeshInfo::load(ESM4::Reader& reader) { Navigation::IslandInfo island2; island2.load(reader); - islandInfo.push_back(island2); // Maybe don't use a vector for just one entry? + islandInfo.push_back(std::move(island2)); // Maybe don't use a vector for just one entry? } // else if (flags == FLG_Island) // FIXME: debug only // std::cerr << "nvmi no island but has 0x20 flag" << std::endl; @@ -350,7 +350,7 @@ void ESM4::Navigation::load(ESM4::Reader& reader) // std::cout << "\nNVMI start" << std::endl; NavMeshInfo nvmi; nvmi.load(reader); - mNavMeshInfo.push_back(nvmi); + mNavMeshInfo.push_back(std::move(nvmi)); break; } case ESM::fourCC("NVSI"): // from Dawnguard onwards diff --git a/components/esm4/loadnavm.cpp b/components/esm4/loadnavm.cpp index ebe6a7dbbb..aa3058162a 100644 --- a/components/esm4/loadnavm.cpp +++ b/components/esm4/loadnavm.cpp @@ -178,7 +178,7 @@ void ESM4::NavMesh::NVNMstruct::load(ESM4::Reader& reader) { reader.get(*it); } - triSegments.push_back(indices); + triSegments.push_back(std::move(indices)); } if (triSegments.size() != divisor * divisor) throw std::runtime_error("Triangle segments size is not the square of divisor"); @@ -221,7 +221,7 @@ void ESM4::NavMesh::load(ESM4::Reader& reader) NVNMstruct nvnm; nvnm.load(reader); - mData.push_back(nvnm); // FIXME try swap + mData.push_back(std::move(nvnm)); // FIXME try swap break; } case ESM::fourCC("ONAM"): diff --git a/components/esm4/loadpgrd.cpp b/components/esm4/loadpgrd.cpp index 9b050be38d..75e0f97367 100644 --- a/components/esm4/loadpgrd.cpp +++ b/components/esm4/loadpgrd.cpp @@ -114,7 +114,7 @@ void ESM4::Pathgrid::load(ESM4::Reader& reader) for (std::size_t i = 0; i < numNodes; ++i) reader.get(objLink.linkedNodes.at(i)); - mObjects.push_back(objLink); + mObjects.push_back(std::move(objLink)); break; } diff --git a/components/esm4/loadsgst.cpp b/components/esm4/loadsgst.cpp index d93709f537..eb7a52a5e6 100644 --- a/components/esm4/loadsgst.cpp +++ b/components/esm4/loadsgst.cpp @@ -58,7 +58,7 @@ void ESM4::SigilStone::load(ESM4::Reader& reader) std::string scriptEffectName; if (!reader.getZString(scriptEffectName)) throw std::runtime_error("SGST FULL data read error"); - mScriptEffect.push_back(scriptEffectName); + mScriptEffect.push_back(std::move(scriptEffectName)); } break; } diff --git a/components/esm4/loadtes4.cpp b/components/esm4/loadtes4.cpp index 19db9b9d09..6b9499c5ee 100644 --- a/components/esm4/loadtes4.cpp +++ b/components/esm4/loadtes4.cpp @@ -65,7 +65,7 @@ void ESM4::Header::load(ESM4::Reader& reader) // NOTE: some mods do not have DATA following MAST so can't read DATA here m.size = 0; - mMaster.push_back(m); + mMaster.push_back(std::move(m)); break; } case ESM::fourCC("DATA"): diff --git a/components/fx/technique.cpp b/components/fx/technique.cpp index a88a1a62bb..ee41ac4f12 100644 --- a/components/fx/technique.cpp +++ b/components/fx/technique.cpp @@ -1033,7 +1033,7 @@ namespace Fx choice.mLabel = parseString(); expect(); choice.mValue = getUniformValue(); - choices.push_back(choice); + choices.push_back(std::move(choice)); if (isNext()) { diff --git a/components/nif/nifkey.hpp b/components/nif/nifkey.hpp index e32ef76d95..1b1083521c 100644 --- a/components/nif/nifkey.hpp +++ b/components/nif/nifkey.hpp @@ -174,8 +174,12 @@ namespace Nif const float y = (1.f - curr.mTension) * (1.f + curr.mContinuity) * (1.f - curr.mBias); const float z = (1.f - curr.mTension) * (1.f + curr.mContinuity) * (1.f + curr.mBias); const float w = (1.f - curr.mTension) * (1.f - curr.mContinuity) * (1.f - curr.mBias); - const U prevDelta = prev != nullptr ? curr.mValue - prev->mValue : next->mValue - curr.mValue; - const U nextDelta = next != nullptr ? next->mValue - curr.mValue : curr.mValue - prev->mValue; + const U prevDelta = prev != nullptr ? curr.mValue - prev->mValue + : next != nullptr ? next->mValue - curr.mValue + : U{}; + const U nextDelta = next != nullptr ? next->mValue - curr.mValue + : prev != nullptr ? curr.mValue - prev->mValue + : U{}; curr.mInTan = (prevDelta * x + nextDelta * y) * prevLen / (prevLen + nextLen); curr.mOutTan = (prevDelta * z + nextDelta * w) * nextLen / (prevLen + nextLen); } @@ -205,4 +209,4 @@ namespace Nif using BoolKeyMapPtr = std::shared_ptr; } // Namespace -#endif //#ifndef OPENMW_COMPONENTS_NIF_NIFKEY_HPP +#endif // #ifndef OPENMW_COMPONENTS_NIF_NIFKEY_HPP diff --git a/components/sceneutil/optimizer.cpp b/components/sceneutil/optimizer.cpp index ec2f4af26f..606288af54 100644 --- a/components/sceneutil/optimizer.cpp +++ b/components/sceneutil/optimizer.cpp @@ -1395,7 +1395,7 @@ bool Optimizer::MergeGeometryVisitor::mergeGroup(osg::Group& group) subset.push_back(geometry); if (subset.size()>1) needToDoMerge = true; } - if (!subset.empty()) mergeList.push_back(subset); + if (!subset.empty()) mergeList.push_back(std::move(subset)); } if (needToDoMerge) diff --git a/components/shader/shadermanager.cpp b/components/shader/shadermanager.cpp index acc6924f08..c22055c82c 100644 --- a/components/shader/shadermanager.cpp +++ b/components/shader/shadermanager.cpp @@ -339,7 +339,7 @@ namespace Shader if (!parseLinkDirective(source, linkTarget, templateName, foundPos)) return false; if (!linkTarget.empty() && linkTarget != templateName) - linkedShaderTemplateNames.push_back(linkTarget); + linkedShaderTemplateNames.push_back(std::move(linkTarget)); } else { diff --git a/components/stereo/multiview.cpp b/components/stereo/multiview.cpp index a2f6cfd626..25b0ccfc21 100644 --- a/components/stereo/multiview.cpp +++ b/components/stereo/multiview.cpp @@ -507,15 +507,17 @@ namespace Stereo if (!Stereo::getMultiview()) { auto eye = static_cast(Stereo::Manager::instance().getEye(cv)); - - if (msaa) + if (eye < 2) { - renderStage->setFrameBufferObject(mMultiviewFramebuffer->layerMsaaFbo(eye)); - renderStage->setMultisampleResolveFramebufferObject(mMultiviewFramebuffer->layerFbo(eye)); - } - else - { - renderStage->setFrameBufferObject(mMultiviewFramebuffer->layerFbo(eye)); + if (msaa) + { + renderStage->setFrameBufferObject(mMultiviewFramebuffer->layerMsaaFbo(eye)); + renderStage->setMultisampleResolveFramebufferObject(mMultiviewFramebuffer->layerFbo(eye)); + } + else + { + renderStage->setFrameBufferObject(mMultiviewFramebuffer->layerFbo(eye)); + } } } @@ -543,7 +545,7 @@ namespace Stereo { } - MultiviewFramebuffer::~MultiviewFramebuffer() {} + MultiviewFramebuffer::~MultiviewFramebuffer() = default; void MultiviewFramebuffer::attachColorComponent(GLint sourceFormat, GLint sourceType, GLint internalFormat) {