void MouseDragCall() { Vector3 touchDownPosition = Input.mousePosition; touchDownPosition = Camera.main.ScreenToWorldPoint(touchDownPosition); Vector3 secondToLastPoint = new Vector3(transform.position.x, transform.position.y, 0.0f); if (comp_path.PathCount > 1) { secondToLastPoint = comp_path.GetPoint(comp_path.PathCount - 2); } if (bounds_screenToWorld.Contains(touchDownPosition) && Physics2D.LinecastNonAlloc((Vector2)secondToLastPoint, (Vector2)touchDownPosition, results_rayhits, path_checkMask) < 1) { if (Vector2.Distance((Vector2)secondToLastPoint, (Vector2)touchDownPosition) >= comp_path.maxSegmentDistance) { comp_path.InsertPoint(comp_path.PathCount - 1, touchDownPosition); // to push the last one back } comp_path.SetPoint(comp_path.PathCount - 1, touchDownPosition); } else { if (comp_path.PathCount > 1) { comp_path.RemovePoint(comp_path.PathCount - 1); MouseUpCall(); } else { comp_path.SetPoint(0, transform.position); } } }