| 1123 | } |
| 1124 | |
| 1125 | void BuildNavigation(BuildRequest& request) |
| 1126 | { |
| 1127 | // If scene is not specified then build all loaded scenes |
| 1128 | if (!request.Scene) |
| 1129 | { |
| 1130 | for (Scene* scene : Level::Scenes) |
| 1131 | { |
| 1132 | request.Scene = scene; |
| 1133 | BuildNavigation(request); |
| 1134 | } |
| 1135 | return; |
| 1136 | } |
| 1137 | |
| 1138 | // Early out if scene is not using navigation |
| 1139 | if (request.Scene->Navigation.Volumes.IsEmpty()) |
| 1140 | { |
| 1141 | ClearNavigation(request.Scene); |
| 1142 | return; |
| 1143 | } |
| 1144 | |
| 1145 | // Check if similar request is already in a queue |
| 1146 | for (auto& e : NavBuildQueue) |
| 1147 | { |
| 1148 | if (e.Scene == request.Scene && (e.DirtyBounds == request.DirtyBounds || request.DirtyBounds == BoundingBox::Empty)) |
| 1149 | { |
| 1150 | e = request; |
| 1151 | return; |
| 1152 | } |
| 1153 | } |
| 1154 | |
| 1155 | // Enqueue request |
| 1156 | NavBuildQueue.Add(request); |
| 1157 | } |
| 1158 | |
| 1159 | void NavMeshBuilder::Update() |
| 1160 | { |
no test coverage detected