Пример #1
0
 private void DrawLine(List <OCIChar.BoneInfo> _bones, int _start, int _end, Color _color)
 {
     OCIChar.BoneInfo boneInfo1 = _bones.Find((Predicate <OCIChar.BoneInfo>)(v => v.boneID == _start));
     if (boneInfo1 == null)
     {
         return;
     }
     OCIChar.BoneInfo boneInfo2 = _bones.Find((Predicate <OCIChar.BoneInfo>)(v => v.boneID == _end));
     if (boneInfo2 == null)
     {
         return;
     }
     this.DrawLine(boneInfo1.posision, boneInfo2.posision, _color);
 }
Пример #2
0
        public static OCIChar.BoneInfo myGetBoneHips(this OCIChar ch)
        {
            OCIChar.BoneInfo ret = null;
            var index            = 0;

            ch.listBones.ForEach(b => {
                Tracer.Log(index, b.guideObject.transformTarget.name);
                if (b.guideObject.transformTarget.name.EndsWith("_J_Hips"))
                {
                    ret = b;
                }
                index += 1;
            });
            return(ret);
        }
Пример #3
0
        public static void InitHairBone(OCIChar _ociChar, Dictionary <int, Info.BoneInfo> _dicBoneInfo)
        {
            GameObject referenceInfo = _ociChar.charReference.GetReferenceInfo(ChaReference.RefObjKey.HeadParent);
            Dictionary <int, OCIChar.BoneInfo> dictionary = new Dictionary <int, OCIChar.BoneInfo>();

            foreach (KeyValuePair <int, Info.BoneInfo> keyValuePair in _dicBoneInfo.Where <KeyValuePair <int, Info.BoneInfo> >((Func <KeyValuePair <int, Info.BoneInfo>, bool>)(b => MathfEx.RangeEqualOn <int>(7, b.Value.group, 9))))
            {
                GameObject loop = referenceInfo.get_transform().FindLoop(keyValuePair.Value.bone);
                if (!Object.op_Equality((Object)loop, (Object)null))
                {
                    OCIChar.BoneInfo boneInfo1 = (OCIChar.BoneInfo)null;
                    if (dictionary.TryGetValue(keyValuePair.Value.sync, out boneInfo1))
                    {
                        boneInfo1.AddSyncBone(loop);
                    }
                    else
                    {
                        OIBoneInfo _boneInfo = (OIBoneInfo)null;
                        if (!_ociChar.oiCharInfo.bones.TryGetValue(keyValuePair.Key, out _boneInfo))
                        {
                            _boneInfo = new OIBoneInfo(Studio.Studio.GetNewIndex());
                            _ociChar.oiCharInfo.bones.Add(keyValuePair.Key, _boneInfo);
                        }
                        _boneInfo.group = OIBoneInfo.BoneGroup.Hair;
                        _boneInfo.level = keyValuePair.Value.level;
                        GuideObject      _guideObject = AddObjectAssist.AddBoneGuide(loop.get_transform(), _boneInfo.dicKey, _ociChar.guideObject, keyValuePair.Value.name);
                        OCIChar.BoneInfo boneInfo2    = new OCIChar.BoneInfo(_guideObject, _boneInfo, keyValuePair.Key);
                        _ociChar.listBones.Add(boneInfo2);
                        _guideObject.SetActive(false, true);
                        if (keyValuePair.Value.sync != -1)
                        {
                            dictionary.Add(keyValuePair.Key, boneInfo2);
                        }
                    }
                }
            }
            _ociChar.UpdateFKColor(OIBoneInfo.BoneGroup.Hair);
        }
Пример #4
0
        public static void InitBone(
            OCIChar _ociChar,
            Transform _transformRoot,
            Dictionary <int, Info.BoneInfo> _dicBoneInfo)
        {
            Dictionary <int, OCIChar.BoneInfo> dictionary = new Dictionary <int, OCIChar.BoneInfo>();

            foreach (KeyValuePair <int, Info.BoneInfo> keyValuePair in _dicBoneInfo)
            {
                if (_ociChar.sex != 1 || keyValuePair.Value.level != 2)
                {
                    GameObject loop;
                    switch (keyValuePair.Value.group)
                    {
                    case 7:
                    case 8:
                    case 9:
                        loop = _ociChar.charReference.GetReferenceInfo(ChaReference.RefObjKey.HeadParent).get_transform().FindLoop(keyValuePair.Value.bone);
                        break;

                    default:
                        loop = _transformRoot.FindLoop(keyValuePair.Value.bone);
                        if (Object.op_Equality((Object)loop, (Object)null))
                        {
                            Debug.LogWarning((object)keyValuePair.Value.bone);
                            break;
                        }
                        break;
                    }
                    if (!Object.op_Equality((Object)loop, (Object)null))
                    {
                        OCIChar.BoneInfo boneInfo1 = (OCIChar.BoneInfo)null;
                        if (dictionary.TryGetValue(keyValuePair.Value.sync, out boneInfo1))
                        {
                            boneInfo1.AddSyncBone(loop);
                        }
                        else
                        {
                            OIBoneInfo _boneInfo = (OIBoneInfo)null;
                            if (!_ociChar.oiCharInfo.bones.TryGetValue(keyValuePair.Key, out _boneInfo))
                            {
                                _boneInfo = new OIBoneInfo(Studio.Studio.GetNewIndex());
                                _ociChar.oiCharInfo.bones.Add(keyValuePair.Key, _boneInfo);
                            }
                            switch (keyValuePair.Value.group)
                            {
                            case 0:
                            case 1:
                            case 2:
                            case 3:
                            case 4:
                                _boneInfo.group = (OIBoneInfo.BoneGroup)(1 << keyValuePair.Value.group | 1);
                                break;

                            case 7:
                            case 8:
                            case 9:
                                _boneInfo.group = OIBoneInfo.BoneGroup.Hair;
                                break;

                            case 10:
                                _boneInfo.group = OIBoneInfo.BoneGroup.Neck;
                                break;

                            case 11:
                            case 12:
                                _boneInfo.group = OIBoneInfo.BoneGroup.Breast;
                                break;

                            case 13:
                                _boneInfo.group = OIBoneInfo.BoneGroup.Skirt;
                                break;

                            default:
                                _boneInfo.group = (OIBoneInfo.BoneGroup)(1 << keyValuePair.Value.group);
                                break;
                            }
                            _boneInfo.level = keyValuePair.Value.level;
                            GuideObject _guideObject = AddObjectAssist.AddBoneGuide(loop.get_transform(), _boneInfo.dicKey, _ociChar.guideObject, keyValuePair.Value.name);
                            switch (_boneInfo.group)
                            {
                            case OIBoneInfo.BoneGroup.RightHand:
                            case OIBoneInfo.BoneGroup.LeftHand:
                                _guideObject.scaleSelect = 0.025f;
                                break;
                            }
                            OCIChar.BoneInfo boneInfo2 = new OCIChar.BoneInfo(_guideObject, _boneInfo, keyValuePair.Key);
                            _ociChar.listBones.Add(boneInfo2);
                            _guideObject.SetActive(false, true);
                            if (keyValuePair.Value.no == 65)
                            {
                                _ociChar.transSon = loop.get_transform();
                            }
                            if (keyValuePair.Value.sync != -1)
                            {
                                dictionary.Add(keyValuePair.Key, boneInfo2);
                            }
                        }
                    }
                }
            }
            _ociChar.UpdateFKColor(FKCtrl.parts);
        }