private static bool MapBipedBones(Transform root, ref Transform[] humanToTransform, List <string> report) { bool result; for (int i = 0; i < AvatarBipedMapper.s_BipedBones.Length; i++) { int index = AvatarBipedMapper.s_BipedBones[i].index; int parentBone = HumanTrait.GetParentBone(index); bool flag = HumanTrait.RequiredBone(index); bool flag2 = parentBone == -1 || HumanTrait.RequiredBone(parentBone); Transform transform = (parentBone == -1) ? root : humanToTransform[parentBone]; if (transform == null && !flag2) { parentBone = HumanTrait.GetParentBone(parentBone); flag2 = (parentBone == -1 || HumanTrait.RequiredBone(parentBone)); transform = ((parentBone == -1) ? null : humanToTransform[parentBone]); if (transform == null && !flag2) { parentBone = HumanTrait.GetParentBone(parentBone); transform = ((parentBone == -1) ? null : humanToTransform[parentBone]); } } humanToTransform[index] = AvatarBipedMapper.MapBipedBone(i, transform, transform, report); if (humanToTransform[index] == null && flag) { result = false; return(result); } } result = true; return(result); }
private static bool MapBipedBones(Transform root, ref Transform[] humanToTransform, List <string> report) { for (int i = 0; i < HumanTrait.BoneCount; i++) { string str = kBipedHumanBoneNames[i]; int parentBone = HumanTrait.GetParentBone(i); bool flag = HumanTrait.RequiredBone(i); bool flag2 = (parentBone == -1) || HumanTrait.RequiredBone(parentBone); Transform transform = (parentBone == -1) ? root : humanToTransform[parentBone]; if ((transform == null) && !flag2) { parentBone = HumanTrait.GetParentBone(parentBone); transform = (parentBone == -1) ? null : humanToTransform[parentBone]; } if (str != "") { humanToTransform[i] = MapBipedBone(i, transform, transform, report); if ((humanToTransform[i] == null) && flag) { return(false); } } } return(true); }
private static bool MapBipedBones(Transform root, ref Transform[] humanToTransform, List <string> report) { bool result; for (int i = 0; i < HumanTrait.BoneCount; i++) { string a = AvatarBipedMapper.kBipedHumanBoneNames[i]; int parentBone = HumanTrait.GetParentBone(i); bool flag = HumanTrait.RequiredBone(i); bool flag2 = parentBone == -1 || HumanTrait.RequiredBone(parentBone); Transform transform = (parentBone == -1) ? root : humanToTransform[parentBone]; if (transform == null && !flag2) { parentBone = HumanTrait.GetParentBone(parentBone); transform = ((parentBone == -1) ? null : humanToTransform[parentBone]); } if (a != "") { humanToTransform[i] = AvatarBipedMapper.MapBipedBone(i, transform, transform, report); if (humanToTransform[i] == null && flag) { result = false; return(result); } } } result = true; return(result); }
private static bool MapBipedBones(Transform root, ref Transform[] humanToTransform, List <string> report) { for (int index = 0; index < HumanTrait.BoneCount; ++index) { string bipedHumanBoneName = AvatarBipedMapper.kBipedHumanBoneNames[index]; int parentBone1 = HumanTrait.GetParentBone(index); bool flag1 = HumanTrait.RequiredBone(index); bool flag2 = parentBone1 == -1 || HumanTrait.RequiredBone(parentBone1); Transform transform = parentBone1 == -1 ? root : humanToTransform[parentBone1]; if ((Object)transform == (Object)null && !flag2) { int parentBone2 = HumanTrait.GetParentBone(parentBone1); transform = parentBone2 == -1 ? (Transform)null : humanToTransform[parentBone2]; } if (bipedHumanBoneName != string.Empty) { humanToTransform[index] = AvatarBipedMapper.MapBipedBone(index, transform, transform, report); if ((Object)humanToTransform[index] == (Object)null && flag1) { return(false); } } } return(true); }
private static bool MapBipedBones(Transform root, ref Transform[] humanToTransform) { for (int i = 0; i < HumanTrait.BoneCount; i++) { bool directChild = kBipedBoneDirectChild[i]; int parentBone = HumanTrait.GetParentBone(i); bool flag2 = HumanTrait.RequiredBone(i); bool flag3 = (parentBone == -1) || HumanTrait.RequiredBone(parentBone); Transform transform = (parentBone == -1) ? root : humanToTransform[parentBone]; if ((transform == null) && !flag3) { parentBone = HumanTrait.GetParentBone(parentBone); transform = (parentBone == -1) ? null : humanToTransform[parentBone]; directChild = false; } if (kBipedHumanBoneNames[i] != string.Empty) { humanToTransform[i] = MapBipedBone(i, transform, directChild); if ((humanToTransform[i] == null) && flag2) { return(false); } } } return(true); }
protected AvatarControl.BodyPartColor IsValidBodyPart(BodyPart bodyPart) { AvatarControl.BodyPartColor bodyPartColor = AvatarControl.BodyPartColor.Off; bool flag = false; if (bodyPart != BodyPart.LeftFingers && bodyPart != BodyPart.RightFingers) { for (int i = 0; i < this.m_BodyPartHumanBone[(int)bodyPart].Length; i++) { if (this.m_BodyPartHumanBone[(int)bodyPart][i] != -1) { BoneState state = this.m_Bones[this.m_BodyPartHumanBone[(int)bodyPart][i]].state; flag |= (state == BoneState.Valid); if (HumanTrait.RequiredBone(this.m_BodyPartHumanBone[(int)bodyPart][i]) && state == BoneState.None) { return(AvatarControl.BodyPartColor.Red); } if (state != BoneState.Valid && state != BoneState.None) { return(AvatarControl.BodyPartColor.Red); } } } } else { bool flag2 = true; int num = 3; for (int j = 0; j < this.m_BodyPartHumanBone[(int)bodyPart].Length / num; j++) { bool flag3 = false; int num2 = j * num; for (int k = num - 1; k >= 0; k--) { bool flag4 = this.m_Bones[this.m_BodyPartHumanBone[(int)bodyPart][num2 + k]].state == BoneState.Valid; flag2 &= flag4; if (flag3) { if (!flag4) { return((AvatarControl.BodyPartColor) 10); } } else { flag |= (flag3 = (!flag3 && flag4)); } } } bodyPartColor = ((!flag2) ? AvatarControl.BodyPartColor.IKRed : AvatarControl.BodyPartColor.IKGreen); } if (!flag) { return(AvatarControl.BodyPartColor.IKRed); } return(AvatarControl.BodyPartColor.Green | bodyPartColor); }
static int RequiredBone(IntPtr L) { LuaScriptMgr.CheckArgsCount(L, 1); int arg0 = (int)LuaScriptMgr.GetNumber(L, 1); bool o = HumanTrait.RequiredBone(arg0); LuaScriptMgr.Push(L, o); return(1); }
protected AvatarControl.BodyPartColor IsValidBodyPart(BodyPart bodyPart) { AvatarControl.BodyPartColor bodyPartColor = AvatarControl.BodyPartColor.Off; bool flag1 = false; int index1 = (int)bodyPart; if (bodyPart != BodyPart.LeftFingers && bodyPart != BodyPart.RightFingers) { for (int index2 = 0; index2 < this.m_BodyPartHumanBone[index1].Length; ++index2) { if (this.m_BodyPartHumanBone[index1][index2] != -1) { BoneState state = this.m_Bones[this.m_BodyPartHumanBone[index1][index2]].state; flag1 |= state == BoneState.Valid; if (HumanTrait.RequiredBone(this.m_BodyPartHumanBone[index1][index2]) && state == BoneState.None || state != BoneState.Valid && state != BoneState.None) { return(AvatarControl.BodyPartColor.Red); } } } } else { bool flag2 = true; int num1 = 3; for (int index2 = 0; index2 < this.m_BodyPartHumanBone[index1].Length / num1; ++index2) { bool flag3 = false; int num2 = index2 * num1; for (int index3 = num1 - 1; index3 >= 0; --index3) { bool flag4 = this.m_Bones[this.m_BodyPartHumanBone[index1][num2 + index3]].state == BoneState.Valid; flag2 &= flag4; if (flag3) { if (!flag4) { return(AvatarControl.BodyPartColor.Red | AvatarControl.BodyPartColor.IKRed); } } else { flag1 |= flag3 = !flag3 && flag4; } } } bodyPartColor = !flag2 ? AvatarControl.BodyPartColor.IKRed : AvatarControl.BodyPartColor.IKGreen; } if (!flag1) { return(AvatarControl.BodyPartColor.IKRed); } return(AvatarControl.BodyPartColor.Green | bodyPartColor); }
void SetupBones() { boneNames = new List <string>(); string[] boneName = HumanTrait.BoneName; for (int i = 0; i < HumanTrait.BoneCount; ++i) { if ((_requiredOnly && HumanTrait.RequiredBone(i)) || !_requiredOnly) { boneNames.Add(boneName[i]); } } matchingBones = new List <Transform>(boneNames.Count); }
public Avatar Create() { // check if it's a valid mecanim avatar var boneName = HumanTrait.BoneName; for (var x = 0; x < boneName.Length; x++) { if (!HumanTrait.RequiredBone(x)) { continue; } var requiredBoneType = Naming.MecanimNameToBoneType(boneName[x]); if (!_boneMapping.ContainsKey(requiredBoneType)) { return(AvatarBuilder.BuildGenericAvatar(_root, "")); } } var humanBones = new HumanBone[_boneMapping.Count]; var skeletonBones = GetSkeletonBones(); for (var x = 0; x < _boneMapping.Count; x++) { var item = _boneMapping.ElementAt(x); var boneType = item.Key; var go = item.Value; var mecanimBoneName = Naming.BoneTypeToMecanimName(boneType); if (mecanimBoneName == "default") { mecanimBoneName = go.name; } var humanBone = new HumanBone { humanName = mecanimBoneName, boneName = go.name, limit = { useDefaultValues = true } }; humanBones[x] = humanBone; } var humanDescription = new HumanDescription() { skeleton = skeletonBones, human = humanBones }; return(AvatarBuilder.BuildHumanAvatar(_root, humanDescription)); }
public static int RequiredBone_s(IntPtr l) { int result; try { int i; LuaObject.checkType(l, 1, out i); bool b = HumanTrait.RequiredBone(i); LuaObject.pushValue(l, true); LuaObject.pushValue(l, b); result = 2; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
private static bool MapBipedBones(Transform root, ref Transform[] humanToTransform, List <string> report) { Debug.Log("s_BipedBones.length:" + s_BipedBones.Length); for (int bipedBoneIter = 0; bipedBoneIter < s_BipedBones.Length; bipedBoneIter++) { int boneIndex = s_BipedBones[bipedBoneIter].index; int parentIndex = HumanTrait.GetParentBone(boneIndex); bool required = HumanTrait.RequiredBone(boneIndex); bool parentRequired = parentIndex != -1 ? HumanTrait.RequiredBone(parentIndex) : true; Transform parentTransform = parentIndex != -1 ? humanToTransform[parentIndex] : root; if (parentTransform == null && !parentRequired) { parentIndex = HumanTrait.GetParentBone(parentIndex); parentRequired = parentIndex != -1 ? HumanTrait.RequiredBone(parentIndex) : true; parentTransform = parentIndex != -1 ? humanToTransform[parentIndex] : null; if (parentTransform == null && !parentRequired) { parentIndex = HumanTrait.GetParentBone(parentIndex); parentTransform = parentIndex != -1 ? humanToTransform[parentIndex] : null; } } humanToTransform[boneIndex] = MapBipedBone(bipedBoneIter, parentTransform, parentTransform, report); if (humanToTransform[boneIndex] == null && required) { return(false); } } return(true); }
protected AvatarControl.BodyPartColor IsValidBodyPart(BodyPart bodyPart) { AvatarControl.BodyPartColor ik = AvatarControl.BodyPartColor.Off; bool hasAnyBone = false; int idx = (int)bodyPart; if (bodyPart != BodyPart.LeftFingers && bodyPart != BodyPart.RightFingers) { int i; for (i = 0; i < m_BodyPartHumanBone[idx].Length; i++) { if (m_BodyPartHumanBone[idx][i] != -1) { BoneState state = m_Bones[m_BodyPartHumanBone[idx][i]].state; hasAnyBone |= state == BoneState.Valid; // if it a required bone and no bone is set this body part is not valid if (HumanTrait.RequiredBone(m_BodyPartHumanBone[idx][i]) == true && state == BoneState.None) { return(AvatarControl.BodyPartColor.Red); } else if (state != BoneState.Valid && state != BoneState.None) { return(AvatarControl.BodyPartColor.Red); } } } } else { bool hasAllFinger = true; int i; int phalangeCount = 3; for (i = 0; i < m_BodyPartHumanBone[idx].Length / phalangeCount; i++) { bool hasFinger = false; int fingerIndex = i * phalangeCount; int j; for (j = phalangeCount - 1; j >= 0; j--) { bool hasBone = m_Bones[m_BodyPartHumanBone[idx][fingerIndex + j]].state == BoneState.Valid; hasAllFinger &= hasBone; if (hasFinger) { if (!hasBone) { return(AvatarControl.BodyPartColor.Red | AvatarControl.BodyPartColor.IKRed); } } else { hasAnyBone |= hasFinger = !hasFinger && hasBone; } } } ik = hasAllFinger ? AvatarControl.BodyPartColor.IKGreen : AvatarControl.BodyPartColor.IKRed; } if (!hasAnyBone) { return(AvatarControl.BodyPartColor.Off | AvatarControl.BodyPartColor.IKRed); } return(AvatarControl.BodyPartColor.Green | ik); }
/// <summary> /// Draws the GUI for a single bone dot. /// </summary> /// <returns>Returns true if this is being hovered</returns> public bool BoneDotGUI(Rect rect, Rect selectRect, Rect tooltipRect, int boneIndex, bool hasHover = false) { bool hover = false; Event current = Event.current; Color color = GUI.color; if (!hasHover) { if (selectRect.Contains(current.mousePosition)) { if (state == BoneState.Valid) { if (current.type == EventType.MouseDown) { if (bone == null) { state = BoneState.None; } else { Selection.activeTransform = bone; if (bone != null) { EditorGUIUtility.PingObject(bone); } } current.Use(); } else { GUI.color = kBoneSelected; GUI.DrawTexture(rect, DotSelection.image); } } GUI.color = color; GUI.Box(tooltipRect, boneName, EditorStyles.whiteMiniLabel); hover = true; } } switch (state) { case BoneState.Valid: GUI.color = kBoneValid; break; case BoneState.None: GUI.color = kBoneInactive; break; default: GUI.color = kBoneInvalid; break; } Texture image = HumanTrait.RequiredBone(boneIndex) ? DotFrame.image : DotFrameDotted.image; GUI.DrawTexture(rect, image); if (bone != null) { GUI.DrawTexture(rect, DotFill.image); } GUI.color = color; return(hover); }
public static bool IsRequiredBone(int boneID) { return(HumanTrait.RequiredBone(boneID)); }
private static bool IsBoneOptional(HumanBodyBones humanBodyBones) { return(!HumanTrait.RequiredBone((int)humanBodyBones)); }