Last active
September 24, 2023 19:38
-
-
Save NathoSteveo/9bb4d1bb58b0b6ccde7e924444a7d43a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@tool | |
extends Node3D | |
@export var grid_parent: Node3D | |
var grid_size | |
var block_size | |
@export var current_grid_size: int | |
@export var current_block_size: int | |
var grid_block = preload("res://assets/open_world/scenes/grid_block.tscn") | |
var grid_block_mat = preload("res://assets/open_world/shaders/grid_block.tres") | |
func _ready(): | |
GlobalSignals.connect("spawn_grid_button_pressed", _spawn_grid) | |
GlobalSignals.connect("clear_grid_button_pressed", _clear_grid) | |
func _spawn_grid(): | |
@warning_ignore("integer_division") | |
grid_size = GlobalSignals.grid_size / 2 | |
block_size = GlobalSignals.block_size | |
current_grid_size = grid_size*2 | |
current_block_size = block_size | |
# [ SPAWN GRID ] | |
#if grid_parent.get_child_count() == 0 and grid_size != 0: | |
var child_count = grid_parent.get_child_count() | |
var actual_grid_size = grid_size*2 | |
if grid_size != 0: | |
if child_count != actual_grid_size*actual_grid_size: | |
var grid_block_spawn = Vector3(block_size/2,0,block_size/2) | |
for z in range(-grid_size, grid_size): | |
for x in range(-grid_size, grid_size): | |
var world_position = Vector3(x * block_size + grid_block_spawn.x, 0, z * block_size + grid_block_spawn.z) | |
var grid_block_instance = grid_block.instantiate() | |
grid_block_instance.transform.origin = world_position | |
grid_parent.add_child(grid_block_instance) | |
grid_block_instance.set_owner(owner) | |
grid_block_instance.set_display_folded(true) | |
set_editable_instance(grid_block_instance, true) | |
var parent_name = (str("block [ ",world_position.x,",",world_position.z," ]")) | |
grid_block_instance.name = parent_name | |
grid_block_instance.get_node("StaticBody3D/Label3D").text = parent_name | |
if block_size > 2: | |
grid_block_instance.get_node("StaticBody3D/CollisionShape3D/CSGBox3D").scale.x = block_size/2 | |
grid_block_instance.get_node("StaticBody3D/CollisionShape3D/CSGBox3D").scale.y = block_size/2 | |
grid_block_instance.get_node("StaticBody3D/CollisionShape3D/CSGBox3D").scale.z = block_size/2 | |
grid_block_mat.uv1_scale.x = (0.5)/(block_size/2) | |
grid_block_mat.uv1_scale.y = (0.5)/(block_size/2) | |
grid_block_mat.uv1_scale.z = (0.5)/(block_size/2) | |
grid_block_instance.get_node("StaticBody3D").transform.origin.y = block_size/2 | |
else: | |
grid_block_mat.uv1_scale.x = (0.5) | |
grid_block_mat.uv1_scale.y = (0.5) | |
grid_block_mat.uv1_scale.z = (0.5) | |
grid_parent.name = "[ GRID ]" | |
grid_parent.name = (str(grid_parent.name,"[ ",grid_parent.get_child_count()," ]")) | |
print("[ grid size: ",GlobalSignals.grid_size," ]") | |
print("[ block size: ",GlobalSignals.block_size," ]") | |
print("[ SPAWNED GRID ]") | |
print(str("[ Total blocks: ",grid_parent.get_child_count()," ]")) | |
func _clear_grid(): | |
if grid_parent.get_child_count() != 0: | |
for i in range(grid_parent.get_child_count()): | |
var child_node = grid_parent.get_child(i) | |
child_node.queue_free() | |
grid_parent.name = "[ GRID ]" | |
print("[ CLEARED GRID ]") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment