BVB Source Codes

CRYENGINE Show GraphStructures.cpp Source code

Return Download CRYENGINE: download GraphStructures.cpp Source code - Download CRYENGINE Source code - Type:.cpp
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. #include "StdAfx.h"
  4. #include "GraphStructures.h"
  5.  
  6. std::vector<unsigned> GraphNode::freeIDs;
  7. #ifdef DEBUG_GRAPHNODE_IDS
  8. std::vector<unsigned> GraphNode::usedIds;
  9. #endif
  10. unsigned GraphNode::maxID = 0;
  11.  
  12. GraphNode::GraphNode(IAISystem::ENavigationType type, const Vec3& inpos, unsigned int _ID)
  13.         : navType(type), pos(inpos)
  14. {
  15.         firstLinkIndex = 0;
  16.         mark = 0;
  17.         nRefCount = 0;
  18.         if (_ID == 0)
  19.         {
  20.                 if (freeIDs.empty())
  21.                 {
  22.                         ID = maxID + 1;
  23.                 }
  24.                 else
  25.                 {
  26.                         ID = freeIDs.back();
  27.                         freeIDs.pop_back();
  28.                 }
  29.         }
  30.         else
  31.         {
  32.                 ID = _ID;
  33.                 stl::find_and_erase(freeIDs, ID);
  34.         }
  35.         if (ID > maxID)
  36.                 maxID = ID;
  37.  
  38. #ifdef DEBUG_GRAPHNODE_IDS
  39.         assert(!stl::find(usedIds, ID));
  40.         usedIds.push_back(ID);
  41. #endif
  42. }
  43.  
  44. GraphNode::~GraphNode()
  45. {
  46.         freeIDs.push_back(ID);
  47.  
  48. #ifdef DEBUG_GRAPHNODE_IDS
  49.         const bool bUsedIdRemoved = stl::find_and_erase(usedIds, ID);
  50.         assert(bUsedIdRemoved);
  51. #endif
  52. }
  53.  
  54. //====================================================================
  55. // Serialize
  56. //====================================================================
  57. void ObstacleData::Serialize(TSerialize ser)
  58. {
  59.         ser.Value("vPos", vPos);
  60.         ser.Value("vDir", vDir);
  61.         ser.Value("fApproxRadius", fApproxRadius);
  62.         ser.Value("flags", flags);
  63.         if (ser.IsReading())
  64.         {
  65.                 navNodes.clear();
  66.         }
  67. }
  68.  
  69. //===================================================================
  70. // SetNavNodes
  71. //===================================================================
  72. void ObstacleData::SetNavNodes(const std::vector<const GraphNode*>& nodes)
  73. {
  74.         navNodes = nodes;
  75. }
  76.  
  77. //===================================================================
  78. // AddNavNode
  79. //===================================================================
  80. void ObstacleData::AddNavNode(const GraphNode* pNode)
  81. {
  82.         navNodes.push_back(pNode);
  83. }
  84.  
  85. //===================================================================
  86. // GetNavNodes
  87. //===================================================================
  88. const std::vector<const GraphNode*>& ObstacleData::GetNavNodes() const
  89. {
  90.         return navNodes;
  91. }
  92.  
downloadGraphStructures.cpp Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top