Exemplo n.º 1
0
    static public void GenerateSquare(Mesh2DMesh trianglesList, Vector2D point, float size, Transform transform, float width, float z, Slicer2DLineEndingType endingType, int edges)
    {
        if (endingType == Slicer2DLineEndingType.Square)
        {
            trianglesList.Add(Max2DMesh.CreateLine(new Pair2D(new Vector2D(point.x - size, point.y - size), new Vector2D(point.x + size, point.y - size)), transform.localScale, width, z));
            trianglesList.Add(Max2DMesh.CreateLine(new Pair2D(new Vector2D(point.x - size, point.y - size), new Vector2D(point.x - size, point.y + size)), transform.localScale, width, z));
            trianglesList.Add(Max2DMesh.CreateLine(new Pair2D(new Vector2D(point.x + size, point.y + size), new Vector2D(point.x + size, point.y - size)), transform.localScale, width, z));
            trianglesList.Add(Max2DMesh.CreateLine(new Pair2D(new Vector2D(point.x + size, point.y + size), new Vector2D(point.x - size, point.y + size)), transform.localScale, width, z));
        }
        else
        {
            float step = 360f / edges;

            for (int i = 0; i < edges; i++)
            {
                float x0 = Mathf.Cos((i - 1) * step * Mathf.Deg2Rad) * size;
                float y0 = Mathf.Sin((i - 1) * step * Mathf.Deg2Rad) * size;
                float x1 = Mathf.Cos(i * step * Mathf.Deg2Rad) * size;
                float y1 = Mathf.Sin(i * step * Mathf.Deg2Rad) * size;

                trianglesList.Add(Max2DMesh.CreateLine(new Pair2D(new Vector2D(point.x + x0, point.y + y0), new Vector2D(point.x + x1, point.y + y1)), transform.localScale, width, z));
            }
        }
    }
Exemplo n.º 2
0
    static public Mesh GenerateCreateMesh(Vector2D pos, Polygon2D.PolygonType polygonType, float polygonSize, Slicer2DCreateControllerObject.CreateType createType, List <Vector2D> complexSlicerPointsList, Pair2D linearPair, float minVertexDistance, Transform transform, float lineWidth, float zPosition, float squareSize, Slicer2DLineEndingType endingType, int edges)
    {
        Mesh2DMesh trianglesList = new Mesh2DMesh();

        float size = squareSize;

        if (createType == Slicer2DCreateControllerObject.CreateType.Slice)
        {
            if (complexSlicerPointsList.Count > 0)
            {
                linearPair.A = new Vector2D(complexSlicerPointsList.First());
                linearPair.B = new Vector2D(complexSlicerPointsList.Last());

                GenerateSquare(trianglesList, linearPair.A, size, transform, lineWidth, zPosition, endingType, edges);

                GenerateSquare(trianglesList, linearPair.B, size, transform, lineWidth, zPosition, endingType, edges);

                Vector2D vA, vB;
                foreach (Pair2D pair in Pair2D.GetList(complexSlicerPointsList, true))
                {
                    vA = new Vector2D(pair.A);
                    vB = new Vector2D(pair.B);

                    vA.Push(Vector2D.Atan2(pair.A, pair.B), -minVertexDistance / 5);
                    vB.Push(Vector2D.Atan2(pair.A, pair.B), minVertexDistance / 5);

                    trianglesList.Add(Max2DMesh.CreateLine(new Pair2D(vA, vB), transform.localScale, lineWidth, zPosition));
                }
            }
        }
        else
        {
            Polygon2D poly = Polygon2D.Create(polygonType, polygonSize).ToOffset(pos);

            Vector2D vA, vB;
            foreach (Pair2D pair in Pair2D.GetList(poly.pointsList, true))
            {
                vA = new Vector2D(pair.A);
                vB = new Vector2D(pair.B);

                vA.Push(Vector2D.Atan2(pair.A, pair.B), -minVertexDistance / 5);
                vB.Push(Vector2D.Atan2(pair.A, pair.B), minVertexDistance / 5);

                trianglesList.Add(Max2DMesh.CreateLine(new Pair2D(vA, vB), transform.localScale, lineWidth, zPosition));
            }
        }

        return(Max2DMesh.Export(trianglesList));
    }
