gwnavgamekit/gamekittraverselogic.h Source File

gamekittraverselogic.h
Go to the documentation of this file.
1 /*
2 * Copyright 2016 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 
8 
9 #pragma once
10 
13 
14 namespace Kaim
15 {
16 
17 class GameKitWorld;
18 class GameKitNavTagLayerCostTable;
19 class GameKitSmartObjectCostTable;
20 class GameKitCrowdDispersionTraverseLogicData;
21 
22 
23 
24 class GameKitTraverseLogicData : public RefCountBase<GameKitTraverseLogicData, MemStat_GameKit>
25 {
26 
27 public:
29  GameKitTraverseLogicData();
30  ~GameKitTraverseLogicData();
31 
32  void SetLayerCostTable(Ptr<GameKitNavTagLayerCostTable> layerCostTable);
33  Ptr<GameKitNavTagLayerCostTable> GetLayerCostTable();
34 
35  void SetSmartObjectCostTable(Ptr<GameKitSmartObjectCostTable> smartObjectCostTable);
36  Ptr<GameKitSmartObjectCostTable> GetSmartObjectCostTable();
37 
38  // ------------ CrowdDispersion -------------
39 
43  void EnableCrowdDispersion(Ptr<GameKitCrowdDispersionNavTagHashMap> crowdDispersionNavTagHashMap,
44  KyFloat32 checkForAlternativePathDistance = 20.f, KyFloat32 stickToChoiceDistance = 1.f);
45 
46  GameKitCrowdDispersionTraverseLogicData* GetCrowdDispersionData() const { return m_crowdDispersionData; }
47 
48 public: //internal
49  // ------------ Used by GameKitTraverseLogic -------------
50 
51  bool CanTraverseLayer(KyUInt32 layerID, KyFloat32* costMultiplier) const;
52  bool CanTraverseSmartObject(KyUInt32 smartObjectID, KyFloat32* costMultiplier) const;
53 
54 
55 private:
56  // SmartObjects traversability
57  Ptr<GameKitSmartObjectCostTable> m_smartObjectCostTable;
58 
59  // NavTag Layers traversability
60  Ptr<GameKitNavTagLayerCostTable> m_layerCostTable;
61 
62  // CrowdDispersion
63  Ptr<GameKitCrowdDispersionTraverseLogicData> m_crowdDispersionData;
64 };
65 
67 class GameKitTraverseLogic : public TraverseLogicWithCostPerNavTag<LogicDoNotUseCanEnterNavTag>
68 {
69 public:
70  static KyFloat32 GetHeuristicFromDistanceToDest(void* traverseLogicUserData, KyFloat32 distance3DToDestination);
71  static bool CanTraverseNavTag(void* traverseLogicUserData, const NavTag& navTag, KyFloat32* costMultiplier);
72 };
73 
74 
75 }
76 
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
TraverseLogicWithCostPerNavTag defines the functions called when cost customization is per NavTag...
Definition: traverselogic.h:95
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
Custom traverse logic to manage NavTag Layers and SmartObjects.
Definition: gamekittraverselogic.h:67
float KyFloat32
float
Definition: types.h:32