light: BounceLightsForFaceNum: avoid an unnecessary std::vector copy

This commit is contained in:
Eric Wasylishen 2017-03-14 17:21:01 -06:00
parent b8f015d452
commit 154158ddba
3 changed files with 6 additions and 4 deletions

View File

@ -44,7 +44,7 @@ typedef struct {
// public functions
const std::vector<bouncelight_t> &BounceLights();
std::vector<bouncelight_t> BounceLightsForFaceNum(int facenum);
const std::vector<bouncelight_t> &BounceLightsForFaceNum(int facenum);
void MakeTextureColors (const bsp2_t *bsp);
void MakeBounceLights (const globalconfig_t &cfg, const bsp2_t *bsp);
/** Returns color components in [0, 255] */

View File

@ -261,13 +261,15 @@ const std::vector<bouncelight_t> &BounceLights()
return radlights;
}
std::vector<bouncelight_t> BounceLightsForFaceNum(int facenum)
const std::vector<bouncelight_t> &BounceLightsForFaceNum(int facenum)
{
const auto &vec = radlightsByFacenum.find(facenum);
if (vec != radlightsByFacenum.end()) {
return vec->second;
}
return {};
static std::vector<bouncelight_t> empty;
return empty;
}
glm::vec3 Palette_GetColor(int i)

View File

@ -1644,7 +1644,7 @@ LightFace_BounceLightsDebug(const lightsurf_t *lightsurf, lightmapdict_t *lightm
// reset all lightmaps to black (lazily)
Lightmap_ClearAll(lightmaps);
std::vector<bouncelight_t> vpls = BounceLightsForFaceNum(Face_GetNum(lightsurf->bsp, lightsurf->face));
const std::vector<bouncelight_t> &vpls = BounceLightsForFaceNum(Face_GetNum(lightsurf->bsp, lightsurf->face));
if (vpls.size()) {
Q_assert(vpls.size() == 1); // for now only 1 vpl per face