Browse Source

TileMap: Fix floor precision in world_to_map on tile borders

Fixes #23250, supersedes #23315.
Rémi Verschelde 6 years ago
parent
commit
b9232ce7a3
1 changed files with 5 additions and 0 deletions
  1. 5 0
      scene/2d/tile_map.cpp

+ 5 - 0
scene/2d/tile_map.cpp

@@ -1445,6 +1445,11 @@ Vector2 TileMap::world_to_map(const Vector2 &p_pos) const {
 		default: {}
 		default: {}
 	}
 	}
 
 
+	// Account for precision errors on the border (GH-23250).
+	// 0.00005 is 5*CMP_EPSILON, results would start being unpredictible if
+	// cell size is > 15,000, but we can hardly have more precision anyway with
+	// floating point.
+	ret += Vector2(0.00005, 0.00005);
 	return ret.floor();
 	return ret.floor();
 }
 }