aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/map/tiles/grass.gd22
-rw-r--r--client/map/tiles/grass_side.tscn10
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("")