Conscience Core
CscEntityReflexions.h
Go to the documentation of this file.
1 #ifndef CscEntityReflexions_h
2 #define CscEntityReflexions_h
3 
5 #include "CscCommon.h"
6 #include "CscEntityReflexion.h"
8 
10 using namespace conscience_utils;
11 
12 namespace conscience_core::ai {
13 
15 public:
16  const string entitySerialNumber;
17  const string entityModelId;
18  CscEntityReflexionStartedEvent(const string &serialNumber, const string &modelId);
19 };
20 
22 public:
23  const string entitySerialNumber;
24  CscEntityReflexionStoppedEvent(const string &serialNumber);
25 };
26 
28 private:
30 
31  map<string, ptr<CscEntityReflexion>> entitiesBySerialNumber;
32  inline static ptr<CscEntityReflexions> instance = nullptr;
33 
34  unique_ptr<CscLogger> logger = CscLogger::getForCategory("CscEntityReflexions");
35 
36 public:
37  virtual ~CscEntityReflexions() {}
38 
42  ptr<CscEntityReflexion> startNewEntityReflexion(
45 
46  void stopAndRelease(ptr<CscEntityReflexion> entityReflexion);
47 
48  static ptr<CscEntityReflexions> getInstance();
49 
53  vector<string> getSerialNumbers() const {
54  return mapKeys(entitiesBySerialNumber);
55  }
56 
60  vector<ptr<CscEntityReflexion>> getAllReflexions() const {
61  return mapValues(entitiesBySerialNumber);
62  }
63 
64  virtual ptr<CscEntityReflexion> getBySerialNumber(const string &serialNumber) const;
65 
67  static std::atomic<int> counter{0}; // multi-thread friendly
68  return to_string(counter.fetch_add(1));
69  }
70 
71 };
72 
73 }
74 
75 #endif
nlohmann::to_string
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
Definition: json.hpp:26470
conscience_utils::mapValues
vector< TValue > mapValues(const map< TKey, TValue > &theMap)
Definition: conscience_util.h:466
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::ai
Definition: alerts.cpp:12
CscCoreEvents.h
conscience_core::ai::CscEntityReflexions
Definition: CscEntityReflexions.h:27
CscEntityReflexion.h
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
conscience_core::core_objects::events
Definition: CscCoreEvents.cpp:14
conscience_core::ai::CscEntityReflexions::getAllReflexions
vector< ptr< CscEntityReflexion > > getAllReflexions() const
Definition: CscEntityReflexions.h:60
conscience_core::core_objects::events::CscCoreEvent
Definition: CscCoreEvents.h:23
conscience_core::ai::CscEntityReflexions::getSerialNumbers
vector< string > getSerialNumbers() const
Definition: CscEntityReflexions.h:53
conscience_core::ai::CscEntityReflexions::~CscEntityReflexions
virtual ~CscEntityReflexions()
Definition: CscEntityReflexions.h:37
conscience_utils::mapKeys
vector< TKey > mapKeys(const map< TKey, TValue > &theMap)
Definition: conscience_util.h:437
CscCommon.h
conscience_core::ai::CscEntityReflexions::getNextAvailableSimulatedEntitySerialNumber
static string getNextAvailableSimulatedEntitySerialNumber()
Definition: CscEntityReflexions.h:66
conscience_core::ai::CscEntityReflexionStoppedEvent
Definition: CscEntityReflexions.h:21
conscience_core::bridging::commands::globalEnvironmentSimulator
CscEnvironmentSimulator * globalEnvironmentSimulator
Definition: CscCommandsProcessor.cpp:34
conscience_server::entities::instance
ServerEntities * instance
Definition: ServerEntities.cpp:39
conscience_utils
Definition: CscEntityReflexion.h:50
conscience_core::ai::CscEntityReflexionStartedEvent::entityModelId
const string entityModelId
Definition: CscEntityReflexions.h:17
CscEnvironmentSimulator.h
CscEnvironmentSimulator
Definition: CscEnvironmentSimulator.h:31
conscience_core::ai::CscEntityReflexionStartedEvent
Definition: CscEntityReflexions.h:14
conscience_core::ai::CscEntityReflexionStoppedEvent::entitySerialNumber
const string entitySerialNumber
Definition: CscEntityReflexions.h:23
conscience_core::ai::CscEntityReflexionStartedEvent::entitySerialNumber
const string entitySerialNumber
Definition: CscEntityReflexions.h:16
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29