using Godot; using System.Collections.Generic; public class MultiMeshHandler { private Dictionary multiMeshes; public MultiMeshHandler(Dictionary multiMeshes) { this.multiMeshes = multiMeshes; } public void Build(List tiles) { foreach (var mm in multiMeshes.Values) mm.Multimesh.InstanceCount = 0; var batches = new Dictionary>(); foreach (var tile in tiles) { if (!batches.ContainsKey(tile.MeshKey)) batches[tile.MeshKey] = new List(); batches[tile.MeshKey].Add(tile.Transform); } foreach (var kvp in batches) { var mm = multiMeshes[kvp.Key].Multimesh; var list = kvp.Value; mm.InstanceCount = list.Count; for (int i = 0; i < list.Count; i++) mm.SetInstanceTransform(i, list[i]); } } }