Hi there! I have created tilemap with script to show some zone on it under the mouse cursor. And it works fine for every tile on map except (0, 0). Can anyone explain me why? I expect that zone with (0, 0) must be green
Steps to reproduce
- Create Tilemap node, set 64x64 size, create 2 layers
- On layer0 draw rectangle map
- Add script with code and hit play:
extends TileMap
var current_mouse_position_in_tilemap_coords : Vector2i
var map_side_x : Array
var map_side_y : Array
enum {
layer0 = 0,
layer1 = 1,
}
func _ready():
map_side_x = range(self.get_used_rect().position[0], self.get_used_rect().end[0])
map_side_y = range(self.get_used_rect().position[1], self.get_used_rect().end[1])
func _physics_process(_delta) :
current_mouse_position_in_tilemap_coords = self.local_to_map(self.get_global_mouse_position())
clear_layer(layer1)
func _process(_delta):
var object : Rect2i = Rect2i(current_mouse_position_in_tilemap_coords, Vector2i(2,2))
var object_foundation : Array = []
for i in range(object.abs().position.x, object.abs().end.x+1) :
for y in range(object.abs().position.y, object.abs().end.y+1) :
object_foundation.append(Vector2i(i, y))
if object_foundation.all(CanBuild) :
for object_cell in object_foundation.size() :
self.set_cell(layer1, object_foundation[object_cell], 0, Vector2i(0,0))
else :
print("Can't build")
for object_cell in object_foundation.size() :
self.set_cell(layer1, object_foundation[object_cell], 0, Vector2i(1,0))
func CanBuild(tile) :
if (tile.x in map_side_x and tile.y in map_side_y) :
return tile
Tested versions
Reproducible: v4.2.2.stable.official [15073af]
System information
Godot v4.2.2.stable - Windows 10.0.19045 - Vulkan (Mobile) - integrated Intel(R) Iris(R) Xe Graphics (Intel Corporation; 31.0.101.3616) - 11th Gen Intel(R) Core™ i5-1145G7 @ 2.60GHz (8 Threads)