ContainsDuplicateBone() 공개 정적인 메소드

Checks if an array of objects contains any duplicates.
public static ContainsDuplicateBone ( Bone bones ) : Transform
bones Bone
리턴 UnityEngine.Transform
예제 #1
0
        public override bool IsValid(bool log)
        {
            if (!this.spineIsValid)
            {
                if (log)
                {
                    base.LogWarning("IKSolverLookAt spine setup is invalid. Can't initiate solver.");
                }
                return(false);
            }
            if (!this.headIsValid)
            {
                if (log)
                {
                    base.LogWarning("IKSolverLookAt head transform is null. Can't initiate solver.");
                }
                return(false);
            }
            if (!this.eyesIsValid)
            {
                if (log)
                {
                    base.LogWarning("IKSolverLookAt eyes setup is invalid. Can't initiate solver.");
                }
                return(false);
            }
            if (this.spineIsEmpty && this.headIsEmpty && this.eyesIsEmpty)
            {
                if (log)
                {
                    base.LogWarning("IKSolverLookAt spine, head and eyes are empty. There is nothing for the solver to solve.");
                }
                return(false);
            }
            Transform transform = IKSolver.ContainsDuplicateBone(this.spine);

            if (transform != null)
            {
                if (log)
                {
                    base.LogWarning(transform.name + " is represented multiple times in a single IK chain. Can't initiate solver.");
                }
                return(false);
            }
            Transform transform2 = IKSolver.ContainsDuplicateBone(this.eyes);

            if (transform2 != null)
            {
                if (log)
                {
                    base.LogWarning(transform2.name + " is represented multiple times in a single IK chain. Can't initiate solver.");
                }
                return(false);
            }
            return(true);
        }
예제 #2
0
        public override bool IsValid(ref string message)
        {
            if (this.bones.Length == 0)
            {
                message = "IK chain has no Bones.";
                return(false);
            }
            if (this.bones.Length < this.minBones)
            {
                message = "IK chain has less than " + this.minBones + " Bones.";
                return(false);
            }
            IKSolver.Bone[] array = this.bones;
            for (int i = 0; i < array.Length; i++)
            {
                if (array[i].transform == null)
                {
                    message = "One of the Bones is null.";
                    return(false);
                }
            }
            Transform transform = IKSolver.ContainsDuplicateBone(this.bones);

            if (transform != null)
            {
                message = transform.name + " is represented multiple times in the Bones.";
                return(false);
            }
            if (!this.allowCommonParent && !IKSolver.HierarchyIsValid(this.bones))
            {
                message = "Invalid bone hierarchy detected. IK requires for it's bones to be parented to each other in descending order.";
                return(false);
            }
            if (!this.boneLengthCanBeZero)
            {
                for (int j = 0; j < this.bones.Length - 1; j++)
                {
                    if ((this.bones[j].transform.position - this.bones[j + 1].transform.position).magnitude == 0f)
                    {
                        message = "Bone " + j + " length is zero.";
                        return(false);
                    }
                }
            }
            return(true);
        }
예제 #3
0
        public override bool IsValid(ref string message)
        {
            if (!this.spineIsValid)
            {
                message = "IKSolverLookAt spine setup is invalid. Can't initiate solver.";
                return(false);
            }
            if (!this.headIsValid)
            {
                message = "IKSolverLookAt head transform is null. Can't initiate solver.";
                return(false);
            }
            if (!this.eyesIsValid)
            {
                message = "IKSolverLookAt eyes setup is invalid. Can't initiate solver.";
                return(false);
            }
            if (this.spineIsEmpty && this.headIsEmpty && this.eyesIsEmpty)
            {
                message = "IKSolverLookAt eyes setup is invalid. Can't initiate solver.";
                return(false);
            }
            IKSolver.Bone[] bones     = this.spine;
            Transform       transform = IKSolver.ContainsDuplicateBone(bones);

            if (transform != null)
            {
                message = transform.name + " is represented multiple times in a single IK chain. Can't initiate solver.";
                return(false);
            }
            bones = this.eyes;
            Transform transform2 = IKSolver.ContainsDuplicateBone(bones);

            if (transform2 != null)
            {
                message = transform2.name + " is represented multiple times in a single IK chain. Can't initiate solver.";
                return(false);
            }
            return(true);
        }
예제 #4
0
        public override bool IsValid(bool log)
        {
            if (this.bones.Length == 0)
            {
                if (log)
                {
                    base.LogWarning("IK chain has no bones. Can not initiate solver.");
                }
                return(false);
            }
            if (this.bones.Length < this.minBones)
            {
                if (log)
                {
                    base.LogWarning("IK chain has less than " + this.minBones + " bones. Can not initiate solver.");
                }
                return(false);
            }
            IKSolver.Bone[] array = this.bones;
            for (int i = 0; i < array.Length; i++)
            {
                IKSolver.Bone bone = array[i];
                if (bone.transform == null)
                {
                    if (log)
                    {
                        base.LogWarning("Bone transform is null in IK chain. Can not initiate solver.");
                    }
                    return(false);
                }
            }
            if (!this.allowCommonParent && !IKSolver.HierarchyIsValid(this.bones))
            {
                if (log)
                {
                    base.LogWarning("IK requires for it's bones to be parented to each other. Invalid bone hierarchy detected.");
                }
                return(false);
            }
            Transform transform = IKSolver.ContainsDuplicateBone(this.bones);

            if (transform != null)
            {
                if (log)
                {
                    base.LogWarning(transform.name + " is represented multiple times in a single IK chain. Can nott initiate solver.");
                }
                return(false);
            }
            if (!this.boneLengthCanBeZero)
            {
                for (int j = 0; j < this.bones.Length - 1; j++)
                {
                    float magnitude = (this.bones[j].transform.position - this.bones[j + 1].transform.position).magnitude;
                    if (magnitude == 0f)
                    {
                        if (log)
                        {
                            base.LogWarning("Bone " + j + " length is zero. Can nott initiate solver.");
                        }
                        return(false);
                    }
                }
            }
            return(true);
        }