You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.4 KiB
44 lines
1.4 KiB
extends Spatial
|
|
|
|
var rng = RandomNumberGenerator.new()
|
|
var chunk_size = 32
|
|
var chunk_amount = 16
|
|
var chunks = {}
|
|
var unready_chunks = {}
|
|
var thread
|
|
|
|
func _ready():
|
|
Global.print_debug("On ajoute le monde")
|
|
add_world()
|
|
Global.print_debug("On ajoute les arbres")
|
|
add_trees()
|
|
Global.print_debug("Le monde est prêt")
|
|
|
|
func add_world():
|
|
var terrain_mesh = TerrainMesh.new()
|
|
terrain_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, Global.array_mesh, [], Mesh.ARRAY_COMPRESS_DEFAULT ^ Mesh.ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION)
|
|
|
|
terrain_mesh.surface_set_material(0, load("res://world/materials/world.material"))
|
|
|
|
var mi := MeshInstance.new()
|
|
mi.mesh = terrain_mesh
|
|
mi.create_trimesh_collision()
|
|
|
|
add_child(mi)
|
|
|
|
func add_trees():
|
|
rng.randomize()
|
|
var treescene = load("res://entities/environment/birchtree/birchtree.tscn")
|
|
var poisson_disc_sampling: PoissonDiscSampling = PoissonDiscSampling.new()
|
|
|
|
for center in Global.terrain.get_centers():
|
|
var num = rng.randi_range(0,100)
|
|
if center.get_data("forest") or num == 1:
|
|
var points2d = poisson_disc_sampling.generate_points(3, center.polygon(), 2)
|
|
for point in points2d:
|
|
var tree = treescene.instance()
|
|
var scaling = rng.randi_range(0.8, 1.2)
|
|
tree.scale = Vector3(scaling, scaling, scaling)
|
|
tree.rotate_y(rng.randi_range(0, 2*PI))
|
|
tree.translation = Vector3(point.x, center.get_elevation() * 120, point.y)
|
|
add_child(tree)
|
|
|