using System; using UnityEngine; namespace NGS.MeshFusionPro; public class DynamicCombineSource : ICombineSource, ICombineSource { private CombineSource _base; public CombineSource Base => _base; public Vector3 Position => _base.Position; public Bounds Bounds => _base.Bounds; public event Action onCombined; public event Action onCombineError; public event Action onCombineFailed; public event Action onCombinedTyped; public event Action onCombineErrorTyped; public event Action onCombineFailedTyped; public DynamicCombineSource(GameObject go, int submeshIndex = 0) { _base = new CombineSource(go, submeshIndex); } public DynamicCombineSource(Mesh mesh, MeshRenderer renderer, int submeshIndex = 0) { _base = new CombineSource(mesh, renderer, submeshIndex); } public DynamicCombineSource(MeshCombineInfo info, RendererSettings settings) { _base = new CombineSource(info, settings); } public DynamicCombineSource(MeshCombineInfo info, RendererSettings settings, Bounds bounds) { _base = new CombineSource(info, settings, bounds); } public void Combined(DynamicCombinedObject root, DynamicCombinedObjectPart part) { this.onCombined?.Invoke(root, part); this.onCombinedTyped?.Invoke(root, part); } public void CombineError(DynamicCombinedObject root, string errorMessage) { if (this.onCombineError == null && this.onCombineErrorTyped == null) { Debug.Log("Error during combine " + root.name + ", reason :" + errorMessage); return; } this.onCombineError?.Invoke(root, errorMessage); this.onCombineErrorTyped?.Invoke(root, errorMessage); } public void CombineFailed(DynamicCombinedObject root) { this.onCombineFailed?.Invoke(root); this.onCombineFailedTyped?.Invoke(root); } }