mirror of
				https://github.com/DerTyp7/industrialize-unity.git
				synced 2025-10-31 13:27:09 +01:00 
			
		
		
		
	conveyor placement rework
This commit is contained in:
		
							
								
								
									
										58
									
								
								Assets/Scripts/GridSystem/VectorDrawing.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								Assets/Scripts/GridSystem/VectorDrawing.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| using System.Collections.Generic; | ||||
| using UnityEngine; | ||||
|  | ||||
| public class VectorDrawing : MonoBehaviour | ||||
| { | ||||
|     public static float DiagonalDistance(Vector3 startWorldPosition, Vector3 endWorldPosition) | ||||
|     { | ||||
|         float dx = endWorldPosition.x - startWorldPosition.x; | ||||
|         float dy = endWorldPosition.y - startWorldPosition.y; | ||||
|  | ||||
|         return Mathf.Sqrt(dx * dx + dy * dy); | ||||
|     } | ||||
|  | ||||
|     public static List<Vector2Int> FindVectorPath(Vector3 startWorldPosition, Vector3 endWorldPosition) | ||||
|     { | ||||
|         List<Vector2Int> points = new List<Vector2Int>(); | ||||
|         Grid<PathNode> grid = Pathfinding.instance.GetGrid(); | ||||
|         float N = DiagonalDistance(startWorldPosition, endWorldPosition); | ||||
|  | ||||
|         grid.GetXY(startWorldPosition, out int startX, out int startY); | ||||
|         grid.GetXY(endWorldPosition, out int endX, out int endY); | ||||
|  | ||||
|         points.Add(new Vector2Int(startX, startY)); | ||||
|  | ||||
|         for (int i = 0; i < N + 1; i++) // N+1  for endWorldPosition | ||||
|         { | ||||
|             int x; | ||||
|             int y; | ||||
|  | ||||
|             if (i < N) | ||||
|             { | ||||
|                 float t = (float)i / N; | ||||
|                 Vector3 point = Vector3.Lerp(startWorldPosition, endWorldPosition, t); | ||||
|  | ||||
|                 grid.GetXY(point, out x, out y); | ||||
|             } | ||||
|             else // is endWorldPosition | ||||
|             { | ||||
|                 x = endX; | ||||
|                 y = endY; | ||||
|             } | ||||
|  | ||||
|  | ||||
|  | ||||
|             // Sample points -> no diagonal connection | ||||
|             if (i != 0) | ||||
|             { | ||||
|                 if (x != points[points.Count - 1].x && y != points[points.Count - 1].y) | ||||
|                 { | ||||
|                     points.Add(new Vector2Int(x, points[points.Count - 1].y)); | ||||
|                 } | ||||
|             } | ||||
|             points.Add(new Vector2Int(x, y)); | ||||
|         } | ||||
|  | ||||
|         return points; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Janis
					Janis