42 lines
1007 B
GDScript
42 lines
1007 B
GDScript
class_name Grid
|
|
extends Node2D
|
|
|
|
@export var width: int = 12
|
|
@export var height: int = 12
|
|
@export var cell_size: Vector2 = Vector2(128, 128)
|
|
|
|
@export var show_debug: bool = false
|
|
@export var show_grid: bool = true
|
|
@export var show_label: bool = true
|
|
|
|
var grid: Dictionary = {}
|
|
|
|
func generateGrid():
|
|
print("Generating Grid")
|
|
for x in width:
|
|
for y in height:
|
|
grid[Vector2(x,y)] = null
|
|
if show_grid:
|
|
var rect = ReferenceRect.new()
|
|
rect.position = gridToWorld(Vector2(x,y))
|
|
rect.size = cell_size
|
|
rect.editor_only = false
|
|
$Debug.add_child(rect)
|
|
# print("Adding Rect ", x, "| ", y)
|
|
if show_label:
|
|
var label = Label.new()
|
|
label.position = gridToWorld(Vector2(x,y))
|
|
label.text = str(Vector2(x,y))
|
|
$Debug.add_child(label)
|
|
print("Grid generation done.")
|
|
|
|
func _draw() -> void:
|
|
if show_debug:
|
|
$Debug.show()
|
|
|
|
func gridToWorld(_pos: Vector2) -> Vector2:
|
|
return _pos * cell_size
|
|
|
|
|
|
func worldToGrid(_pos: Vector2) -> Vector2:
|
|
return floor(_pos / cell_size) |