From 097d4a442292a367ad309fef05f829229518a079 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 13 Mar 2020 16:32:24 -0400 Subject: [PATCH] Runtime: Collapse emplace_back() calls where applicable Same behavior, but with less code. --- Runtime/AutoMapper/CMapArea.cpp | 9 ++--- Runtime/AutoMapper/CMapUniverse.cpp | 5 +-- Runtime/CGameAllocator.cpp | 12 +++--- Runtime/CSaveWorld.cpp | 58 +++++++++++++++------------ Runtime/Camera/CCameraManager.cpp | 3 +- Runtime/Character/CActorLights.cpp | 3 +- Runtime/Character/CAnimSource.cpp | 10 ++--- Runtime/Character/CBodyState.cpp | 3 +- Runtime/Graphics/CModelBoo.cpp | 25 ++++++------ Runtime/Graphics/CMoviePlayer.cpp | 3 +- Runtime/GuiSys/CHudRadarInterface.cpp | 4 +- Runtime/GuiSys/CTextRenderBuffer.cpp | 4 +- Runtime/Particle/CDecal.cpp | 6 +-- Runtime/Particle/CElementGen.cpp | 48 +++++++++------------- Runtime/Weapon/CGrappleArm.cpp | 3 +- Runtime/World/CGameArea.cpp | 10 ++--- Runtime/World/CStateMachine.cpp | 3 +- Runtime/World/CWorld.cpp | 17 ++++---- 18 files changed, 103 insertions(+), 123 deletions(-) diff --git a/Runtime/AutoMapper/CMapArea.cpp b/Runtime/AutoMapper/CMapArea.cpp index 35ef15402..0e9f7d7c7 100644 --- a/Runtime/AutoMapper/CMapArea.cpp +++ b/Runtime/AutoMapper/CMapArea.cpp @@ -30,8 +30,7 @@ void CMapArea::PostConstruct() { m_mappableObjects.reserve(x28_mappableObjCount); for (u32 i = 0, j = 0; i < x28_mappableObjCount; ++i, j += 0x50) { - m_mappableObjects.emplace_back(x38_moStart + j); - m_mappableObjects.back().PostConstruct(x44_buf.get()); + m_mappableObjects.emplace_back(x38_moStart + j).PostConstruct(x44_buf.get()); } u8* tmp = x3c_vertexStart; @@ -45,8 +44,7 @@ void CMapArea::PostConstruct() { std::vector index; m_surfaces.reserve(x30_surfaceCount); for (u32 i = 0, j = 0; i < x30_surfaceCount; ++i, j += 32) { - m_surfaces.emplace_back(x40_surfaceStart + j); - m_surfaces.back().PostConstruct(x44_buf.get(), index); + m_surfaces.emplace_back(x40_surfaceStart + j).PostConstruct(x44_buf.get(), index); } CGraphics::CommitResources([this, &index](boo::IGraphicsDataFactory::Context& ctx) { @@ -60,8 +58,7 @@ void CMapArea::PostConstruct() { CMapAreaSurface& surf = m_surfaces[i]; surf.m_instances.reserve(instCount); for (u32 inst = 0; inst < instCount; ++inst) { - surf.m_instances.emplace_back(ctx, m_vbo, m_ibo); - CMapAreaSurface::Instance& instance = surf.m_instances.back(); + CMapAreaSurface::Instance& instance = surf.m_instances.emplace_back(ctx, m_vbo, m_ibo); athena::io::MemoryReader r(surf.x1c_outlineOffset, INT_MAX); u32 outlineCount = r.readUint32Big(); diff --git a/Runtime/AutoMapper/CMapUniverse.cpp b/Runtime/AutoMapper/CMapUniverse.cpp index fa1ecfac2..96d452a91 100644 --- a/Runtime/AutoMapper/CMapUniverse.cpp +++ b/Runtime/AutoMapper/CMapUniverse.cpp @@ -17,11 +17,10 @@ CMapUniverse::CMapUniverse(CInputStream& in, u32 version) : x0_hexagonId(in.read CMapUniverse::CMapWorldData::CMapWorldData(CInputStream& in, u32 version) : x0_label(in.readString()), x10_worldAssetId(in.readUint32Big()) { x14_transform.read34RowMajor(in); - u32 worldCount = in.readUint32Big(); + const u32 worldCount = in.readUint32Big(); x44_hexagonXfs.reserve(worldCount); for (u32 i = 0; i < worldCount; ++i) { - x44_hexagonXfs.emplace_back(); - x44_hexagonXfs.back().read34RowMajor(in); + x44_hexagonXfs.emplace_back().read34RowMajor(in); } if (version != 0) diff --git a/Runtime/CGameAllocator.cpp b/Runtime/CGameAllocator.cpp index d602e3c2e..399ee3610 100644 --- a/Runtime/CGameAllocator.cpp +++ b/Runtime/CGameAllocator.cpp @@ -29,14 +29,14 @@ u8* CGameAllocator::Alloc(size_t len) { /* Pad size to allow for allocation information */ allocSz = ROUND_UP_64(allocSz + sizeof(SChunkDescription)); - m_allocations.emplace_back(); - m_allocations.back().memptr.reset(new u8[allocSz]); - u8* ptr = m_allocations.back().memptr.get(); - m_allocations.back().allocSize = allocSz; - m_allocations.back().freeOffset += roundedLen; + auto& alloc = m_allocations.emplace_back(); + alloc.memptr.reset(new u8[allocSz]); + u8* ptr = alloc.memptr.get(); + alloc.allocSize = allocSz; + alloc.freeOffset += roundedLen; SChunkDescription* chunkInfo = reinterpret_cast(ptr); *chunkInfo = SChunkDescription(); - chunkInfo->parent = &m_allocations.back(); + chunkInfo->parent = &alloc; chunkInfo->len = len; return ptr + sizeof(SChunkDescription); } diff --git a/Runtime/CSaveWorld.cpp b/Runtime/CSaveWorld.cpp index 3bfe5b47f..abd25053e 100644 --- a/Runtime/CSaveWorld.cpp +++ b/Runtime/CSaveWorld.cpp @@ -5,43 +5,49 @@ namespace urde { CSaveWorld::CSaveWorld(CInputStream& in) { in.readUint32Big(); - u32 version = in.readUint32Big(); - if (version > 1) + const u32 version = in.readUint32Big(); + if (version > 1) { x0_areaCount = in.readUint32Big(); - if (version > 2) { - u32 cinematicCount = in.readUint32Big(); - x4_cinematics.reserve(cinematicCount); - for (u32 i = 0; i < cinematicCount; ++i) - x4_cinematics.push_back(in.readUint32Big()); - - u32 relayCount = in.readUint32Big(); - x14_relays.reserve(relayCount); - for (u32 i = 0; i < relayCount; ++i) - x14_relays.push_back(in.readUint32Big()); } - u32 layerCount = in.readUint32Big(); + if (version > 2) { + const u32 cinematicCount = in.readUint32Big(); + x4_cinematics.reserve(cinematicCount); + for (u32 i = 0; i < cinematicCount; ++i) { + x4_cinematics.push_back(in.readUint32Big()); + } + + const u32 relayCount = in.readUint32Big(); + x14_relays.reserve(relayCount); + for (u32 i = 0; i < relayCount; ++i) { + x14_relays.push_back(in.readUint32Big()); + } + } + + const u32 layerCount = in.readUint32Big(); x24_layers.reserve(layerCount); for (u32 i = 0; i < layerCount; ++i) { - x24_layers.emplace_back(); - SLayerState& st = x24_layers.back(); + SLayerState& st = x24_layers.emplace_back(); st.x0_area = in.readUint32Big(); st.x4_layer = in.readUint32Big(); } - u32 doorCount = in.readUint32Big(); + const u32 doorCount = in.readUint32Big(); x34_doors.reserve(doorCount); - for (u32 i = 0; i < doorCount; ++i) + for (u32 i = 0; i < doorCount; ++i) { x34_doors.push_back(in.readUint32Big()); - if (version > 0) { - u32 scanCount = in.readUint32Big(); - x44_scans.reserve(scanCount); - for (u32 i = 0; i < scanCount; ++i) { - x44_scans.emplace_back(); - SScanState& st = x44_scans.back(); - st.x0_id = in.readUint32Big(); - st.x4_category = EScanCategory(in.readUint32Big()); - } + } + + if (version <= 0) { + return; + } + + const u32 scanCount = in.readUint32Big(); + x44_scans.reserve(scanCount); + for (u32 i = 0; i < scanCount; ++i) { + SScanState& st = x44_scans.emplace_back(); + st.x0_id = in.readUint32Big(); + st.x4_category = EScanCategory(in.readUint32Big()); } } diff --git a/Runtime/Camera/CCameraManager.cpp b/Runtime/Camera/CCameraManager.cpp index 4ee95c092..e6db7b765 100644 --- a/Runtime/Camera/CCameraManager.cpp +++ b/Runtime/Camera/CCameraManager.cpp @@ -49,8 +49,7 @@ void CCameraManager::RemoveCameraShaker(u32 id) { } int CCameraManager::AddCameraShaker(const CCameraShakeData& data, bool sfx) { - x14_shakers.emplace_back(data); - x14_shakers.back().xbc_shakerId = ++x2c_lastShakeId; + x14_shakers.emplace_back(data).xbc_shakerId = ++x2c_lastShakeId; if (!xa0_24_pendingRumble) { xa0_24_pendingRumble = true; x90_rumbleCooldown = 0.5f; diff --git a/Runtime/Character/CActorLights.cpp b/Runtime/Character/CActorLights.cpp index 97057aaf9..3317c506e 100644 --- a/Runtime/Character/CActorLights.cpp +++ b/Runtime/Character/CActorLights.cpp @@ -266,8 +266,7 @@ bool CActorLights::BuildAreaLightList(const CStateManager& mgr, const CGameArea& zeus::CSphere sphere(light.GetPosition(), light.GetRadius() * 2.f); if (aabb.intersects(sphere)) { /* Light passes as candidate */ - valList.emplace_back(); - SLightValue& value = valList.back(); + SLightValue& value = valList.emplace_back(); value.x0_areaLightIdx = lightIdx; value.x4_color = light.GetNormalIndependentLightingAtPoint(vec); value.x4_color.a() = 0.f; diff --git a/Runtime/Character/CAnimSource.cpp b/Runtime/Character/CAnimSource.cpp index a826eeb86..c3c368ec3 100644 --- a/Runtime/Character/CAnimSource.cpp +++ b/Runtime/Character/CAnimSource.cpp @@ -51,18 +51,16 @@ std::unique_ptr RotationAndOffsetStorage::GetRotationsAndOffsets(const } RotationAndOffsetStorage::CRotationAndOffsetVectors::CRotationAndOffsetVectors(CInputStream& in) { - u32 quatCount = in.readUint32Big(); + const u32 quatCount = in.readUint32Big(); x0_rotations.reserve(quatCount); for (u32 i = 0; i < quatCount; ++i) { - x0_rotations.emplace_back(); - x0_rotations.back().readBig(in); + x0_rotations.emplace_back().readBig(in); } - u32 vecCount = in.readUint32Big(); + const u32 vecCount = in.readUint32Big(); x10_offsets.reserve(vecCount); for (u32 i = 0; i < vecCount; ++i) { - x10_offsets.emplace_back(); - x10_offsets.back().readBig(in); + x10_offsets.emplace_back().readBig(in); } } diff --git a/Runtime/Character/CBodyState.cpp b/Runtime/Character/CBodyState.cpp index 9b903a031..a99736fe9 100644 --- a/Runtime/Character/CBodyState.cpp +++ b/Runtime/Character/CBodyState.cpp @@ -1721,8 +1721,7 @@ pas::EAnimationState CBSLocomotion::GetBodyStateTransition(float, CBodyControlle CBSBiPedLocomotion::CBSBiPedLocomotion(CActor& actor) { const CPASDatabase& pasDatabase = actor.GetModelData()->GetAnimationData()->GetCharacterInfo().GetPASDatabase(); for (int i = 0; i < 14; ++i) { - x8_anims.emplace_back(); - rstl::reserved_vector, 8>& innerVec = x8_anims.back(); + rstl::reserved_vector, 8>& innerVec = x8_anims.emplace_back(); for (int j = 0; j < 8; ++j) { CPASAnimParmData parms(5, CPASAnimParm::FromEnum(j), CPASAnimParm::FromEnum(i)); std::pair best = pasDatabase.FindBestAnimation(parms, -1); diff --git a/Runtime/Graphics/CModelBoo.cpp b/Runtime/Graphics/CModelBoo.cpp index ce5b027c2..715267e42 100644 --- a/Runtime/Graphics/CModelBoo.cpp +++ b/Runtime/Graphics/CModelBoo.cpp @@ -263,13 +263,15 @@ GeometryUniformLayout::GeometryUniformLayout(const CModel* model, const Material } CBooModel::ModelInstance* CBooModel::PushNewModelInstance(int sharedLayoutBuf) { - if (!x40_24_texturesLoaded && !g_DummyTextures) + if (!x40_24_texturesLoaded && !g_DummyTextures) { return nullptr; + } - if (m_instances.size() >= 512) + if (m_instances.size() >= 512) { Log.report(logvisor::Fatal, fmt("Model buffer overflow")); - m_instances.emplace_back(); - ModelInstance& newInst = m_instances.back(); + } + + ModelInstance& newInst = m_instances.emplace_back(); CGraphics::CommitResources([&](boo::IGraphicsDataFactory::Context& ctx) { /* Build geometry uniform buffer if shared not available */ @@ -371,8 +373,7 @@ CBooModel::ModelInstance* CBooModel::PushNewModelInstance(int sharedLayoutBuf) { const CModelShaders::ShaderPipelines& pipelines = m_pipelines->at(surf.m_data.matIdx); - newInst.m_shaderDataBindings.emplace_back(); - std::vector>& extendeds = newInst.m_shaderDataBindings.back(); + std::vector>& extendeds = newInst.m_shaderDataBindings.emplace_back(); extendeds.reserve(pipelines->size()); EExtendedShader idx{}; @@ -1171,10 +1172,9 @@ CModel::CModel(std::unique_ptr&& in, u32 /* dataLen */, IObjectStore* stor const u8* dataCur = data.get() + ROUND_UP_32(0x2c + secCount * 4); const u32* secSizeCur = reinterpret_cast(data.get() + 0x2c); for (u32 i = 0; i < matSetCount; ++i) { - u32 matSetSz = hecl::SBig(*secSizeCur); + const u32 matSetSz = hecl::SBig(*secSizeCur); const u8* sec = MemoryFromPartData(dataCur, secSizeCur); - x18_matSets.emplace_back(i); - SShader& shader = x18_matSets.back(); + SShader& shader = x18_matSets.emplace_back(i); athena::io::MemoryReader r(sec, matSetSz); shader.m_matSet.read(r); CBooModel::MakeTexturesFromMats(shader.m_matSet, shader.x0_textures, *store); @@ -1217,13 +1217,12 @@ CModel::CModel(std::unique_ptr&& in, u32 /* dataLen */, IObjectStore* stor return true; } BooTrace); - u32 surfCount = hecl::SBig(*reinterpret_cast(surfInfo)); + const u32 surfCount = hecl::SBig(*reinterpret_cast(surfInfo)); x8_surfaces.reserve(surfCount); for (u32 i = 0; i < surfCount; ++i) { - u32 surfSz = hecl::SBig(*secSizeCur); + const u32 surfSz = hecl::SBig(*secSizeCur); const u8* sec = MemoryFromPartData(dataCur, secSizeCur); - x8_surfaces.emplace_back(); - CBooSurface& surf = x8_surfaces.back(); + CBooSurface& surf = x8_surfaces.emplace_back(); surf.selfIdx = i; athena::io::MemoryReader r(sec, surfSz); surf.m_data.read(r); diff --git a/Runtime/Graphics/CMoviePlayer.cpp b/Runtime/Graphics/CMoviePlayer.cpp index ca90937f8..f4af28744 100644 --- a/Runtime/Graphics/CMoviePlayer.cpp +++ b/Runtime/Graphics/CMoviePlayer.cpp @@ -205,8 +205,7 @@ CMoviePlayer::CMoviePlayer(const char* path, float preLoadSeconds, bool loop, bo /* Allocate textures here (rather than at decode time) */ x80_textures.reserve(3); for (int i = 0; i < 3; ++i) { - x80_textures.emplace_back(); - CTHPTextureSet& set = x80_textures.back(); + CTHPTextureSet& set = x80_textures.emplace_back(); if (deinterlace) { /* urde addition: this way interlaced THPs don't look horrible */ set.Y[0] = ctx.newDynamicTexture(x6c_videoInfo.width, x6c_videoInfo.height / 2, boo::TextureFormat::I8, diff --git a/Runtime/GuiSys/CHudRadarInterface.cpp b/Runtime/GuiSys/CHudRadarInterface.cpp index 756423910..aea967b02 100644 --- a/Runtime/GuiSys/CHudRadarInterface.cpp +++ b/Runtime/GuiSys/CHudRadarInterface.cpp @@ -31,8 +31,8 @@ CHudRadarInterface::CHudRadarInterface(CGuiFrame& baseHud, CStateManager& stateM void CHudRadarInterface::DoDrawRadarPaint(const zeus::CVector3f& translate, float radius, const zeus::CColor& color) const { radius *= 4.f; - m_paintInsts.emplace_back(); - CRadarPaintShader::Instance& inst = m_paintInsts.back(); + + CRadarPaintShader::Instance& inst = m_paintInsts.emplace_back(); inst.pos[0] = translate + zeus::CVector3f(-radius, 0.f, radius); inst.uv[0].assign(0.f, 1.f); inst.pos[1] = translate + zeus::CVector3f(-radius, 0.f, -radius); diff --git a/Runtime/GuiSys/CTextRenderBuffer.cpp b/Runtime/GuiSys/CTextRenderBuffer.cpp index e797951e4..2688855fe 100644 --- a/Runtime/GuiSys/CTextRenderBuffer.cpp +++ b/Runtime/GuiSys/CTextRenderBuffer.cpp @@ -185,8 +185,8 @@ void CTextRenderBuffer::AddCharacter(const zeus::CVector2i& offset, char16_t ch, m_primitiveMarks.push_back({Command::CharacterRender, m_activeFontCh, chs.m_charCount++}); else { const CGlyph* glyph = chs.m_font.GetObj()->GetGlyph(ch); - chs.m_charData.emplace_back(); - CTextSupportShader::CharacterInstance& inst = chs.m_charData.back(); + + CTextSupportShader::CharacterInstance& inst = chs.m_charData.emplace_back(); inst.SetMetrics(*glyph, offset); inst.m_fontColor = m_main * color; inst.m_outlineColor = m_outline * color; diff --git a/Runtime/Particle/CDecal.cpp b/Runtime/Particle/CDecal.cpp index 94297c9d7..70ca59d45 100644 --- a/Runtime/Particle/CDecal.cpp +++ b/Runtime/Particle/CDecal.cpp @@ -114,8 +114,7 @@ void CDecal::RenderQuad(CQuadDecal& decal, const SQuadDescr& desc) const { g_instTexData.clear(); g_instTexData.reserve(1); - g_instTexData.emplace_back(); - SParticleInstanceTex& inst = g_instTexData.back(); + SParticleInstanceTex& inst = g_instTexData.emplace_back(); if (decal.x8_rotation == 0.f) { inst.pos[0] = zeus::CVector3f(-size, 0.001f, size); inst.pos[1] = zeus::CVector3f(size, 0.001f, size); @@ -142,8 +141,7 @@ void CDecal::RenderQuad(CQuadDecal& decal, const SQuadDescr& desc) const { g_instNoTexData.clear(); g_instNoTexData.reserve(1); - g_instNoTexData.emplace_back(); - SParticleInstanceNoTex& inst = g_instNoTexData.back(); + SParticleInstanceNoTex& inst = g_instNoTexData.emplace_back(); if (decal.x8_rotation == 0.f) { inst.pos[0] = zeus::CVector3f(-size, 0.001f, size); inst.pos[1] = zeus::CVector3f(size, 0.001f, size); diff --git a/Runtime/Particle/CElementGen.cpp b/Runtime/Particle/CElementGen.cpp index e1d614970..1353886a9 100644 --- a/Runtime/Particle/CElementGen.cpp +++ b/Runtime/Particle/CElementGen.cpp @@ -493,17 +493,18 @@ void CElementGen::CreateNewParticles(int count) { CParticleGlobals::instance()->m_particleAccessParameters = nullptr; for (int i = 0; i < count; ++i) { - x30_particles.emplace_back(); + CParticle& particle = x30_particles.emplace_back(); ++g_ParticleAliveCount; ++x25c_activeParticleCount; ++x260_cumulativeParticles; - if (x2c_orientType == EModelOrientationType::One) + if (x2c_orientType == EModelOrientationType::One) { x50_parentMatrices[x30_particles.size() - 1] = x1d8_orientation.buildMatrix3f(); + } - CParticle& particle = x30_particles.back(); particle.x28_startFrame = x74_curFrame; - if (CIntElement* ltme = desc->x34_x28_LTME.get()) + if (CIntElement* ltme = desc->x34_x28_LTME.get()) { ltme->GetValue(0, particle.x0_endFrame); + } CParticleGlobals::instance()->SetParticleLifetime(particle.x0_endFrame); CParticleGlobals::instance()->UpdateParticleLifetimeTweenValues(0); g_currentParticle = &particle; @@ -994,8 +995,7 @@ void CElementGen::RenderModels(const CActorLights* actorLights) { switch (m_shaderClass) { case CElementGenShaders::EShaderClass::Tex: { - g_instTexData.emplace_back(); - SParticleInstanceTex& inst = g_instTexData.back(); + SParticleInstanceTex& inst = g_instTexData.emplace_back(); inst.pos[0] = CGraphics::g_GXModelView * zeus::CVector3f{0.5f, 0.f, 0.5f}; inst.pos[1] = CGraphics::g_GXModelView * zeus::CVector3f{-0.5f, 0.f, 0.5f}; inst.pos[2] = CGraphics::g_GXModelView * zeus::CVector3f{0.5f, 0.f, -0.5f}; @@ -1008,8 +1008,7 @@ void CElementGen::RenderModels(const CActorLights* actorLights) { break; } case CElementGenShaders::EShaderClass::NoTex: { - g_instNoTexData.emplace_back(); - SParticleInstanceNoTex& inst = g_instNoTexData.back(); + SParticleInstanceNoTex& inst = g_instNoTexData.emplace_back(); inst.pos[0] = CGraphics::g_GXModelView * zeus::CVector3f{0.5f, 0.f, 0.5f}; inst.pos[1] = CGraphics::g_GXModelView * zeus::CVector3f{-0.5f, 0.f, 0.5f}; inst.pos[2] = CGraphics::g_GXModelView * zeus::CVector3f{0.5f, 0.f, -0.5f}; @@ -1327,8 +1326,7 @@ void CElementGen::RenderParticles() { if (0.f == particle.x30_lineWidthOrRota) { switch (m_shaderClass) { case CElementGenShaders::EShaderClass::Tex: { - g_instTexData.emplace_back(); - SParticleInstanceTex& inst = g_instTexData.back(); + SParticleInstanceTex& inst = g_instTexData.emplace_back(); inst.pos[0] = zeus::CVector4f{viewPoint.x() + size, viewPoint.y(), viewPoint.z() + size, 1.f}; inst.pos[1] = zeus::CVector4f{viewPoint.x() - size, viewPoint.y(), viewPoint.z() + size, 1.f}; inst.pos[2] = zeus::CVector4f{viewPoint.x() + size, viewPoint.y(), viewPoint.z() - size, 1.f}; @@ -1341,8 +1339,7 @@ void CElementGen::RenderParticles() { break; } case CElementGenShaders::EShaderClass::NoTex: { - g_instNoTexData.emplace_back(); - SParticleInstanceNoTex& inst = g_instNoTexData.back(); + SParticleInstanceNoTex& inst = g_instNoTexData.emplace_back(); inst.pos[0] = zeus::CVector4f{viewPoint.x() + size, viewPoint.y(), viewPoint.z() + size, 1.f}; inst.pos[1] = zeus::CVector4f{viewPoint.x() - size, viewPoint.y(), viewPoint.z() + size, 1.f}; inst.pos[2] = zeus::CVector4f{viewPoint.x() + size, viewPoint.y(), viewPoint.z() - size, 1.f}; @@ -1360,8 +1357,7 @@ void CElementGen::RenderParticles() { switch (m_shaderClass) { case CElementGenShaders::EShaderClass::Tex: { - g_instTexData.emplace_back(); - SParticleInstanceTex& inst = g_instTexData.back(); + SParticleInstanceTex& inst = g_instTexData.emplace_back(); inst.pos[0] = zeus::CVector4f{viewPoint.x() + sinT + cosT, viewPoint.y(), viewPoint.z() + cosT - sinT, 1.f}; inst.pos[1] = zeus::CVector4f{viewPoint.x() + sinT - cosT, viewPoint.y(), viewPoint.z() + sinT + cosT, 1.f}; inst.pos[2] = @@ -1376,8 +1372,7 @@ void CElementGen::RenderParticles() { break; } case CElementGenShaders::EShaderClass::NoTex: { - g_instNoTexData.emplace_back(); - SParticleInstanceNoTex& inst = g_instNoTexData.back(); + SParticleInstanceNoTex& inst = g_instNoTexData.emplace_back(); inst.pos[0] = zeus::CVector4f{viewPoint.x() + sinT + cosT, viewPoint.y(), viewPoint.z() + cosT - sinT, 1.f}; inst.pos[1] = zeus::CVector4f{viewPoint.x() + sinT - cosT, viewPoint.y(), viewPoint.z() + sinT + cosT, 1.f}; inst.pos[2] = @@ -1437,8 +1432,7 @@ void CElementGen::RenderParticles() { switch (m_shaderClass) { case CElementGenShaders::EShaderClass::Tex: { - g_instTexData.emplace_back(); - SParticleInstanceTex& inst = g_instTexData.back(); + SParticleInstanceTex& inst = g_instTexData.emplace_back(); viewPoint += rightVec * 0.5f; inst.pos[0] = zeus::CVector4f{viewPoint + 0.5f * foreVec}; inst.pos[1] = zeus::CVector4f{viewPoint - 0.5f * foreVec}; @@ -1453,8 +1447,7 @@ void CElementGen::RenderParticles() { break; } case CElementGenShaders::EShaderClass::NoTex: { - g_instNoTexData.emplace_back(); - SParticleInstanceNoTex& inst = g_instNoTexData.back(); + SParticleInstanceNoTex& inst = g_instNoTexData.emplace_back(); viewPoint += rightVec * 0.5f; inst.pos[0] = zeus::CVector4f{viewPoint + 0.5f * foreVec}; inst.pos[1] = zeus::CVector4f{viewPoint - 0.5f * foreVec}; @@ -1521,8 +1514,7 @@ void CElementGen::RenderParticles() { switch (m_shaderClass) { case CElementGenShaders::EShaderClass::Tex: { - g_instTexData.emplace_back(); - SParticleInstanceTex& inst = g_instTexData.back(); + SParticleInstanceTex& inst = g_instTexData.emplace_back(); inst.pos[0] = zeus::CVector4f{vec2.x() + size, vec2.y(), vec2.z() + size, 1.f}; inst.pos[1] = zeus::CVector4f{vec2.x() - size, vec2.y(), vec2.z() + size, 1.f}; inst.pos[2] = zeus::CVector4f{vec2.x() + size, vec2.y(), vec2.z() - size, 1.f}; @@ -1535,8 +1527,7 @@ void CElementGen::RenderParticles() { break; } case CElementGenShaders::EShaderClass::NoTex: { - g_instNoTexData.emplace_back(); - SParticleInstanceNoTex& inst = g_instNoTexData.back(); + SParticleInstanceNoTex& inst = g_instNoTexData.emplace_back(); inst.pos[0] = zeus::CVector4f{vec2.x() + size, vec2.y(), vec2.z() + size, 1.f}; inst.pos[1] = zeus::CVector4f{vec2.x() - size, vec2.y(), vec2.z() + size, 1.f}; inst.pos[2] = zeus::CVector4f{vec2.x() + size, vec2.y(), vec2.z() - size, 1.f}; @@ -1559,8 +1550,7 @@ void CElementGen::RenderParticles() { switch (m_shaderClass) { case CElementGenShaders::EShaderClass::Tex: { - g_instTexData.emplace_back(); - SParticleInstanceTex& inst = g_instTexData.back(); + SParticleInstanceTex& inst = g_instTexData.emplace_back(); inst.pos[0] = zeus::CVector4f{vec2.x() + sinT + cosT, vec2.y(), vec2.z() + cosT - sinT, 1.f}; inst.pos[1] = zeus::CVector4f{vec2.x() + sinT - cosT, vec2.y(), vec2.z() + sinT + cosT, 1.f}; inst.pos[2] = zeus::CVector4f{vec2.x() + (cosT - sinT), vec2.y(), vec2.z() + (-cosT - sinT), 1.f}; @@ -1573,8 +1563,7 @@ void CElementGen::RenderParticles() { break; } case CElementGenShaders::EShaderClass::NoTex: { - g_instNoTexData.emplace_back(); - SParticleInstanceNoTex& inst = g_instNoTexData.back(); + SParticleInstanceNoTex& inst = g_instNoTexData.emplace_back(); inst.pos[0] = zeus::CVector4f{vec2.x() + sinT + cosT, vec2.y(), vec2.z() + cosT - sinT, 1.f}; inst.pos[1] = zeus::CVector4f{vec2.x() + sinT - cosT, vec2.y(), vec2.z() + sinT + cosT, 1.f}; inst.pos[2] = zeus::CVector4f{vec2.x() + (cosT - sinT), vec2.y(), vec2.z() + (-cosT - sinT), 1.f}; @@ -1718,8 +1707,7 @@ void CElementGen::RenderParticlesIndirectTexture() { CGraphics::ResolveSpareTexture(clipRect); - g_instIndTexData.emplace_back(); - SParticleInstanceIndTex& inst = g_instIndTexData.back(); + SParticleInstanceIndTex& inst = g_instIndTexData.emplace_back(); inst.pos[0] = zeus::CVector4f{viewPoint.x() + size, viewPoint.y(), viewPoint.z() + size, 1.f}; inst.pos[1] = zeus::CVector4f{viewPoint.x() - size, viewPoint.y(), viewPoint.z() + size, 1.f}; inst.pos[2] = zeus::CVector4f{viewPoint.x() + size, viewPoint.y(), viewPoint.z() - size, 1.f}; diff --git a/Runtime/Weapon/CGrappleArm.cpp b/Runtime/Weapon/CGrappleArm.cpp index 715b61c32..66f994d91 100644 --- a/Runtime/Weapon/CGrappleArm.cpp +++ b/Runtime/Weapon/CGrappleArm.cpp @@ -69,8 +69,7 @@ void CGrappleArm::BuildSuitDependencyList() { x184_grappleArm.Lock(); for (const char* name : skDependencyNames) { TLockedToken dgrp = g_SimplePool->GetObj(name); - x19c_suitDeps.emplace_back(); - std::vector& depsOut = x19c_suitDeps.back(); + std::vector& depsOut = x19c_suitDeps.emplace_back(); FillTokenVector(dgrp->GetObjectTagVector(), depsOut); } } diff --git a/Runtime/World/CGameArea.cpp b/Runtime/World/CGameArea.cpp index dc47470a5..8172d8bc0 100644 --- a/Runtime/World/CGameArea.cpp +++ b/Runtime/World/CGameArea.cpp @@ -234,11 +234,10 @@ void CGameArea::CAreaFog::DisableFog() { x0_fogMode = ERglFogMode::None; } static std::vector ReadDependencyList(CInputStream& in) { std::vector ret; - u32 count = in.readUint32Big(); + const u32 count = in.readUint32Big(); ret.reserve(count); for (u32 i = 0; i < count; ++i) { - ret.emplace_back(); - ret.back().readMLVL(in); + ret.emplace_back().readMLVL(in); } return ret; } @@ -1072,13 +1071,12 @@ void CGameArea::FillInStaticGeometry(bool textures) { ibo = ctx.newStaticBuffer(boo::BufferUse::Index, secIt->first, 4, inst.m_hmdlMeta.indexCount); ++secIt; - u32 surfCount = hecl::SBig(*reinterpret_cast(secIt->first)); + const u32 surfCount = hecl::SBig(*reinterpret_cast(secIt->first)); inst.m_surfaces.reserve(surfCount); inst.m_shaders.reserve(surfCount); ++secIt; for (u32 j = 0; j < surfCount; ++j) { - inst.m_surfaces.emplace_back(); - CBooSurface& surf = inst.m_surfaces.back(); + CBooSurface& surf = inst.m_surfaces.emplace_back(); surf.selfIdx = j; athena::io::MemoryReader r(secIt->first, secIt->second); surf.m_data.read(r); diff --git a/Runtime/World/CStateMachine.cpp b/Runtime/World/CStateMachine.cpp index c45e53bcf..f8979a42d 100644 --- a/Runtime/World/CStateMachine.cpp +++ b/Runtime/World/CStateMachine.cpp @@ -36,8 +36,7 @@ CStateMachine::CStateMachine(CInputStream& in) { float arg = in.readFloatBig(); CAiTrigger* newTrig; if (k < lastTriggerIdx) { - x10_triggers.emplace_back(); - newTrig = &x10_triggers.back(); + newTrig = &x10_triggers.emplace_back(); } else { newTrig = &firstTrig[j]; } diff --git a/Runtime/World/CWorld.cpp b/Runtime/World/CWorld.cpp index 13c12cef2..272ae9fd9 100644 --- a/Runtime/World/CWorld.cpp +++ b/Runtime/World/CWorld.cpp @@ -72,27 +72,30 @@ std::vector CWorld::CRelay::ReadMemoryRelays(athena::io::MemoryR } void CWorldLayers::ReadWorldLayers(athena::io::MemoryReader& r, int version, CAssetId mlvlId) { - if (version <= 14) + if (version <= 14) { return; + } CWorldLayers ret; u32 areaCount = r.readUint32Big(); ret.m_areas.reserve(areaCount); for (u32 i = 0; i < areaCount; ++i) { - ret.m_areas.emplace_back(); - ret.m_areas.back().m_layerCount = r.readUint32Big(); - ret.m_areas.back().m_layerBits = r.readUint64Big(); + auto& area = ret.m_areas.emplace_back(); + area.m_layerCount = r.readUint32Big(); + area.m_layerBits = r.readUint64Big(); } - u32 nameCount = r.readUint32Big(); + const u32 nameCount = r.readUint32Big(); ret.m_names.reserve(nameCount); - for (u32 i = 0; i < nameCount; ++i) + for (u32 i = 0; i < nameCount; ++i) { ret.m_names.push_back(r.readString()); + } areaCount = r.readUint32Big(); - for (u32 i = 0; i < areaCount; ++i) + for (u32 i = 0; i < areaCount; ++i) { ret.m_areas[i].m_startNameIdx = r.readUint32Big(); + } CWorldState& wldState = g_GameState->StateForWorld(mlvlId); wldState.GetLayerState()->InitializeWorldLayers(ret.m_areas);