// Checking mouse press and release events to get linear slices based on input public void LateUpdate() { for (int id = 0; id < 10; id++) { Vector2D pos = new Vector2D(input.GetInputPosition(id)); if (input.GetInputClicked(id)) { linearPair[id].A.Set(pos); } if (input.GetInputPressed(id)) { linearPair[id].B.Set(pos); } if (input.GetInputReleased(id)) { if (input.GetSlicingEnabled(id)) { LinearSlice(linearPair[id]); } } if (input.GetInputPressed(id) == false) { linearPair[id].A.Set(pos); linearPair[id].B.Set(pos); } } }
// Checking mouse press and release events to get linear slices based on input public void LateUpdate() { for (int id = 0; id < 10; id++) { Vector2 pos = input.GetInputPosition(id); if (input.GetInputClicked(id)) { linearPair[id].a = pos; } if (input.GetInputPressed(id)) { linearPair[id].b = pos; } if (input.GetInputReleased(id)) { if (input.GetSlicingEnabled(id)) { LinearSlice(linearPair[id].ToPair2D()); } } if (input.GetInputPressed(id) == false) { linearPair[id].a = pos; linearPair[id].b = pos; } } }
// Checking mouse press and release events to get linear slices based on input public void LateUpdate() { for (int id = 0; id < 10; id++) { Vector2D pos = new Vector2D(input.GetInputPosition(id)); if (input.GetInputClicked(id)) { points[id].Clear(); points[id].Add(pos); } if (input.GetInputPressed(id)) { Vector2D posMove = new Vector2D(points[id].Last()); while ((Vector2D.Distance(posMove, pos) > minVertexDistance)) { float direction = (float)Vector2D.Atan2(pos, posMove); posMove.Push(direction, minVertexDistance); points[id].Add(new Vector2D(posMove)); } } if (input.GetInputReleased(id)) { Slicer2D.complexSliceType = complexSliceType; if (input.GetSlicingEnabled(id)) { ComplexSlice(points[id]); } points[id].Clear(); } if (input.GetInputPressed(id) == false) { if (points[id].Count > 0) { points[id].Clear(); } } } }
public void LateUpdate() { Vector2 pos = input.GetInputPosition(); if (input.GetInputClicked()) { points.Clear(); points.Add(pos); } if (input.GetInputPressed()) { Vector2 posMove = points.Last(); while ((Vector2.Distance(posMove, pos) > minVertexDistance)) { float direction = pos.Atan2(posMove); posMove = posMove.Push(direction, minVertexDistance); points.Add(posMove); } } if (input.GetInputReleased()) { if (input.GetSlicingEnabled()) { ComplexMerge(points.ToVector2DList()); } points.Clear(); } if (input.GetInputPressed() == false) { if (points.Count() > 0) { points.Clear(); } } }
public void Update() { input.Update(); if (visuals.drawSlicer == false) { return; } if (linearPair.A.ToVector2() == Vector2.zero && linearPair.B.ToVector2() == Vector2.zero) { return; } visuals.Clear(); visuals.GenerateLinearMesh(linearPair, transform); visuals.Draw(); if (target != null) { Polygon2D poly = target.shape.GetWorld(); int pointIDA = ((verticeID - 1) + poly.pointsList.Count) % poly.pointsList.Count; int pointIDB = verticeID; int pointIDC = (verticeID + 1) % poly.pointsList.Count; Vector2 pointA = poly.pointsList[pointIDA].ToVector2(); Vector2 pointB = poly.pointsList[pointIDB].ToVector2(); Vector2 pointC = poly.pointsList[pointIDC].ToVector2(); double angle = Math2D.FindAngle(pointA, pointB, pointC); Vector2D offset = new Vector2D(pointB); double angleZero = Vector2D.Atan2(new Vector2D(pointA), new Vector2D(pointB)); Debug.Log(angle * Mathf.Rad2Deg); offset.Push(-angle / 2 + angleZero, 0.5f); linearPair.A = offset; } if (Input.GetMouseButtonDown(1)) { Vector2D point = input.GetInputPosition(0); if (target != null) { Polygon2D poly = target.shape.GetWorld(); if (poly.PointInPoly(point) == false) { target = null; linearPair.A = Vector2D.Zero(); linearPair.B = Vector2D.Zero(); } } foreach (Slicer2D slicer in Slicer2D.GetList()) { Polygon2D poly = slicer.shape.GetWorld(); if (poly.PointInPoly(point)) { int id = 0; double distance = 1000000; foreach (Vector2D p in poly.pointsList) { double newDistance = Vector2D.Distance(p, point); if (newDistance < distance) { distance = newDistance; id = poly.pointsList.IndexOf(p); } } verticeID = id; target = slicer; break; } } } }
public void LateUpdate() { if (BlockedByUI() == false) { input.Update(); } Vector2 pos = input.GetInputPosition(); switch (sliceType) { case SliceType.Linear: linearControllerObject.Update(); break; case SliceType.LinearCut: linearCutControlelrObject.Update(pos); break; case SliceType.ComplexCut: complexCutControllerObject.Update(pos); break; case SliceType.Complex: complexControllerObject.Update(); break; case SliceType.LinearTracked: linearTrackedControlelrObject.Update(pos); break; case SliceType.ComplexTracked: complexTrackedControllerObject.Update(pos); break; case SliceType.Point: pointControllerObject.Update(pos); break; case SliceType.Explode: explodeControllerObject.Update(pos); break; case SliceType.ComplexClick: complexClickControllerObject.Update(pos); break; case SliceType.LinearTrail: linearTrailControllerObject.Update(); break; case SliceType.ComplexTrail: complexTrailControllerObject.Update(); break; case SliceType.Create: createControllerObject.Update(pos, transform); break; case SliceType.Polygon: polygonControllerObject.Update(pos); break; case SliceType.MergerComplex: mergerComplexControllerObject.Update(); break; case SliceType.MergerPolygon: mergerPolygonControllerObject.Update(pos); break; default: break; } Draw(); }