gwnavruntime/navmesh/traverselogic.h File Reference

traverselogic.h File Reference

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...
 

Macro Definition Documentation

#define KY_TRAVERSE_LOGIC (   className_,
  costMode_,
  canEnterMode_ 
)
Value:
private: \
className_(); \
typedef className_<canEnterMode_> BaseClass; \
public: \
typedef costMode_ CostMultiplierUsage; \
typedef canEnterMode_ CanEnterNavTagMode; \ private:
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:196

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.

Go to the source code of this file.