private IEnumerator TryMerge(ChaControl _chaControl) { if (ReferenceEquals(_chaControl, null) || !SkinnedBones.TryGetSkinnedBones(_chaControl, out var dict)) { yield break; } meshRenderers.ForEach(smr => { smr.enabled = false; smr.rootBone = _chaControl.objBodyBone.transform; StartCoroutine(MergeCoroutine(smr, dict)); }); }
private IEnumerator TryMerge() { var startTime = Time.time; yield return(new WaitUntil(() => _chaControl != null || Time.time - startTime > 100)); // TryGetSkinnedBones includes dictionary check and chaControl checks. if (ReferenceEquals(_chaControl, null) || !SkinnedBones.TryGetSkinnedBones(_chaControl, out var dict)) { yield break; } meshRenderers.ForEach(smr => { smr.enabled = false; smr.rootBone = _chaControl.objBodyBone.transform; StartCoroutine(MergeCoroutine(smr, dict)); }); }