using System.Collections; using NGS.MeshFusionPro; using UnityEngine; public class BuildingMeshTracker : MonoBehaviour { public MeshFusionSource meshFuser; private Coroutine freezeWithDelay; private bool freezeWithDelayCoroRunning; private void OnEnable() { FreezeMeshWithDelay(); } private void OnDisable() { Unfreeze(); } public void Unfreeze() { if (freezeWithDelayCoroRunning) { StopCoroutine(freezeWithDelay); freezeWithDelayCoroRunning = false; } meshFuser.UndoCombine(); } public void FreezeMeshWithDelay() { if (!meshFuser.gameObject.activeInHierarchy) { return; } if (freezeWithDelay == null) { freezeWithDelay = StartCoroutine(FreezeMeshWithDelayCoro()); return; } if (freezeWithDelayCoroRunning) { StopCoroutine(freezeWithDelay); freezeWithDelayCoroRunning = false; } freezeWithDelay = StartCoroutine(FreezeMeshWithDelayCoro()); } private IEnumerator FreezeMeshWithDelayCoro() { freezeWithDelayCoroRunning = true; yield return new WaitForSeconds(2f); meshFuser.AssignToController(); freezeWithDelayCoroRunning = false; } }