Browse Source

Optimized Geometry:setVertex

Alex Szpakowski 12 years ago
parent
commit
97d61dda96
1 changed files with 12 additions and 5 deletions
  1. 12 5
      src/modules/graphics/Geometry.cpp

+ 12 - 5
src/modules/graphics/Geometry.cpp

@@ -122,13 +122,20 @@ void Geometry::setVertex(size_t i, const vertex &v)
 	if (i >= polygon.size())
 		throw Exception("Invalid vertex index");
 
+	float oldx = polygon[i].x;
+	float oldy = polygon[i].y;
+
 	polygon[i] = v;
-	x_min = v.x < x_min ? v.x : x_min;
-	x_max = v.x > x_max ? v.x : x_max;
-	y_min = v.y < y_min ? v.y : y_min;
-	y_max = v.y > y_max ? v.y : y_max;
 
-	triangulate();
+	if (oldx != v.x || oldy != v.y)
+	{
+		x_min = v.x < x_min ? v.x : x_min;
+		x_max = v.x > x_max ? v.x : x_max;
+		y_min = v.y < y_min ? v.y : y_min;
+		y_max = v.y > y_max ? v.y : y_max;
+
+		triangulate();
+	}
 }
 
 void Geometry::flip(bool x, bool y)