diff options
-rw-r--r-- | client/map/tiles/grass.gd | 22 | ||||
-rw-r--r-- | client/map/tiles/grass_side.tscn | 10 |
2 files changed, 15 insertions, 17 deletions
diff --git a/client/map/tiles/grass.gd b/client/map/tiles/grass.gd index 4bd3587c..446bea6b 100644 --- a/client/map/tiles/grass.gd +++ b/client/map/tiles/grass.gd @@ -16,8 +16,7 @@ class_name Grass extends Tile -const GRASS_SIDE: PackedScene = preload("res://map/tiles/grass_side.tscn") -const GRASS_COUNT: int = 16 +const GRASS_MESH: Mesh = preload("res://map/tiles/grass_side.tres") func _init(rename: String, _neighbors: Array): super(rename, _neighbors) @@ -25,11 +24,20 @@ func _init(rename: String, _neighbors: Array): var random = RandomNumberGenerator.new() random.seed = rename.hash() - for _i in Global.get_setting("graphics.grass_amount"): - var g: Node3D = GRASS_SIDE.instantiate() - base_mesh.add_child(g) - g.position = Vector3(random.randf_range(-.5, .5), 0, random.randf_range(-.5, .5)) - g.rotation = Vector3(0, random.randf_range(0, PI), 0) + var multimesh_instance := MultiMeshInstance3D.new() + + var multimesh := MultiMesh.new() + multimesh.mesh = GRASS_MESH + multimesh.transform_format = MultiMesh.TRANSFORM_3D + multimesh.instance_count = Global.get_setting("graphics.grass_amount") + + for i in multimesh.instance_count: + var origin := Vector3(random.randf_range(-.5, .5), 0.125, random.randf_range(-.5, .5)) + var basis_ := Basis(Vector3(0, 1, 0), random.randf_range(0, PI)) * Basis(Vector3(1, 0, 0), PI/2) * 0.75 + multimesh.set_instance_transform(i, Transform3D(basis_, origin)) + + base_mesh.add_child(multimesh_instance) + multimesh_instance.multimesh = multimesh func get_base_mesh(): return preload("res://map/tiles/grass.tscn").instantiate() diff --git a/client/map/tiles/grass_side.tscn b/client/map/tiles/grass_side.tscn deleted file mode 100644 index 08e04505..00000000 --- a/client/map/tiles/grass_side.tscn +++ /dev/null @@ -1,10 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://dbp0ts6tfycev"] - -[ext_resource type="ArrayMesh" uid="uid://l2by4gv4wpd1" path="res://map/tiles/grass_side.tres" id="1_u044x"] - -[node name="GrassSide" type="Node3D"] - -[node name="Mesh" type="MeshInstance3D" parent="."] -transform = Transform3D(0.5, 0, 0, 0, 0.00872619, -0.499924, 0, 0.499924, 0.00872619, 0, 0.25, 0) -mesh = ExtResource("1_u044x") -skeleton = NodePath("") |