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); }
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); }
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); }
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); }