diff options
| author | nokoe <nokoe@mailbox.org> | 2025-06-21 01:52:33 +0200 | 
|---|---|---|
| committer | nokoe <nokoe@mailbox.org> | 2025-06-21 01:52:33 +0200 | 
| commit | 16f72d038c37a2f5dd60a960f034ee2c3ff53f5b (patch) | |
| tree | 9af64de6fe8b2b47a5e46b87adabde94ccd8b88b /client/map/tiles/grass.gd | |
| parent | 44ca1fe3780b76c73e03070fc20189607c414860 (diff) | |
| download | hurrycurry-16f72d038c37a2f5dd60a960f034ee2c3ff53f5b.tar hurrycurry-16f72d038c37a2f5dd60a960f034ee2c3ff53f5b.tar.bz2 hurrycurry-16f72d038c37a2f5dd60a960f034ee2c3ff53f5b.tar.zst | |
generalize floor meshing; fixes #278
Diffstat (limited to 'client/map/tiles/grass.gd')
| -rw-r--r-- | client/map/tiles/grass.gd | 33 | 
1 files changed, 9 insertions, 24 deletions
| diff --git a/client/map/tiles/grass.gd b/client/map/tiles/grass.gd index 0f67174c..0d64ae2b 100644 --- a/client/map/tiles/grass.gd +++ b/client/map/tiles/grass.gd @@ -14,30 +14,15 @@  # along with this program.  If not, see <https://www.gnu.org/licenses/>.  #  class_name Grass -extends Tile +extends FloorLike -const GRASS_MESH: Mesh = preload("res://map/tiles/grass_side.tres") - -func _init(ctx: TileFactory.TileCC): -	super(ctx) - -	var random = RandomNumberGenerator.new() -	random.seed = str(ctx.position).hash() - -	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.25, random.randf_range(-.5, .5)) -		var basis_ := (Basis(Vector3(0, 1, 0), random.randf_range(0, PI)) * Basis(Vector3(1, 0, 0), PI/2)).scaled(Vector3(0.75, 0.5, 0.75)) -		multimesh.set_instance_transform(i, Transform3D(basis_, origin)) - -	base_mesh.add_child(multimesh_instance) -	multimesh_instance.multimesh = multimesh +static func fm_id() -> String: +	return "grass"  func get_base_mesh(): -	return preload("res://map/tiles/grass.tscn").instantiate() +	return null + +static func floor_mesh() -> MeshInstance3D: +	var node = super() +	node.material_override = preload("res://map/tiles/grass_material.tres") +	return node | 
