Map : Triangle color based on elevation

pull/3/head
Valentin Stark 3 years ago
parent 7594b7d05c
commit 02a857ed55
  1. 13
      ui/map/map.gd
  2. 23
      world/game.gd

@ -42,10 +42,17 @@ func create_map():
func draw_triangles():
for polygon in terrain.get_triangles_as_polygon():
for triangle in terrain.get_triangles():
var colors = Gradient.new()
colors.add_point(0.999, Color("#9e0142")) # red
colors.add_point(0.5, Color("#dc865d")) # orange
colors.add_point(0.25, Color("#fbf8b0")) # yellow
colors.add_point(0, Color("#89cfa5")) # green
colors.add_point(-0.999, Color("#5e4fa2")) # blue
var color = Color(randf(), randf(), randf(), 1)
if polygon.size() > 2:
draw_polygon(polygon, PoolColorArray([color]))
color = colors.interpolate(min(triangle.get_data("elevation"), 0.999))
if triangle.polygon().size() > 2:
draw_polygon(triangle.polygon(), PoolColorArray([color]))
func draw_triangles_edges(color=Color("#000000")):
for line in terrain.get_edges_as_line():

@ -28,8 +28,8 @@ func _ready():
emit_signal("world_loaded", terrain)
func init_points_data():
for index in terrain.get_points().size():
terrain.get_point(index).set_elevation(find_elevation(terrain.get_point(index).point2d()))
for point in terrain.get_points():
point.set_elevation(find_point_elevation(point.point2d()))
# points_data.append({
# "elevation": 0,
# "used": false,
@ -39,8 +39,10 @@ func init_points_data():
# "mountain": false,
# "river": false
# })
for triangle in terrain.get_triangles():
triangle.set_data("elevation", find_triangle_elevation(triangle))
func find_elevation(point):
func find_point_elevation(point):
var border = border_width + rng.randf_range(-20.0, 20.0)
var elevation = noise.get_noise_2d(point.x / wavelength, point.y / wavelength)
@ -60,11 +62,12 @@ func find_elevation(point):
elevation = min(elevation, 1)
elevation = elevation * terraces
# elevation = elevation * terraces
return elevation
func find_triangle_elevation(triangle):
var elevation = 0
for point in triangle.points():
elevation += point.get_elevation()
elevation /= 3
return elevation
#
# if points_data[point_id].elevation <= 0:
# points_data[point_id].water = true
#
# if points_data[point_id].elevation >= mountain_height:
# points_data[point_id].mountain = true

Loading…
Cancel
Save