parent
1de23642e2
commit
15b6772fd7
@ -1,43 +0,0 @@ |
||||
extends Spatial |
||||
|
||||
var terrain |
||||
|
||||
func _ready(): |
||||
pass |
||||
|
||||
|
||||
func draw_world(): |
||||
# for i in range(0, 1, 1): |
||||
# print(i) |
||||
var st = SurfaceTool.new() |
||||
|
||||
st.begin(Mesh.PRIMITIVE_TRIANGLES) |
||||
# st.add_smooth_group(true) |
||||
for triangle in terrain.get_triangles(): |
||||
# for point in triangle.points(): |
||||
var factor = Vector3(1, 24*5, 1) |
||||
# if point.get_data("river") and i == 0: |
||||
# factor.y -= 0 |
||||
# if i == 1: |
||||
# factor.y -= 2.0 |
||||
st.add_vertex(triangle.center3d() * factor) |
||||
|
||||
st.generate_normals() |
||||
# st.generate_tangents() |
||||
st.index() |
||||
# Commit to a mesh. |
||||
var mesh = st.commit() |
||||
|
||||
var mi = MeshInstance.new() |
||||
mi.mesh = mesh |
||||
var material = load("res://world/world.material") |
||||
mi.set_surface_material(0, material) |
||||
mi.create_trimesh_collision() |
||||
mi.cast_shadow = GeometryInstance.SHADOW_CASTING_SETTING_ON |
||||
print(mi) |
||||
add_child(mi) |
||||
|
||||
func _on_Game_world_loaded(game_terrain): |
||||
terrain = game_terrain |
||||
draw_world() |
||||
|
||||
@ -0,0 +1,49 @@ |
||||
extends Spatial |
||||
|
||||
var terrain |
||||
|
||||
func _ready(): |
||||
pass |
||||
|
||||
|
||||
func draw_world(): |
||||
# for i in range(0, 1, 1): |
||||
# print(i) |
||||
var st = SurfaceTool.new() |
||||
|
||||
st.begin(Mesh.PRIMITIVE_TRIANGLES) |
||||
# st.add_smooth_group(true) |
||||
for triangle in terrain.get_triangles(): |
||||
var factor = Vector3(1, 12*10, 1) |
||||
for edge in triangle.edges(): |
||||
if triangle.get_elevation() > edge.opposite_triangle().get_elevation(): |
||||
st.add_vertex(Vector3(edge.start().point3d().x, triangle.get_elevation(), edge.start().point3d().z) * factor) |
||||
st.add_vertex(Vector3(edge.end().point3d().x, triangle.get_elevation(), edge.end().point3d().z) * factor) |
||||
st.add_vertex(Vector3(edge.start().point3d().x, edge.opposite_triangle().get_elevation(), edge.start().point3d().z) * factor) |
||||
|
||||
st.add_vertex(Vector3(edge.end().point3d().x, triangle.get_elevation(), edge.end().point3d().z) * factor) |
||||
st.add_vertex(Vector3(edge.end().point3d().x, edge.opposite_triangle().get_elevation(), edge.end().point3d().z) * factor) |
||||
st.add_vertex(Vector3(edge.start().point3d().x, edge.opposite_triangle().get_elevation(), edge.start().point3d().z) * factor) |
||||
|
||||
for point in triangle.points(): |
||||
st.add_vertex(Vector3(point.point3d().x, triangle.get_elevation(), point.point3d().z) * factor) |
||||
|
||||
st.generate_normals() |
||||
st.generate_tangents() |
||||
st.index() |
||||
# Commit to a mesh. |
||||
var mesh = st.commit() |
||||
|
||||
var mi = MeshInstance.new() |
||||
mi.mesh = mesh |
||||
var material = load("res://world/world.material") |
||||
mi.set_surface_material(0, material) |
||||
mi.create_trimesh_collision() |
||||
mi.cast_shadow = GeometryInstance.SHADOW_CASTING_SETTING_ON |
||||
print(mi) |
||||
add_child(mi) |
||||
|
||||
func _on_Game_world_loaded(game_terrain): |
||||
terrain = game_terrain |
||||
draw_world() |
||||
|
||||
Loading…
Reference in new issue