// c===============3
    // c===============3
    // c===============3
    void CalculateDistance()
    {
        UpperCentre = Utilities_Class.Centre3D(LupperLeg.position, RupperLeg.position);

        if (IKControl.leftFootIK && IKControl.rightFootIK)
        {
            //HCentre = Utilities_Class.Centre3D(Lhand.position, RHand.position);
            HCentre = Utilities_Class.Centre3D(IKControl.leftFootPos, IKControl.rightFootPos);
            c       = Utilities_Class.distance3D(HCentre, UpperCentre);
        }
        else if (IKControl.leftFootIK && !IKControl.rightFootIK)
        {
            // HCentre = Lhand.position;
            HCentre = IKControl.leftFootPos;
            c       = Utilities_Class.distance3D(HCentre, LupperLeg.position);
        }
        else if (!IKControl.leftFootIK && IKControl.rightFootIK)
        {
            //HCentre = RHand.position;
            HCentre = IKControl.rightFootPos;
            c       = Utilities_Class.distance3D(HCentre, LupperLeg.position);
        }
        else
        {
            HCentre = Utilities_Class.Centre3D(LFoot.position, RFoot.position);
            c       = Utilities_Class.distance3D(HCentre, UpperCentre);
        }
    }
    public void GroundedCast()
    {
        RaycastHit groundRay;
        RaycastHit FwdgroundRay;
        RaycastHit BckgroundRay;

        Debug.DrawRay(CastPos, -transform.up * distToGround, Color.green);

        if (Physics.Raycast(CastPos, -transform.up, out groundRay, 100, ignoreMask))
        {
            groundSlope = angleConvert(Mathf.RoundToInt(SlopAngle((ParrellSurfaceVector(angleX, angleY, angleZ, groundRay.normal)))));
            Debug.DrawRay(groundRay.point, (ParrellSurfaceVector(angleX, angleY, angleZ, groundRay.normal)), Color.cyan);
            float dist = Utilities_Class.distance3D(transform.position, groundRay.point);

            if (dist < .1f)
            {
                groundPos = groundRay.point;
                isBlw     = CheckSlope(groundSlope);
            }
            else
            {
                isBlw = false;
                if (Physics.Raycast(CastPos - offset, -transform.forward, out BckgroundRay, bckDst, ignoreMask))
                {
                    groundSlope = angleConvert(Mathf.RoundToInt(SlopAngle((ParrellSurfaceVector(angleX, angleY, angleZ, BckgroundRay.normal)))));
                    groundPos   = groundRay.point;

                    Debug.DrawRay(BckgroundRay.point, (ParrellSurfaceVector(angleX, angleY, angleZ, BckgroundRay.normal)), Color.magenta);
                    Debug.DrawRay(CastPos - offset, -transform.forward * bckDst, Color.red);

                    isBck = CheckSlope(groundSlope);
                }
                else
                {
                    Debug.DrawRay(CastPos - offset, -transform.forward * bckDst, Color.blue);
                    isBck = false;
                }

                if (Physics.Raycast(CastPos - offset, transform.forward, out FwdgroundRay, fwdDst, ignoreMask))
                {
                    groundSlope = angleConvert(Mathf.RoundToInt(SlopAngle((ParrellSurfaceVector(angleX, angleY, angleZ, FwdgroundRay.normal)))));
                    groundPos   = groundRay.point;

                    Debug.DrawRay(FwdgroundRay.point, (ParrellSurfaceVector(angleX, angleY, angleZ, FwdgroundRay.normal)), Color.magenta);
                    Debug.DrawRay(CastPos - offset, transform.forward * fwdDst, Color.yellow);

                    isFwD = CheckSlope(groundSlope);
                }
                else
                {
                    Debug.DrawRay(CastPos - offset, transform.forward * fwdDst, Color.magenta);
                    isFwD = false;
                }
            }

            groundPos = transform.position;
        }
    }
 void SortActiveObjects()
 {
     for (int i = 0; i < activeObject.Count; i++)
     {
         activeObject.Sort(delegate(GameObject a, GameObject b)
         {
             return((Utilities_Class.distance3D(this.transform.position, activeObject[i].transform.position)).
                    CompareTo(Utilities_Class.distance3D(this.transform.position, activeObject[(i + 1) % activeObject.Count].transform.position)));
         });
     }
 }
    // c===============3
    // c===============3
    // c===============3
    void CalculateArmLengths()
    {
        float r1     = Utilities_Class.distance3D(RupperLeg.position, RlowerLeg.position);
        float r2     = Utilities_Class.distance3D(RlowerLeg.position, RFoot.position);
        float rfinal = r1 + r2;

        r = rfinal;
        float l1     = Utilities_Class.distance3D(LupperLeg.position, LlowerLeg.position);
        float l2     = Utilities_Class.distance3D(LlowerLeg.position, LFoot.position);
        float lfinal = l1 + l2;

        l = lfinal;
    }
    Vector3 UpdatePosition()
    {
        float dx = P_Arm_Distance.HCentre.x - P_Arm_Distance.UpperCentre.x;
        float dy = P_Arm_Distance.HCentre.y - P_Arm_Distance.UpperCentre.y;
        float dz = P_Arm_Distance.HCentre.z - P_Arm_Distance.UpperCentre.z;

        float dist = Utilities_Class.distance3D(P_Arm_Distance.UpperCentre, P_Arm_Distance.HCentre);
        float diff = (P_Arm_Distance.c + grabLengthDistance) - dist;

        float percent = (diff / dist) / 2;

        float offsetX = dx * percent;
        float offsetY = dy * percent;
        float offsetZ = dz * percent;

        return(new Vector3(offsetX, offsetY, offsetZ));
    }
    void ManageNearestObject()
    {
        Bounds bounds = activeObject[activeObject.Count - 1].GetComponent <MeshRenderer>().bounds;

        distance = Utilities_Class.distance3D(transform.position, activeObject[activeObject.Count - 1].transform.position);

        if (interActiveDistance >= Utilities_Class.distance3D(transform.position, activeObject[activeObject.Count - 1].transform.position) &&
            transform.root.position.y <= activeObject[activeObject.Count - 1].transform.position.y + bounds.extents.y)
        {
            nearestObj       = activeObject[activeObject.Count - 1];
            nearestObjBounds = bounds;
        }
        else
        {
            nearestObj = null;
        }
    }