浏览代码

TerrainTile::topVisitableObj: avoid costly vector copying

ArseniyShestakov 10 年之前
父节点
当前提交
649ebfad2f
共有 1 个文件被更改,包括 6 次插入4 次删除
  1. 6 4
      lib/mapping/CMap.cpp

+ 6 - 4
lib/mapping/CMap.cpp

@@ -132,11 +132,13 @@ Obj TerrainTile::topVisitableId(bool excludeTop) const
 
 
 CGObjectInstance * TerrainTile::topVisitableObj(bool excludeTop) const
 CGObjectInstance * TerrainTile::topVisitableObj(bool excludeTop) const
 {
 {
-	auto visitableObj = visitableObjects;
-	if(excludeTop && visitableObj.size())
-		visitableObj.pop_back();
+	if(visitableObjects.empty() || (excludeTop && visitableObjects.size() == 1))
+		return nullptr;
 
 
-	return visitableObj.size() ? visitableObj.back() : nullptr;
+	if(excludeTop)
+		return visitableObjects[visitableObjects.size()-2];
+
+	return visitableObjects.back();
 }
 }
 
 
 bool TerrainTile::isCoastal() const
 bool TerrainTile::isCoastal() const