public void Generate() { int i, j, k; if (!initialised) { stepField = new NativeArray <float>(map.width * map.height, Allocator.Persistent); flowField = new NativeArray <Vector2>(map.width * map.height, Allocator.Persistent); openSet = new NativeList <Vector2Int>(Allocator.Persistent); nextSet = new NativeList <Vector2Int>(Allocator.Persistent); initialised = true; } openSet.Clear(); nextSet.Clear(); for (i = 0; i < targets.Count; i++) { openSet.Add(targets[i]); } for (i = 0; i < map.width; i++) { for (j = 0; j < map.height; j++) { stepField[i + j * map.width] = int.MaxValue; flowField[i + j * map.width] = Vector2.zero; } } for (i = 0; i < targets.Count; i++) { stepField[targets[i].x + targets[i].y * map.width] = 0; } UnityEngine.Profiling.Profiler.BeginSample("FlowGenerate"); var myJob = new MyJob { map = map.mapDataStore, pathType = pathType, stepField = stepField, flowField = flowField, nextSet = nextSet, openSet = openSet }; myJob.Run(); UnityEngine.Profiling.Profiler.EndSample(); }