The general idea here is to tick any non time sliced generators once per frame. Time sliced generators we aim to tick one per frame and move to the next, next frame.
In the case where one time sliced generator doesn't use the whole time slice we move to the next time sliced generator. That generator will only be considered to have a full frames processing if either it runs out of work or uses a large % of the time slice. Depending we either tick it again next frame or go to the next time sliced generator (next frame).
[at]Yoan.StAmant Aris [at]Aris.Theophanidis
#ROBOMERGE-SOURCE: CL 11628387 via CL 11628394
#ROBOMERGE-BOT: (v656-11643781)
[CL 11805238 by stephen holmes in Main branch]
+ added advanced property "DirtyAreaWarningSizeThreshold" in NavigationSystem to report warning logs when tiles larger than the specified threshold are pushed to the dirty queue.
+ error reporting is disabled as long as navigation lock is effective
+ centralized area validations and error reporting inside method FNavigationDirtyAreasController::AddArea and added new optional parameter to retrieve source object
[at]aris.theophanidis [at]maxime.mercier
#ROBOMERGE-SOURCE: CL 11587708 via CL 11587713 via CL 11588090
#ROBOMERGE-BOT: (v654-11333218)
[CL 11592197 by yoan stamant in Main branch]
The motivation is to provide a minimum of feedback when failing to register navigation data (ex: if navmesh settings do not fit the project navmesh settings) .
[REVIEW] [at]Yoan.StAmant [at]Mieszko.Zielinski
#ROBOMERGE-SOURCE: CL 11071719 via CL 11071722 via CL 11071725
#ROBOMERGE-BOT: (v637-11041722)
[CL 11071729 by aris theophanidis in Main branch]
#rnx
#rb none
#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870549 by ryan durand in Main branch]
#ROBOMERGE-OWNER: matt.kuhlenschmidt
#ROBOMERGE-AUTHOR: matt.kuhlenschmidt
#ROBOMERGE-SOURCE: CL 9870262 via CL 9870265
#ROBOMERGE-BOT: (v548-9842178)
#rb chris.gagnon
[CL 9872761 by Matt Kuhlenschmidt in Main branch]
As part of the change I've also disabled climb link generation on Athena walls (still enabled in non-Athena games).
#rb Yoan.StAmant, Guillaume.Guay
#rnx
[at]Yoan.StAmant, [at]Stephen.Holmes
#ROBOMERGE-SOURCE: CL 9410194 via CL 9410196 via CL 9410200 via CL 9410201 via CL 9410206
#ROBOMERGE-BOT: (v456-9359915)
[CL 9410207 by mieszko zielinski in Main branch]
#rb none
[at]Yoan.StAmant, [at]Stephen.Holmes, [at]Mikko.Mononen
#ROBOMERGE-SOURCE: CL 9038081 via CL 9043888 via CL 9044090
#ROBOMERGE-BOT: (v443-9013191)
[CL 9047383 by mieszko zielinski in Main branch]
While modifying NavigationSystemV1 I've extended IsNavigationBuildingLocked with a parameter allowing more precise queries.
#rb Yoan.StAmant, Mikko.Mononen
[at]Yoan.StAmant, [at]Stephen.Holmes, [at]Mikko.Mononen
#ROBOMERGE-SOURCE: CL 8886708 via CL 8886728 via CL 8889423
#ROBOMERGE-BOT: (v427-8887818)
[CL 8889507 by mieszko zielinski in Main branch]
This approach allowed for easy NavigationSystem's config update with NavSystemConfigOverride's properties. NavSystemConfigOverride can now specify if it wants to fully override the pre-existing nav sys instance or if it just wants to append new information (like supported agents) to the existing navigation system instance. There's also an option to do nothing if there's already a navigation system present.
This CL rolls-back a bunch of temp fixes done in past couple of days.
#rb Yoan.StAmant
Yoan.StAmant
#ROBOMERGE-OWNER: mieszko.zielinski
#ROBOMERGE-AUTHOR: mieszko.zielinski
#ROBOMERGE-SOURCE: CL 8187661 via CL 8193395 via CL 8207613
#ROBOMERGE-BOT: (v401-8057353)
[CL 8207758 by mieszko zielinski in Main branch]
#rb mieszko.zielinski, yoan.stamant
#ROBOMERGE-SOURCE: CL 7935910 via CL 7939385
#ROBOMERGE-BOT: (v391-7919777)
[CL 7939549 by guillaume guay in Main branch]
- Added a call to ConditionalPopulateNavOctree to fix navigation not being regenerated when adding a level with some navigation data to a current world that didn't have one.
- Renamed boolean to better names
- MarkPendingKill the navigation instance when no compatible nav bound for it in the navigation system insead of in the nav mesh generator (except for the abstract nav data)
#rnx
#cr maxime.mercier
Merging manually CL 7842753 using //Release-10.30 to //Main
#ROBOMERGE-SOURCE: CL 7881604 via CL 7914626
#ROBOMERGE-BOT: (v389-7813075)
[CL 7914819 by guillaume guay in Main branch]
- Added navigation system config 'bGenerateNavDataWhenNoCompatibleNavBound". When set to TRUE (default) it will still generate navigation data if any NavBoundVolume is compatible with its NavDataConfig, if false it gets rid of that navigation data;
- Make sure that when "bSpawnNavDataInNavBoundsLevel" is TRUE, it builds the navigation data in the first level containing a NavBoundVolume that actually supports this navigation data config (not any first one);
- Added virtual method on NavigateSystem "OnNavSystemOverriden" to give a chance to inspect previous NavigationSystem when getting overriden by a nav config override;
- Added some missing NavigationSystem clean up logic.
#tests client/server standalone Creative AI, Phoebe and regular + editor
#cr maxime.mercier
[FYI] mieszko.zielinski, stephen.holmes, yoan.stamant
#ROBOMERGE-OWNER: guillaume.guay
#ROBOMERGE-AUTHOR: guillaume.guay
#ROBOMERGE-SOURCE: CL 7679442 via CL 7679443 via CL 7688466
#ROBOMERGE-BOT: (v383-7686620)
[CL 7688470 by guillaume guay in Main branch]
#rnx
[at]maxime.mercier
#rb guillaume.guay
#ROBOMERGE-SOURCE: CL 7289773 via CL 7306493
#ROBOMERGE-BOT: (v370-7290619)
[CL 7306546 by yoan stamant in Main branch]
Notable changes:
- Added FNavigationOctreeController that wraps up what used to be NavigationSystemV1's navoctree-related logic
- Added FNavigationDirtyAreasController that wraps up what used to be NavigationSystemV1's DirtyAreas-related logic
- Added FNavigationDataHandler that is a helper struct that wraps up what used to be NavigationSystemV1's logic related to operation involving both navoctree and dirty areas
- Deprecated both FNavDataConfig.NavigationDataClass and FNavDataConfig.NavigationDataClassName and replaced them with a single NavDataClass property
- FNavigationOctree is not responsible for hashing element objects and storing their ElementId
- NavOctree elements how know about the octree they belong to (via a member property).
[at]Yoan.StAmant, [at]Maxime.Mercier, [at]Guillaume.Guay
#rb Yoan.StAmant
#ROBOMERGE-OWNER: mieszko.zielinski
#ROBOMERGE-AUTHOR: mieszko.zielinski
#ROBOMERGE-SOURCE: CL 7249089 via CL 7262555
#ROBOMERGE-BOT: (v369-7254125)
[CL 7262559 by mieszko zielinski in Main branch]
[at]Yoan.StAmant
#rb Yoan.StAmant
#ROBOMERGE-SOURCE: CL 7090744 via CL 7104302
#ROBOMERGE-BOT: (v367-6836689)
[CL 7104406 by mieszko zielinski in Main branch]
It wasn't virtual pre-4.23 and was added to accomodate on of the internal project's requirements. I've refactored the project-specific code to not need it.
This change is required in support of the soon-to-come navigation system refactor/extension.
#jira none
#review-6618928 @Yoan.StAmant
#rb Yoan.StAmant
[CL 6628443 by Mieszko Zielinski in Dev-Framework branch]
Removed UNavigationSystemV1::ConditionalPopulateNavOctreeActor has been added to allow one of the internal project filter out some actors being added to nav octree. I'm removing this function before it ships with 4.23. I've replaced the function with UNavigationSystemV1::AddLevelToOctree that gets called in the same circumstances but a bit "higher level" - it's operating on the whole ULevel rather than individual actors, which ends up being more efficient.
#rb none
#jira none
[CL 6604304 by Mieszko Zielinski in Dev-Framework branch]