All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
NavigationGraphDebuggingService.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Navigation.h"
7 #include "Rendering.h"
8 #include "Camera.h"
9 #include "NavigationGraphAddedCallback.h"
10 #include "NavigationGraphRemovalCallback.h"
11 #include "DebugNavigationGraphMesh.h"
12 #include "DebugRendering.h"
13 #include "Graphs.h"
14 
15 #include <vector>
16 
17 namespace Eegeo
18 {
19  namespace Resources
20  {
21  namespace Roads
22  {
23  namespace Navigation
24  {
26  {
27  public:
28  enum Mode
29  {
30  Disabled,
31  NavGraph,
32  TiledGraph,
33  MAX_MODES
34  };
35  private:
36 
37  struct GraphAndMetadata
38  {
39  const NavigationGraph* graph;
40  int previousNumConnections;
41  DebugNavigationGraphMesh* debugNavGraphMesh;
42  };
43 
44  DebugRendering::DebugRenderer& m_debugRenderer;
45  NavigationGraphRepository& m_navGraphRepo;
46 
47  Mode m_mode;
48  std::vector<GraphAndMetadata> m_graphs;
49 
51 
54 
55  void HandleNavGraphAdded(const NavigationGraph& navGraph);
56  void HandleNavGraphRemoved(const NavigationGraph& navGraph);
57  void BuildDebugNavigationGraphMeshVisualisation(GraphAndMetadata& graphAndMetadata, Eegeo::Rendering::GLState& glState);
58  void SetConfig(const DebugNavigationGraphMeshConfig& config) { m_config = config; }
59 
60  void DrawTiledGraph(const Rendering::RenderContext& renderContext, const Graphs::TiledGraphCell& tiledGraphCell, const NavigationGraph& navGraph);
61 
62  public:
64  DebugRendering::DebugRenderer& debugRenderer,
65  NavigationGraphRepository& navGraphRepo,
66  const DebugNavigationGraphMeshConfig& config);
67 
69 
70  void CycleMode();
71 
72  Mode GetMode() const { return m_mode; }
73 
74  void Draw(const Rendering::RenderContext& renderContext, Eegeo::Rendering::GLState& glState);
75  };
76  }
77  }
78  }
79 }