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); }
protected static void DrawBodyPart(int shownBodyView, int i, Rect rect, AvatarControl.BodyPartColor bodyPartColor) { if (AvatarControl.styles.BodyPart[shownBodyView, i] == null || !((Object)AvatarControl.styles.BodyPart[shownBodyView, i].image != (Object)null)) { return; } GUI.color = (bodyPartColor & AvatarControl.BodyPartColor.Green) != AvatarControl.BodyPartColor.Green ? ((bodyPartColor & AvatarControl.BodyPartColor.Red) != AvatarControl.BodyPartColor.Red ? Color.gray : Color.red) : Color.green; GUI.DrawTexture(rect, AvatarControl.styles.BodyPart[shownBodyView, i].image); GUI.color = Color.white; }
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); }
protected static void DrawBodyPart(int shownBodyView, int i, Rect rect, AvatarControl.BodyPartColor bodyPartColor) { if (AvatarControl.styles.BodyPart[shownBodyView, i] != null && AvatarControl.styles.BodyPart[shownBodyView, i].image != null) { if ((bodyPartColor & AvatarControl.BodyPartColor.Green) == AvatarControl.BodyPartColor.Green) { GUI.color = Color.green; } else if ((bodyPartColor & AvatarControl.BodyPartColor.Red) == AvatarControl.BodyPartColor.Red) { GUI.color = Color.red; } else { GUI.color = Color.gray; } GUI.DrawTexture(rect, AvatarControl.styles.BodyPart[shownBodyView, i].image); GUI.color = Color.white; } }
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); }