Quadtree terrain

I have a new repository with a basic script until i finish the new one

5 Likes

Cool!**

Using single arraymesh for all chunks vs combining all arraymeshs


Multiple arraymesh are faster.

for dz in range(-search_radius, search_radius + 1):
	for dx in range(-search_radius, search_radius + 1):
		var neighbor_pos = Vector2i(grid_x + dx, grid_z + dz)
						
		if main_road_segments_dictionary.has(neighbor_pos):
			var segments = main_road_segments_dictionary[neighbor_pos]
			for segment in segments:
				var closest_on_segment = Geometry3D.get_closest_point_to_segment(point_world, segment[0], segment[1])
				var distance_sq = closest_on_segment.distance_squared_to(point_world)
								
				if distance_sq < carve_road_distance_squared and distance_sq < best_distance_sq:
					best_distance_sq = distance_sq
					best_projected_y = closest_on_segment.y
				
if best_distance_sq < carve_road_distance_squared:
	point.y = best_projected_y

I am surprised how fast it is, I tried putting segments in chunks and other method, but they are all are very slow, this on its like magic.

I have a new super simple way of creating road, really it is the hardest part