Grail (C++)  1.3.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
GrailStateSnapshotGenerator.h
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_STATE_SNAPSHOT_GENERATOR_H
4 #define GRAIL_STATE_SNAPSHOT_GENERATOR_H
5 
6 #include "SnapshotGenerator.h"
7 #include "../AIManager.hh"
8 #include "../../GrailData/DebugInfo/GrailStateSnapshot.h"
9 
10 #include <set>
11 
12 namespace grail
13 {
14  class GrailStateSnapshotGenerator : public SnapshotGenerator<data::GrailStateSnapshot>
15  {
16  public:
18  virtual ~GrailStateSnapshotGenerator() override = default;
19 
20  void AddNewTagToNextSnapshot(const std::string& tag);
21  virtual void Release() override;
22  protected:
23  virtual bool TryProduceSnapshot(data::GrailStateSnapshot& outSnapshot) override;
24  virtual void PassSnapshotToReceiver(IDebugSnapshotReceiver& receiver, data::GrailStateSnapshot& snapshot) override;
25 
26  private:
27  std::vector<data::EntityState> GetEntityStates() const;
28  std::vector<data::EntityGroupData> GetEntityGroupData() const;
29  std::vector<data::BlackboardState> GetSharedBlackboardStates() const;
30 
31  std::set<std::string> tagsForNextSnapshot{};
32  const AIManager& aiManager;
33  };
34 }
35 
36 #endif
grail::AIManager
The AIManager class - Manages registered entities and shared blackboards.
Definition: AIManager.hh:32
grail::GrailStateSnapshotGenerator
Definition: GrailStateSnapshotGenerator.h:14
grail::SnapshotGenerator
Definition: SnapshotGenerator.h:16
grail::IDebugSnapshotReceiver
Definition: IDebugSnapshotReceiver.h:16
grail::data::GrailStateSnapshot
Definition: GrailStateSnapshot.h:18