Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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);
        }