Exemplo n.º 3
0
        static public Mesh GenerateMesh(List <Vector2D> complexSlicerPointsList, Transform transform, float lineWidth, float minVertexDistance, float zPosition, float squareSize, float lineEndWidth, float vertexSpace, Slicer2DLineEndingType endingType, int edges)
        {
            Mesh2DMesh trianglesList = new Mesh2DMesh();

            float size = squareSize;

            Vector2D      vA, vB;
            List <Pair2D> list = Pair2D.GetList(complexSlicerPointsList, false);

            foreach (Pair2D pair in list)
            {
                vA = new Vector2D(pair.A);
                vB = new Vector2D(pair.B);

                vA.Push(Vector2D.Atan2(pair.A, pair.B), -minVertexDistance * vertexSpace);
                vB.Push(Vector2D.Atan2(pair.A, pair.B), minVertexDistance * vertexSpace);

                trianglesList.Add(Max2DMesh.CreateLine(new Pair2D(vA, vB), transform.localScale, lineWidth, zPosition));
            }

            Pair2D linearPair = Pair2D.Zero();

            linearPair.A = new Vector2D(complexSlicerPointsList.First());
            linearPair.B = new Vector2D(complexSlicerPointsList.Last());

            GenerateSquare(trianglesList, linearPair.A, size, transform, lineEndWidth, zPosition, endingType, edges);

            GenerateSquare(trianglesList, linearPair.B, size, transform, lineEndWidth, zPosition, endingType, edges);

            return(Max2DMesh.Export(trianglesList));
        }
Exemplo n.º 4
0
        static public Mesh GenerateMesh(Pair2D linearPair, Transform transform, float lineWidth, float zPosition, float size, float lineEndWidth, Slicer2DLineEndingType endingType, int edges)
        {
            Mesh2DMesh trianglesList = new Mesh2DMesh();

            trianglesList.Add(Max2DMesh.CreateLine(linearPair, transform.localScale, lineWidth, zPosition));

            GenerateSquare(trianglesList, linearPair.A, size, transform, lineEndWidth, zPosition, endingType, edges);

            GenerateSquare(trianglesList, linearPair.B, size, transform, lineEndWidth, zPosition, endingType, edges);

            return(Max2DMesh.Export(trianglesList));
        }
Exemplo n.º 5
0
        static public Mesh GenerateTrackerMesh(Vector2D pos, Dictionary <Slicer2D, SlicerTrackerObject> trackerList, Transform transform, float lineWidth, float zPosition, float size, Slicer2DLineEndingType endingType, int edges)
        {
            Mesh2DMesh trianglesList = new Mesh2DMesh();

            GenerateSquare(trianglesList, pos, size, transform, lineWidth, zPosition, endingType, edges);

            trianglesList.Add(Max2DMesh.CreateLine(new Pair2D(pos, pos), transform.localScale, lineWidth, zPosition));

            foreach (KeyValuePair <Slicer2D, SlicerTrackerObject> trackerPair in trackerList)
            {
                SlicerTrackerObject tracker = trackerPair.Value;
                if (trackerPair.Key != null && tracker.tracking)
                {
                    foreach (Pair2D pair in Pair2D.GetList(Vector2DList.PointsToWorldSpace(trackerPair.Key.transform, tracker.GetLinearPoints()), false))
                    {
                        trianglesList.Add(Max2DMesh.CreateLine(pair, transform.localScale, lineWidth, zPosition));
                    }
                }
            }

            return(Max2DMesh.Export(trianglesList));
        }
Exemplo n.º 6
0
        public void Linear_GenerateTrackerMesh(Vector2 pos, Dictionary <Slicer2D, SlicerTrackerObject> trackerList, Transform transform, float lineWidth, float zPosition, float size, Slicer2DLineEndingType endingType, int edges)
        {
            GenerateSquare(pos, size, transform, lineWidth, zPosition, endingType, edges);

            CreateLine(new Pair2(pos, pos), transform.localScale, lineWidth, zPosition);

            foreach (KeyValuePair <Slicer2D, SlicerTrackerObject> trackerPair in trackerList)
            {
                SlicerTrackerObject tracker = trackerPair.Value;
                if (trackerPair.Key != null && tracker.tracking)
                {
                    foreach (Pair2 pair in Pair2.GetList(Vector2DList.PointsToWorldSpace(trackerPair.Key.transform, tracker.GetLinearPoints()), false))
                    {
                        CreateLine(pair, transform.localScale, lineWidth, zPosition);
                    }
                }
            }
        }
Exemplo n.º 7
0
        //// LINEAR /////
        public void Linear_GenerateMesh(Pair2 linearPair, Transform transform, float lineWidth, float zPosition, float size, float lineEndWidth, Slicer2DLineEndingType endingType, int edges)
        {
            CreateLine(linearPair, transform.localScale, lineWidth, zPosition);

            GenerateSquare(linearPair.a, size, transform, lineEndWidth, zPosition, endingType, edges);

            GenerateSquare(linearPair.b, size, transform, lineEndWidth, zPosition, endingType, edges);
        }
