private void ActionPath(int x, int y, int n) { Transform tile = transform.GetChild(n); SpriteRenderer sr = tile.GetComponent <SpriteRenderer>(); int len = pathfinder.GetPathLength(); if (settingFrom) { // Reset for (int i = 0; i < len; ++i) { SetTileColor(pathfinder.GetPathData(i), Color.white); } if (posFrom.x >= 0 && posFrom.y >= 0) { int fi = Grid.GetIndex(gridColumns, posFrom.x, posFrom.y); SetTileColor(fi, pathfinder.GetType(posFrom.x, posFrom.y) > 0 ? Color.white : Color.black); } if (posTo.x >= 0 && posTo.y >= 0) { int ti = Grid.GetIndex(gridColumns, posTo.x, posTo.y); SetTileColor(ti, Color.white); } posTo = new Point2(-1, -1); posFrom = new Point2(x, y); settingFrom = false; sr.color = Color.red; return; } if (!settingFrom) { posTo = new Point2(x, y); settingFrom = true; #if UNITY_EDITOR Profiler.BeginSample("Pathfind"); #endif sw.Start(); len = pathfinder.FindPath(posFrom, posTo, walkMask); sw.Stop(); ns = sw.Elapsed.TotalMilliseconds * 1000000; ms = sw.ElapsedMilliseconds; sw.Reset(); #if UNITY_EDITOR Profiler.EndSample(); #endif for (int i = 0; i < len; ++i) { SetTileColor(pathfinder.GetPathData(i), Color.green); } sr.color = Color.blue; } }