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)); } } }
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)); }
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)); }
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)); }
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)); }
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); } } } }
//// 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); }
///// 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); } } }
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); } } } }
///// 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); }