using UnityEngine; using System.Collections.Generic; using Shapes; public class GridGenerator { private float fieldSize; private int pointCount; private float pointSize; private float lineWidth; private float edgeLineLength; public GridGenerator(float fieldSize, int pointCount, float pointSize, float lineWidth, float edgeLineLength) { this.fieldSize = fieldSize; this.pointCount = pointCount; this.pointSize = pointSize; this.lineWidth = lineWidth; this.edgeLineLength = edgeLineLength; } public List GenerateGridPoints() { List points = new List(); float step = fieldSize / (pointCount - 1); float halfSize = fieldSize / 2f; for (int i = 0; i < pointCount; i++) { for (int j = 0; j < pointCount; j++) { float x = j * step - halfSize; float z = i * step - halfSize; points.Add(new Vector3(x, 0f, z)); } } return points; } public void DrawGridPoint(Vector3 position, float size, Color color) { Draw.Sphere(position, size, color); } public void DrawGridLine(Vector3 start, Vector3 end, float width, Color color) { Draw.Line(start, end, width, color); } public void DrawEdgeLine(Vector3 start, Vector3 end, float width, Color color) { Vector3 direction = (end - start).normalized; Vector3 normal = Vector3.Cross(direction, Vector3.up).normalized; Vector3 offset = normal * edgeLineLength; Draw.Line(start + offset, end + offset, width, color); } }