#include "gwnavruntime/math/vec3f.h"
#include "gwnavruntime/basesystem/logger.h"
#include "gwnavruntime/containers/kyarray.h"
#include "gwnavruntime/database/navtag.h"
Classes | |
class | Kaim::LogicDoNotUseCanEnterNavTag |
Tag type used for function overloading in templates. It will be set as a nested typedef in CustomTraverseLogic::CanEnterNavTagMode. More... | |
class | Kaim::LogicDoUseCanEnterNavTag |
Tag type used for function overloading in templates. It will be set as a nested typedef in CustomTraverseLogic::CanEnterNavTagMode. More... | |
class | Kaim::LogicWithNoCustomCost |
Tag type used for function overloading in templates. More... | |
class | Kaim::LogicWithCostPerNavTag |
Tag type used for function overloading in templates. More... | |
class | Kaim::LogicWithCostPerTriangle |
Tag type used for function overloading in templates. More... | |
class | Kaim::SimpleTraverseLogic< TCanEnterNavTagMode > |
SimpleTraverseLogic defines the functions called when the customization is simply: navTag is allowed or forbidden. More... | |
class | Kaim::DefaultTraverseLogic |
SimpleTraverseLogic with TCanEnterNavTagMode = LogicDoNotUseCanEnterNavTag. More... | |
class | Kaim::TraverseLogicWithCostPerNavTag< TCanEnterNavTagMode > |
TraverseLogicWithCostPerNavTag defines the functions called when cost customization is per NavTag. More... | |
class | Kaim::TraverseLogicWithCostPerTriangle< TCanEnterNavTagMode > |
TraverseLogicWithCostPerTriangle defines the functions called when cost customization is per primitive i.e. More... | |
Namespaces | |
Kaim | |
The Autodesk Navigation namespace. | |
Macros | |
#define | KY_TRAVERSE_LOGIC(className_, costMode_, canEnterMode_) |
A TraverseLogic is a full static class that implements some functions and typedef used to customize the Navigation traversals. More... | |
#define KY_TRAVERSE_LOGIC | ( | className_, | |
costMode_, | |||
canEnterMode_ | |||
) |
A TraverseLogic is a full static class that implements some functions and typedef used to customize the Navigation traversals.
TraverseLogic is passed as template arguments to many queries. Most relevant example are: AStarQuery<TraverseLogic> and RayCastQuery<TraverseLogic>. TraverseLogic is typically set thanks to NavigationProfile<TraverseLogic>.
You can create your own TraverseLogic by deriving it from one the three TraverseLogic base classes: SimpleTraverseLogic, TraverseLogicWithCostPerNavTag, TraverseLogicWithCostPerTriangle.
These TraverseLogic base classes allow to generate optimal code. The template interface is different depending on which logic you derive from. In your derivation, you can overwrite all or only some of the functions present in the base TraverseLogic.
Each of the three base TraverseLogic must be templated by LogicDoNotUseCanEnterNavTag or LogicDoUseCanEnterNavTag. This template parameter tells whether a CanEnterNavTag() function needs to be called to forbid passing from one navTag to another (for instance, at an entrance of a 1-way corridor). Note that is you use LogicDoUseCanEnterNavTag, you have also to implement the CanEnterNavTag() function
Helper macro to implement custom TraverseLogic. This defines nested types: BaseClass, CostMultiplier, CanEnterNavTagMode. If you inherit from of the 3 base TraverseLogics (SimpleTraverseLogic, TraverseLogicWithCostPerNavTag, TraverseLogicWithCostPerTriangle) then you can ignore KY_TRAVERSE_LOGIC.