enregistrement du mesh généré

pull/34/head
Valentin Stark 3 years ago
parent b862b7361c
commit b4180e66ca
  1. 2
      menu/LoadWorld.gd
  2. 28
      menu/LoadingScreen.gd
  3. 4
      menu/LoadingScreen.tscn
  4. 2
      menu/NewWorld.gd
  5. 8
      project.godot
  6. 19
      utils/world_generation/WorldGeneration.gd
  7. BIN
      world.mesh
  8. 4
      world/World3d.gd

@ -15,4 +15,4 @@ func _on_CancelButton_pressed():
func _button_pressed(name): func _button_pressed(name):
Global.terrain_name = name Global.terrain_name = name
get_tree().change_scene("res://utils/world_generation/WorldGeneration.tscn") get_tree().change_scene("res://menu/LoadingScreen.tscn")

@ -0,0 +1,28 @@
extends Control
var thread
var world = {}
func _ready():
thread = Thread.new()
thread.start(self, "_generate_world")
set_process(true)
#
# while true:
# if "step" in world:
# if world.step >= world.max_step:
# break
# print(world.step)
# $ProgressBar.value = world.step / world.max_step * 100
func _process(delta):
if "step" in world:
print(world.step)
if world.step >= 2:
get_tree().change_scene("res://world/game.tscn")
func _exit_tree():
thread.wait_to_finish()
func _generate_world():
world = WorldGeneration.new()

@ -1,8 +1,8 @@
[gd_scene load_steps=2 format=2] [gd_scene load_steps=2 format=2]
[ext_resource path="res://utils/world_generation/WorldGeneration.gd" type="Script" id=1] [ext_resource path="res://menu/LoadingScreen.gd" type="Script" id=1]
[node name="WorldGeneration" type="Control"] [node name="LoadingScreen" type="Control"]
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
script = ExtResource( 1 ) script = ExtResource( 1 )

@ -11,4 +11,4 @@ func _on_CancelButton_pressed():
func _on_CreateButton_pressed(): func _on_CreateButton_pressed():
Global.terrain_name = $VBoxContainer/LineEdit.text Global.terrain_name = $VBoxContainer/LineEdit.text
get_tree().change_scene("res://utils/world_generation/WorldGeneration.tscn") get_tree().change_scene("res://menu/LoadingScreen.tscn")

@ -33,13 +33,19 @@ _global_script_classes=[ {
"class": "Terrain", "class": "Terrain",
"language": "GDScript", "language": "GDScript",
"path": "res://utils/terrain/Terrain.gd" "path": "res://utils/terrain/Terrain.gd"
}, {
"base": "Control",
"class": "WorldGeneration",
"language": "GDScript",
"path": "res://utils/world_generation/WorldGeneration.gd"
} ] } ]
_global_script_class_icons={ _global_script_class_icons={
"CameraController": "", "CameraController": "",
"CameraOutline": "", "CameraOutline": "",
"Delaunator": "", "Delaunator": "",
"PoissonDiscSampling": "", "PoissonDiscSampling": "",
"Terrain": "" "Terrain": "",
"WorldGeneration": ""
} }
[application] [application]

@ -1,5 +1,7 @@
extends Control extends Control
class_name WorldGeneration
export(int) var width = 2000 export(int) var width = 2000
export(int) var height = 2000 export(int) var height = 2000
export(int) var spacing = 20 export(int) var spacing = 20
@ -14,16 +16,10 @@ export(int) var river_proba = 200
var rng = RandomNumberGenerator.new() var rng = RandomNumberGenerator.new()
var noise = OpenSimplexNoise.new() var noise = OpenSimplexNoise.new()
var thread var step = 0
var max_step = 5
func _ready():
thread = Thread.new()
thread.start(self, "_generate_world")
func _exit_tree(): func _init():
thread.wait_to_finish()
func _generate_world():
rng.randomize() rng.randomize()
noise.seed = rng.randi() noise.seed = rng.randi()
noise.octaves = octaves noise.octaves = octaves
@ -33,6 +29,7 @@ func _generate_world():
else: else:
Global.terrain.create(width,height,spacing,Global.terrain_name) Global.terrain.create(width,height,spacing,Global.terrain_name)
step += 1
if Global.terrain.is_created(): if Global.terrain.is_created():
init_data() init_data()
@ -40,13 +37,13 @@ func _generate_world():
if Global.terrain.is_created() or Global.terrain.is_loaded(): if Global.terrain.is_created() or Global.terrain.is_loaded():
add_trees() add_trees()
get_tree().change_scene("res://world/game.tscn") step += 1
# get_tree().change_scene("res://world/game.tscn")
else: else:
Global.print_debug("Pas de Global.terrain, pas de construction ...") Global.print_debug("Pas de Global.terrain, pas de construction ...")
Global.print_debug("Pas de construction ..., pas de palais ...") Global.print_debug("Pas de construction ..., pas de palais ...")
Global.print_debug("Pas de palais ..., pas de palais.") Global.print_debug("Pas de palais ..., pas de palais.")
func init_data(): func init_data():
# for point in Global.terrain.get_points(): # for point in Global.terrain.get_points():
# point.set_elevation(point_find_elevation(point.point2d())) # point.set_elevation(point_find_elevation(point.point2d()))

Binary file not shown.

@ -34,11 +34,13 @@ func draw_world():
# Commit to a mesh. # Commit to a mesh.
var mesh = st.commit() var mesh = st.commit()
var file_name = "user://terrain/%s/world.mesh" % (Global.terrain_name)
ResourceSaver.save(file_name, mesh)
var mi = MeshInstance.new() var mi = MeshInstance.new()
mi.mesh = mesh mi.mesh = mesh
var material = load("res://world/world.material") var material = load("res://world/world.material")
mi.set_surface_material(0, material) mi.set_surface_material(0, material)
mi.create_trimesh_collision() mi.create_trimesh_collision()
mi.cast_shadow = GeometryInstance.SHADOW_CASTING_SETTING_ON mi.cast_shadow = GeometryInstance.SHADOW_CASTING_SETTING_ON
print(mi)
add_child(mi) add_child(mi)

Loading…
Cancel
Save