public void Execute(ArchetypeChunk batchInChunk, int batchIndex) { na_netNodesBestDistance2Node = new NativeArray <float> (na_netNodes.Length, Allocator.Temp, NativeArrayOptions.UninitializedMemory); na_isNetNodesAlreadyVisited = new NativeArray <bool> (na_netNodes.Length, Allocator.Temp, NativeArrayOptions.UninitializedMemory); na_previouslyVisitedByNodeIndex = new NativeArray <int> (na_netNodes.Length, Allocator.Temp, NativeArrayOptions.UninitializedMemory); // Path finding will alternate between last visited buffer, to find next linked nodes. na_lastVisitedPathNodesA = new NativeArray <LastVisitedPathNodes> (na_netNodes.Length, Allocator.Temp, NativeArrayOptions.UninitializedMemory); na_lastVisitedPathNodesB = new NativeArray <LastVisitedPathNodes> (na_netNodes.Length, Allocator.Temp, NativeArrayOptions.UninitializedMemory); na_pathPlanners = batchInChunk.GetNativeArray(pathPlannersHandle); BufferAccessor <PathNodesBuffer> pathNodesBuffer = batchInChunk.GetBufferAccessor <PathNodesBuffer> (pathNodesBufferHandle); for (int i = 0; i < na_pathPlanners.Length; i++) { PathPlannerComponent pathPlanner = na_pathPlanners [i]; DynamicBuffer <PathNodesBuffer> a_pathNodes = pathNodesBuffer [i]; a_pathNodes.ResizeUninitialized(0); _EagerDijkstra_BestPath(ref pathPlanner, ref a_pathNodes, ref na_netNodesBestDistance2Node, ref na_isNetNodesAlreadyVisited, ref na_previouslyVisitedByNodeIndex, ref na_lastVisitedPathNodesA, ref na_lastVisitedPathNodesB, in nhm_entityIndex, in na_netNodes, in pathNodeLinksBuffer, in a_pathNodesPosition); } }
static private void _EagerDijkstra_BestPath(ref PathPlannerComponent pathPlanner, ref DynamicBuffer <PathNodesBuffer> a_pathNodes, ref NativeArray <float> na_netNodesBestDistance2Node, ref NativeArray <bool> na_isNetNodesAlreadyVisited, ref NativeArray <int> na_previouslyVisitedByNodeIndex, ref NativeArray <LastVisitedPathNodes> na_lastVisitedPathNodesA, ref NativeArray <LastVisitedPathNodes> na_lastVisitedPathNodesB, in NativeHashMap <Entity, int> nhm_entityIndex, in NativeArray <Entity> na_netNodes, in BufferFromEntity <PathNodeLinksBuffer> pathNodeLinksBuffer, in ComponentDataFromEntity <Translation> a_pathNodesPosition)