Exemplo n.º 8
0
        ///// Create /////
        public void GenerateCreateMesh(Vector2 pos, Polygon2D.PolygonType polygonType, float polygonSize, Slicer2DCreateControllerObject.CreateType createType, List <Vector2D> complexSlicerPointsList, Pair2D linearPair, float minVertexDistance, Transform transform, float lineWidth, float zPosition, float squareSize, Slicer2DLineEndingType endingType, int edges)
        {
            float size = squareSize;

            if (createType == Slicer2DCreateControllerObject.CreateType.Slice)
            {
                if (complexSlicerPointsList.Count > 0)
                {
                    linearPair.A = new Vector2D(complexSlicerPointsList.First());
                    linearPair.B = new Vector2D(complexSlicerPointsList.Last());

                    GenerateSquare(linearPair.A.ToVector2(), size, transform, lineWidth, zPosition, endingType, edges);

                    GenerateSquare(linearPair.B.ToVector2(), size, transform, lineWidth, zPosition, endingType, edges);

                    Vector2D vA, vB;
                    foreach (Pair2 pair in Pair2.GetList(complexSlicerPointsList, true))
                    {
                        vA = new Vector2D(pair.a);
                        vB = new Vector2D(pair.b);

                        vA.Push(Vector2D.Atan2(pair.a, pair.b), -minVertexDistance / 5);
                        vB.Push(Vector2D.Atan2(pair.a, pair.b), minVertexDistance / 5);

                        CreateLine(new Pair2(vA.ToVector2(), vB.ToVector2()), transform.localScale, lineWidth, zPosition);
                    }
                }
            }
            else
            {
                Polygon2D poly = Polygon2D.Create(polygonType, polygonSize).ToOffset(pos);

                Vector2D vA, vB;
                foreach (Pair2 pair in Pair2.GetList(poly.pointsList, true))
                {
                    vA = new Vector2D(pair.a);
                    vB = new Vector2D(pair.b);

                    vA.Push(Vector2D.Atan2(pair.a, pair.b), -minVertexDistance / 5);
                    vB.Push(Vector2D.Atan2(pair.a, pair.b), minVertexDistance / 5);

                    CreateLine(new Pair2(vA.ToVector2(), vB.ToVector2()), transform.localScale, lineWidth, zPosition);
                }
            }
        }
Exemplo n.º 9
0
        public void Complex_GenerateTrackerMesh(Vector2 pos, Dictionary <Slicer2D, SlicerTrackerObject> trackerList, Transform transform, float lineWidth, float zPosition, float squareSize, Slicer2DLineEndingType endingType, int edges)
        {
            float size = squareSize;

            GenerateSquare(pos, size, transform, lineWidth, zPosition, endingType, edges);

            CreateLine(new Pair2(pos, pos), transform.localScale, lineWidth, zPosition);

            foreach (KeyValuePair <Slicer2D, SlicerTrackerObject> trackerPair in trackerList)
            {
                SlicerTrackerObject tracker = trackerPair.Value;
                if (trackerPair.Key != null && tracker.tracking)
                {
                    List <Vector2D> pointListWorld = Vector2DList.PointsToWorldSpace(trackerPair.Key.transform, tracker.pointsList);

                    pointListWorld.Add(new Vector2D(pos));

                    List <Pair2> pairList = Pair2.GetList(pointListWorld, false);

                    foreach (Pair2 pair in pairList)
                    {
                        CreateLine(pair, transform.localScale, lineWidth, zPosition);
                    }
                }
            }
        }
Exemplo n.º 10
0
        ///// COMPLEX /////
        public void Complex_GenerateMesh(Vector2List complexSlicerPointsList, Transform transform, float lineWidth, float minVertexDistance, float zPosition, float squareSize, float lineEndWidth, float vertexSpace, Slicer2DLineEndingType endingType, int edges)
        {
            float size = squareSize;

            Vector2 vA, vB;
            float   rot;

            List <Pair2> list = Pair2.GetList(complexSlicerPointsList, false);

            foreach (Pair2 pair in list)
            {
                vA = pair.a;
                vB = pair.b;

                rot = (float)Vector2D.Atan2(pair.a, pair.b);

                vA = vA.Push(rot, -minVertexDistance * vertexSpace);
                vB = vB.Push(rot, minVertexDistance * vertexSpace);

                CreateLine(new Pair2(vA, vB), transform.localScale, lineWidth, zPosition);
            }

            Pair2 linearPair = Pair2.zero;;

            linearPair.a = complexSlicerPointsList.First();
            linearPair.b = complexSlicerPointsList.Last();

            GenerateSquare(linearPair.a, size, transform, lineEndWidth, zPosition, endingType, edges);

            GenerateSquare(linearPair.b, size, transform, lineEndWidth, zPosition, endingType, edges);
        }