MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / BuildTileAsync

Function BuildTileAsync

Source/Engine/Navigation/NavMeshBuilder.cpp:866–901  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

864}
865
866void BuildTileAsync(NavMesh* navMesh, const int32 x, const int32 y, const rcConfig& config, const BoundingBox& tileBoundsNavMesh, const Matrix& worldToNavMesh, float tileSize)
867{
868 PROFILE_CPU();
869 NavMeshRuntime* runtime = navMesh->GetRuntime();
870 NavBuildTasksLocker.Lock();
871
872 // Skip if this tile is already during cooking
873 for (int32 i = 0; i < NavBuildTasks.Count(); i++)
874 {
875 const auto task = NavBuildTasks.Get()[i];
876 if (task->GetState() == TaskState::Queued && task->X == x && task->Y == y && task->Runtime == runtime)
877 {
878 NavBuildTasksLocker.Unlock();
879 return;
880 }
881 }
882
883 // Create task
884 auto task = New<NavMeshTileBuildTask>();
885 task->Scene = navMesh->GetScene();
886 task->NavMesh = navMesh;
887 task->Runtime = runtime;
888 task->X = x;
889 task->Y = y;
890 task->TileBoundsNavMesh = tileBoundsNavMesh;
891 task->WorldToNavMesh = worldToNavMesh;
892 task->TileSize = tileSize;
893 task->Config = config;
894 NavBuildTasks.Add(task);
895 NavBuildTasksMaxCount++;
896
897 NavBuildTasksLocker.Unlock();
898
899 // Invoke job
900 task->Start();
901}
902
903void BuildDirtyBounds(Scene* scene, NavMesh* navMesh, const BoundingBox& dirtyBounds, bool rebuild)
904{

Callers 1

BuildDirtyBoundsFunction · 0.85

Calls 9

GetRuntimeMethod · 0.80
LockMethod · 0.80
UnlockMethod · 0.80
GetSceneMethod · 0.80
CountMethod · 0.45
GetMethod · 0.45
GetStateMethod · 0.45
AddMethod · 0.45
StartMethod · 0.45

Tested by

no test coverage detected