예제 #1
0
    private bool ParalleCheck(Vector3 v1, Vector3 v01, Vector3 p1, Vector3 p2)
    {
        if (paralleYList == null)
        {
            paralleYList = new List <List <Vector3> >();
        }
        if (paralleXList == null)
        {
            paralleXList = new List <List <Vector3> >();
        }
        if (Util_Vector.IsParallel(v1, v01))
        {
            List <Vector3> p = new List <Vector3>();// { pointList[0], pointList[1] }
            if (Util_Vector.IsParallelAndDirection(v1, v01) == 1)
            {
                p.Add(p1);
                p.Add(p2);
            }
            else
            {
                p.Add(p2);
                p.Add(p1);
            }
            if (paralleYList.Count == 1)
            {
                if (Util_Vector.PointOnLeftSide((paralleYList[0][0] - paralleYList[0][1]), p[0]))
                {
                    paralleYList.Insert(0, p);
                }
                else
                {
                    paralleYList.Add(p);
                }
            }
            else
            {
                paralleYList.Add(p);
            }
            return(true);
        }
        else
        {
            List <Vector3> p = new List <Vector3>();// { pointList[0], pointList[1] }
            if (Util_Vector.IsParallelAndDirection(v1, Quaternion.AngleAxis(targetRotation.eulerAngles.y, Vector3.up) * Vector3.right) == 1)
            {
                p.Add(p1);
                p.Add(p2);
            }
            else
            {
                p.Add(p2);
                p.Add(p1);
            }
            if (paralleXList.Count == 1)
            {
                if (Util_Vector.PointOnLeftSide((paralleXList[0][0] - paralleXList[0][1]), p[0]))
                {
                    paralleXList.Insert(0, p);
                }
                else
                {
                    paralleXList.Add(p);
                }
            }
            else
            {
                paralleXList.Add(p);
            }

            return(false);
        }
    }
예제 #2
0
    private static bool ParalleCheck(GameObject target, Vector3 p1, Vector3 p2, List <List <Vector3> > paralleZList, List <List <Vector3> > paralleXList, out List <List <Vector3> > list)
    {
        // paralleZList = new List<List<Vector3>>();
        //paralleXList = new List<List<Vector3>>();
        Vector3 p3 = p1 - p2;

        if (Util_Vector.IsParallel(p3, target.transform.forward))
        {
            List <Vector3> p = new List <Vector3>();// { pointList[0], pointList[1] }
            if (Util_Vector.IsParallelAndDirection(p3, target.transform.forward) == 1)
            {
                p.Add(p1);
                p.Add(p2);
            }
            else
            {
                p.Add(p2);
                p.Add(p1);
            }
            if (paralleZList.Count == 1)
            {
                if (Util_Vector.PointOnLeftSide((paralleZList[0][0] - paralleZList[0][1]), p[0]))
                {
                    paralleZList.Insert(0, p);
                }
                else
                {
                    paralleZList.Add(p);
                }
            }
            else
            {
                paralleZList.Add(p);
            }
            list = paralleZList;
            return(true);
        }
        else
        {
            List <Vector3> p = new List <Vector3>();// { pointList[0], pointList[1] }
            if (Util_Vector.IsParallelAndDirection(p3, target.transform.right) == 1)
            {
                p.Add(p1);
                p.Add(p2);
            }
            else
            {
                p.Add(p2);
                p.Add(p1);
            }
            if (paralleXList.Count == 1)
            {
                if (Util_Vector.PointOnLeftSide((paralleXList[0][0] - paralleXList[0][1]), p[0]))
                {
                    paralleXList.Insert(0, p);
                }
                else
                {
                    paralleXList.Add(p);
                }
            }
            else
            {
                paralleXList.Add(p);
            }
            list = paralleXList;
            return(false);
        }
    }