tool extends Spatial class_name Island export var generate: bool = false setget do_generate export var level_size: int = 10 signal island_tile_selected signal island_tile_hover func generate(): var hexgrid = preload("res://addons/gdhexgrid/HexGrid.gd").new() var HexTile3D = preload("res://scenes/HexTile3D.tscn") var tiles = $Tiles for node in tiles.get_children(): tiles.remove_child(node) node.queue_free() for i in range(-level_size / 2, level_size / 2): for j in range (-level_size / 2, level_size / 2): var pos = hexgrid.get_hex_center_from_offset(Vector2(i, j)) var tile = HexTile3D.instance() var height = (sin(pos.y * 0.3) * sin(pos.y * 0.8) * 0.8 + cos ((pos.x) * 0.9) * 1.24) * 0.5 + 0.4 + rand_range(-0.3, 0.3) tile.transform.origin = Vector3(pos.x, height, pos.y) tile.connect("tile_selected", self, "on_tile_selected") tile.connect("tile_mouse_entered", self, "on_tile_hover") tiles.add_child(tile) print ("Generated island with " + str(tiles.get_child_count()) + " nodes") func do_generate(flag: bool): print ("Generating Level") generate() func on_tile_selected(tile): emit_signal("island_tile_selected", self, tile) func on_tile_hover(tile): emit_signal("island_tile_hover", self, tile)