Vector3 CalcuSizeX(IntVector3 begin, IntVector3 end, ECalcuHeight type)
    {
        Vector3 size = new Vector3(end.x - begin.x,
                                   end.y - begin.y,
                                   end.z - begin.z);

        Vector3 abs_size = new Vector3(Mathf.Abs(size.x), Mathf.Abs(size.y), Mathf.Abs(size.z));

        float abs_l = 0.0f;
        float sign  = 1.0f;

        if (type == ECalcuHeight.XDir)
        {
            abs_l = abs_size.x;
            sign  = Mathf.Sign(size.x);
        }
        else if (type == ECalcuHeight.ZDir)
        {
            abs_l = abs_size.z;
            sign  = Mathf.Sign(size.z);
        }
        else
        {
            return(size);
        }

        float s = Mathf.Abs(abs_l / size.y);

        if (s < 1)
        {
            if (s < 0.5f)
            {
                float v = abs_size.y % 3;
                if (EqualsZero(v))
                {
                    abs_l = sign * abs_size.y / 3;
                }
                else
                {
                    abs_l = 1;
                }
            }
            else if (s >= 0.5f)
            {
                float v = abs_size.y % 2;
                if (EqualsZero(v))
                {
                    abs_l = sign * abs_size.y * 0.5f;
                }
                else
                {
                    v = abs_size.y % 3;
                    if (EqualsZero(v))
                    {
                        abs_l = sign * abs_size.y / 3;
                    }
                    else
                    {
                        abs_l = 1;
                    }
                }
            }
        }
        else if (s > 1)
        {
            if (s < 2)
            {
                abs_l = sign * abs_size.y;
            }
            else if (s >= 2 && s < 3)
            {
                abs_l = sign * abs_size.y * 2;
            }
            else if (s >= 3)
            {
                abs_l = sign * abs_size.y * 3;
            }
        }

        if (type == ECalcuHeight.XDir)
        {
            size.x = abs_l;
        }
        else if (type == ECalcuHeight.ZDir)
        {
            size.z = abs_l;
        }

        return(size);
    }
    Vector3 CalcuSizeY(IntVector3 begin, IntVector3 end, ECalcuHeight type)
    {
        Vector3 size = new Vector3(end.x - begin.x,
                                   end.y - begin.y,
                                   end.z - begin.z);

        Vector3 abs_size = new Vector3(Mathf.Abs(size.x), Mathf.Abs(size.y), Mathf.Abs(size.z));

        float abs_l = 0.0f;

        if (type == ECalcuHeight.XDir)
        {
            abs_l = abs_size.x;
        }
        else if (type == ECalcuHeight.ZDir)
        {
            abs_l = abs_size.z;
        }
        else
        {
            return(size);
        }

        float s = Mathf.Abs(abs_l / size.y);

        if (s < 1)
        {
            if (s < 0.3334f)
            {
                size.y = Mathf.Sign(size.y) * abs_l * 3;
            }
            else if (s > 0.3333f && s <= 0.5f)
            {
                size.y = Mathf.Sign(size.y) * abs_l * 2;
            }
            else
            {
                size.y = Mathf.Sign(size.y) * abs_l;
            }
        }
        else if (s > 1)
        {
            if (s < 3)
            {
                float v = abs_l % 2;
                if (EqualsZero(v))
                {
                    size.y = Mathf.Sign(size.y) * abs_l * 0.5f;
                }
                else
                {
                    v = abs_l % 3;
                    if (EqualsZero(v))
                    {
                        size.y = Mathf.Sign(size.y) * abs_l / 3;
                    }
                    else
                    {
                        size.y = 1;
                    }
                }
            }
            else if (s >= 3)
            {
                float v = abs_l % 3;
                if (EqualsZero(v))
                {
                    size.y = Mathf.Sign(size.y) * abs_l / 3;
                }
                else
                {
                    size.y = 1;
                }
            }
        }


        return(size);
    }