/* ------------------- Code Monkey ------------------- Thank you for downloading this package I hope you find it useful in your projects If you have any questions let me know Cheers! unitycodemonkey.com -------------------------------------------------- */ using System.Collections; using System.Collections.Generic; using UnityEngine; public class PathfindingVisual : MonoBehaviour { private GridXZ grid; private Mesh mesh; private bool updateMesh; private void Awake() { mesh = new Mesh(); GetComponent().mesh = mesh; } public void SetGrid(GridXZ grid) { this.grid = grid; UpdateVisual(); grid.OnGridObjectChanged += Grid_OnGridValueChanged; } private void Grid_OnGridValueChanged(object sender, GridXZ.OnGridObjectChangedEventArgs e) { updateMesh = true; } private void LateUpdate() { if (updateMesh) { updateMesh = false; UpdateVisual(); } } private void UpdateVisual() { MeshUtils.CreateEmptyMeshArrays(grid.GetWidth() * grid.GetHeight(), out Vector3[] vertices, out Vector2[] uv, out int[] triangles); for (int x = 0; x < grid.GetWidth(); x++) { for (int z = 0; z < grid.GetHeight(); z++) { int index = x * grid.GetHeight() + z; Vector3 quadSize = new Vector3(1, 0, 1) * grid.GetCellSize(); PathNode pathNode = grid.GetGridObject(x, z); if (pathNode.isWalkable) { quadSize = Vector3.zero; } MeshUtils.AddToMeshArraysXZ(vertices, uv, triangles, index, grid.GetWorldPosition(x, z) + quadSize * .5f, 0f, quadSize, Vector2.zero, Vector2.zero); } } mesh.vertices = vertices; mesh.uv = uv; mesh.triangles = triangles; } }