gwnavruntime/database/idatabasechangebroadcaster.h Source File

idatabasechangebroadcaster.h
Go to the documentation of this file.
1 /*
2 * Copyright 2015 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 // primary contact: JUBA - secondary contact: LAPA
9 
10 #ifndef Navigation_INavdataChangeInDatabaseObserver_H
11 #define Navigation_INavdataChangeInDatabaseObserver_H
12 
17 
18 namespace Kaim
19 {
20 
21 class Database;
22 class NavData;
23 
24 class ChangeInDatabaseDesc
25 {
26  KY_DEFINE_NEW_DELETE_OPERATORS(MemStat_WorldFwk)
27 public:
28  enum ChangeType { NavDataAddAndRemove, DynamicNavMeshUpdate };
29 
30  ChangeType m_type;
31  const TrackedCollection<Ptr<NavData>, MemStat_WorldFwk>* m_navDataBeeingAdded;
32  const TrackedCollection<Ptr<NavData>, MemStat_WorldFwk>* m_navDataToBeRemoved;
33  CellBox m_currentUpdateCellBox;
34 
35 public: // internal
36  // ctor for dynamicNavMesh update notification
37  ChangeInDatabaseDesc(const CellBox& currentUpdateCellBox);
38  // ctor for navData add/remove
39  ChangeInDatabaseDesc(const CellBox& currentUpdateCellBox, const TrackedCollection<Ptr<NavData>, MemStat_WorldFwk>& navDataBeeingAdded,
40  const TrackedCollection<Ptr<NavData>, MemStat_WorldFwk>& navDataToBeRemoved);
41 };
42 
43 
44 
45 class IDatabaseChangeBroadcaster : public RefCountBase<IDatabaseChangeBroadcaster, Stat_Default_Mem>
46 {
47  KY_DEFINE_NEW_DELETE_OPERATORS(MemStat_WorldFwk)
48  KY_CLASS_WITHOUT_COPY(IDatabaseChangeBroadcaster)
49 public:
50  IDatabaseChangeBroadcaster(Database* database = KY_NULL) : m_database(database) {}
51  void SetDatabase(Database* database) { m_database = database; }
52  virtual void BroadCastChangeInDatabase(ChangeInDatabaseDesc& changeInDatabaseDesc) = 0;
53 public:
54  Database* m_database;
55 };
56 
57 
58 
59 class DefaultDatabaseChangeBroadcaster : public IDatabaseChangeBroadcaster
60 {
61 public:
62  DefaultDatabaseChangeBroadcaster(Database* database) : IDatabaseChangeBroadcaster(database) {}
63  virtual void BroadCastChangeInDatabase(ChangeInDatabaseDesc& changeInDatabaseDesc);
64 
65 protected:
66  bool DoesOnlyContainVertexNavGraph(const TrackedCollection<Ptr<NavData>, MemStat_WorldFwk>* navDataCollection);
67 };
68 
69 
70 
71 KY_INLINE ChangeInDatabaseDesc::ChangeInDatabaseDesc(const CellBox& currentUpdateCellBox) :
72 m_type(DynamicNavMeshUpdate), m_navDataBeeingAdded(KY_NULL), m_navDataToBeRemoved(KY_NULL), m_currentUpdateCellBox(currentUpdateCellBox) {}
73 
74 KY_INLINE ChangeInDatabaseDesc::ChangeInDatabaseDesc(const CellBox& currentUpdateCellBox, const TrackedCollection<Ptr<NavData>, MemStat_WorldFwk>& navDataBeeingAdded,
75  const TrackedCollection<Ptr<NavData>, MemStat_WorldFwk>& navDataToBeRemoved) :
76  m_type(NavDataAddAndRemove), m_navDataBeeingAdded(&navDataBeeingAdded), m_navDataToBeRemoved(&navDataToBeRemoved), m_currentUpdateCellBox(currentUpdateCellBox) {}
77 
78 } // namespace Kaim
79 
80 #endif // Navigation_Database_H
Box2i CellBox
A type that represents a bounding box around cells in a 2D grid.
Definition: navmeshtypes.h:34
#define KY_NULL
Null value.
Definition: types.h:247
#define KY_CLASS_WITHOUT_COPY(ClassName)
Define to forbid copy constructor and copy assignment.
Definition: types.h:387
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137