pleu d'herbe

entités
Valentin Stark 3 years ago
parent d30874c0d7
commit bce6ffd123
  1. 38
      world/Chunk.gd
  2. 1
      world/MultiMeshInstance.gd
  3. 6
      world/World3d.gd
  4. 5
      world/game.tscn

@ -12,8 +12,44 @@ func _init(x, z):
self.z = z
func _ready():
generate_chunk()
# generate_chunk()
generate_grass()
pass
func generate_grass():
var poisson_disc_sampling: PoissonDiscSampling = PoissonDiscSampling.new()
var rng := RandomNumberGenerator.new()
rng.randomize()
var coords = []
for center in Global.terrain.get_chunk(Vector2(x, z)):
if (
not center.get_data("mountain")
and not center.get_data("water")
and not center.get_data("coast")
):
var points = poisson_disc_sampling.generate_points(0.1, center.polygon(), 2)
var points3d = []
for point in points:
points3d.append(Vector3(point.x, center.get_elevation() * 120, point.y))
coords += points3d
# var multimesh = MultiMesh.new()
var multimesh = MultiMesh.new()
multimesh.mesh = load("res://world/grass.obj")
multimesh.mesh.surface_set_material(0, load("res://world/materials/wind_grass.tres"))
multimesh.transform_format = MultiMesh.TRANSFORM_3D
multimesh.instance_count = coords.size()
for instance_index in multimesh.instance_count:
var transform := Transform().rotated(Vector3.UP, rng.randf_range(-PI / 2, PI / 2))
transform.origin = Vector3(coords[instance_index].x, coords[instance_index].y, coords[instance_index].z)
# transform.scaled(Vector3())
multimesh.set_instance_transform(instance_index, transform)
var multimesh_instance = MultiMeshInstance.new()
multimesh_instance.multimesh = multimesh
add_child(multimesh_instance)
pass
func generate_chunk():
var file = File.new()
file.open("res://world/materials/materials.json", File.READ)

@ -3,6 +3,7 @@ extends MultiMeshInstance
var extents = Vector2(10, 10)
func _ready():
return
var poisson_disc_sampling: PoissonDiscSampling = PoissonDiscSampling.new()
var rng := RandomNumberGenerator.new()
rng.randomize()

@ -2,15 +2,15 @@ extends Spatial
var rng = RandomNumberGenerator.new()
var chunk_size = 32
var chunk_amount = 16
var chunk_amount = 1
var chunks = {}
var unready_chunks = {}
var thread
func _ready():
# add_world()
add_world()
thread = Thread.new()
# add_trees()
add_trees()
func add_world():
var terrain_mesh = TerrainMesh.new()

@ -220,6 +220,11 @@ material_override = ExtResource( 6 )
multimesh = SubResource( 11 )
script = ExtResource( 8 )
[node name="grass" type="MeshInstance" parent="World3d/MultiMeshInstance"]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 16.969, 18.8547, 49.3429 )
mesh = ExtResource( 7 )
material/0 = ExtResource( 6 )
[connection signal="map_clicked" from="UI/Map" to="World3d/CamBase/Camera" method="_on_Map_map_clicked"]
[connection signal="camera_moved" from="World3d/CamBase/Camera" to="UI/Map/Cursor" method="_on_Camera_camera_moved"]

Loading…
Cancel
Save