Grail (C++)  1.3.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
DomainTranslator.hh
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_DOMAIN_TRANSLATOR_H
4 #define GRAIL_DOMAIN_TRANSLATOR_H
5 
6 #include "IPlannerObject.hh"
7 #include "ObjectIndexBinding.hh"
8 #include "../GrailCore/Behavior.hh"
9 #include "../GrailCore/Plan.hh"
10 
11 namespace grail
12 {
13 namespace planner
14 {
15  class Goal;
16 
20  {
21  public:
25  DomainTranslator(bool isDomainReusable = true);
26  DomainTranslator(const DomainTranslator&) = default;
28 
29  virtual ~DomainTranslator() = default;
30 
31  DomainTranslator& operator =(const DomainTranslator&) = default;
32  DomainTranslator& operator =(DomainTranslator&&) = default;
33 
34  std::unique_ptr<WorldState> GetWorldState(AIEntity& entity, const class Goal& goal, MemoryPool* memory);
35 
38 
42  virtual Plan TranslatePlan(const AIEntity& entity,
43  const Planner::AbstractPlan& plan,
44  const Goal& goal) const = 0;
45 
46  protected:
49  virtual std::vector<IPlannerObject*> GeneratePlannerObjects(AIEntity& entity,
50  const Goal& goal,
51  MemoryPool* memory) = 0;
52 
54  virtual std::vector<WorldObjectType> CreateObjectTypes(const AIEntity& entity,
55  const Goal& goal,
56  MemoryPool* memory) = 0;
57 
60  virtual void AddActionTemplates(const AIEntity& entity,
61  const std::shared_ptr<Domain>& domain,
62  const Goal& goal) = 0;
63 
66  virtual void SetWorldStateParameters(const AIEntity& entity, WorldState& state, const Goal& goal) const;
67 
68  ObjectIndexBinding binding{};
69 
70  private:
71  bool isDomainReusable = false;
72  std::shared_ptr<Domain> domain = nullptr;
73  };
74 }
75 }
76 
77 #endif //GRAIL_DOMAIN_TRANSLATOR_H
grail::AIEntity
The AIEntity class - Defines a basic object which can execute behaviors.
Definition: AIEntity.hh:50
grail::planner::Planner::AbstractPlan
Definition: Planner.hh:45
grail::planner::WorldState
A class representing planner world state.
Definition: WorldState.hh:16
grail::planner::DomainTranslator
Definition: DomainTranslator.hh:19
grail::planner::DomainTranslator::TranslatePlan
virtual Plan TranslatePlan(const AIEntity &entity, const Planner::AbstractPlan &plan, const Goal &goal) const =0
grail::planner::DomainTranslator::GeneratePlannerObjects
virtual std::vector< IPlannerObject * > GeneratePlannerObjects(AIEntity &entity, const Goal &goal, MemoryPool *memory)=0
grail::planner::MemoryPool
The MemoryPool class - preallocated memory container for optimization issues.
Definition: MemoryPool.hh:77
grail::planner::ObjectIndexBinding
Definition: ObjectIndexBinding.hh:14
grail::Plan
A data structure used by PlannerReasoner to execute a sequence of behaviors.
Definition: Plan.hh:14
grail::planner::DomainTranslator::GetObjectIndexBinding
const ObjectIndexBinding & GetObjectIndexBinding() const
Definition: DomainTranslator.cpp:39
grail::planner::DomainTranslator::DomainTranslator
DomainTranslator(bool isDomainReusable=true)
Definition: DomainTranslator.cpp:10
grail::planner::Goal
Represents a planner goal, used by PlannerReasoner.
Definition: Goal.hh:16
grail::planner::DomainTranslator::CreateObjectTypes
virtual std::vector< WorldObjectType > CreateObjectTypes(const AIEntity &entity, const Goal &goal, MemoryPool *memory)=0
grail::planner::DomainTranslator::AddActionTemplates
virtual void AddActionTemplates(const AIEntity &entity, const std::shared_ptr< Domain > &domain, const Goal &goal)=0
grail::planner::DomainTranslator::SetWorldStateParameters
virtual void SetWorldStateParameters(const AIEntity &entity, WorldState &state, const Goal &goal) const
Definition: DomainTranslator.cpp:44