Пример #1
0
        public static void Delete(ObjectInfo _info, bool _delKey = true)
        {
            // Check invalid harmony calls.
            if (!(_info is OICharInfo))
            {
                return;
            }
            var dictionaryKey = _info.dicKey;

            if (dictionaryKey < 0 || !Singleton <Studio.Studio> .Instance.dicObjectCtrl.TryGetValue(dictionaryKey, out var ctrlInfo))
            {
                return;
            }

            // Check valid character control from the object info.
            ChaControl chaControl = null;

            // ReSharper disable once ConvertIfStatementToSwitchStatement - it's shorter and easy to understand.
            if (ctrlInfo is OCICharFemale female)
            {
                chaControl = female.female;
            }
            else if (ctrlInfo is OCICharMale male)
            {
                chaControl = male.male;
            }

            // remove character control.
            if (chaControl != null)
            {
                SkinnedBones.CleanUpCache(chaControl);
            }
        }
Пример #2
0
 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));
     });
 }
Пример #3
0
    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));
        });
    }