Skip to content

Commit

Permalink
fix #4820
Browse files Browse the repository at this point in the history
  • Loading branch information
Johan Rehnberg committed Jun 19, 2015
1 parent 5812f46 commit b543cf3
Showing 1 changed file with 20 additions and 17 deletions.
37 changes: 20 additions & 17 deletions rts/Rendering/Models/WorldObjectModelRenderer.cpp
Expand Up @@ -93,23 +93,24 @@ void IWorldObjectModelRenderer::DrawModels(const ProjectileSet& models)
void IWorldObjectModelRenderer::AddUnit(const CUnit* u)
{
UnitSet& us = units[TEX_TYPE(u)];
assert(std::find(us.begin(), us.end(), const_cast<CUnit*>(u)) == us.end());

// updating a unit's draw-position requires mutability
us.push_back(const_cast<CUnit*>(u));
numUnits += 1;
if (std::find(us.begin(), us.end(), const_cast<CUnit*>(u)) == us.end()) {
// updating a unit's draw-position requires mutability
us.push_back(const_cast<CUnit*>(u));
numUnits += 1;
}
}

void IWorldObjectModelRenderer::DelUnit(const CUnit* u)
{
UnitSet& us = units[TEX_TYPE(u)];
assert(std::find(us.begin(), us.end(), const_cast<CUnit*>(u)) != us.end());

auto it = std::find(us.begin(), us.end(), const_cast<CUnit*>(u));
*it = us.back();
us.pop_back();
numUnits -= 1;

if (it != us.end()) {
*it = us.back();
us.pop_back();
numUnits -= 1;
}
if (us.empty())
units.erase(TEX_TYPE(u));
}
Expand Down Expand Up @@ -163,22 +164,24 @@ void IWorldObjectModelRenderer::SwapFeatures()
void IWorldObjectModelRenderer::AddProjectile(const CProjectile* p)
{
ProjectileSet& ps = projectiles[TEX_TYPE(p)];
assert(std::find(ps.begin(), ps.end(), const_cast<CProjectile*>(p)) == ps.end());

// updating a unit's draw-position requires mutability
ps.push_back(const_cast<CProjectile*>(p));
numProjectiles += 1;
if (std::find(ps.begin(), ps.end(), const_cast<CProjectile*>(p)) == ps.end()) {
// updating a unit's draw-position requires mutability
ps.push_back(const_cast<CProjectile*>(p));
numProjectiles += 1;
}
}

void IWorldObjectModelRenderer::DelProjectile(const CProjectile* p)
{
ProjectileSet &ps = projectiles[TEX_TYPE(p)];
assert(std::find(ps.begin(), ps.end(), const_cast<CProjectile*>(p)) != ps.end());

auto it = std::find(ps.begin(), ps.end(), const_cast<CProjectile*>(p));
*it = ps.back();
ps.pop_back();
numProjectiles -= 1;
if (it != ps.end()) {
*it = ps.back();
ps.pop_back();
numProjectiles -= 1;
}
}


Expand Down

0 comments on commit b543cf3

Please sign in to comment.