Grail (C++)  1.1.1
A multi-platform, modular, universal engine for embedding advanced AI in games.
DomainTranslator.hh
1 #ifndef GRAIL_DOMAIN_TRANSLATOR_H
2 #define GRAIL_DOMAIN_TRANSLATOR_H
3 
4 #include "IPlannerObject.hh"
5 #include "ObjectIndexBinding.hh"
6 #include "../GrailCore/Behavior.hh"
7 #include "../GrailCore/Plan.hh"
8 
9 namespace grail
10 {
11  namespace planning
12  {
13  class Goal;
14 
18  {
19  public:
23  DomainTranslator(bool isDomainReusable = true);
24  DomainTranslator(const DomainTranslator&) = default;
26 
27  virtual ~DomainTranslator() = default;
28 
29  DomainTranslator& operator =(const DomainTranslator&) = default;
30  DomainTranslator& operator =(DomainTranslator&&) = default;
31 
32  std::unique_ptr<WorldState> GetWorldState(AIEntity& entity, const class Goal& goal, MemoryPool* memory);
33 
36 
40  virtual Plan TranslatePlan(const AIEntity& entity,
41  const Planner::AbstractPlan& plan,
42  const Goal& goal) const = 0;
43 
44  protected:
47  virtual std::vector<IPlannerObject*> GeneratePlannerObjects(AIEntity& entity,
48  const Goal& goal,
49  MemoryPool* memory) = 0;
50 
52  virtual std::vector<WorldObjectType> CreateObjectTypes(const AIEntity& entity,
53  const Goal& goal,
54  MemoryPool* memory) = 0;
55 
58  virtual void AddActionTemplates(const AIEntity& entity,
59  const std::shared_ptr<Domain>& domain,
60  const Goal& goal) = 0;
61 
64  virtual void SetWorldStateParameters(const AIEntity& entity, WorldState& state, const Goal& goal) const;
65 
66  ObjectIndexBinding binding{};
67 
68  private:
69  bool isDomainReusable = false;
70  std::shared_ptr<Domain> domain = nullptr;
71  };
72  }
73 }
74 #endif //GRAIL_DOMAIN_TRANSLATOR_H
grail::planning::WorldState
A class representing planner world state.
Definition: WorldState.hh:14
grail::planning::DomainTranslator::GetObjectIndexBinding
const ObjectIndexBinding & GetObjectIndexBinding() const
Definition: DomainTranslator.cpp:37
grail::AIEntity
The AIEntity class - Defines a basic object which can execute behaviors.
Definition: AIEntity.hh:39
grail::planning::DomainTranslator::AddActionTemplates
virtual void AddActionTemplates(const AIEntity &entity, const std::shared_ptr< Domain > &domain, const Goal &goal)=0
grail::planning::DomainTranslator::SetWorldStateParameters
virtual void SetWorldStateParameters(const AIEntity &entity, WorldState &state, const Goal &goal) const
Definition: DomainTranslator.cpp:42
grail::planning::Planner::AbstractPlan
Definition: Planner.hh:43
grail::planning::DomainTranslator::DomainTranslator
DomainTranslator(bool isDomainReusable=true)
Definition: DomainTranslator.cpp:8
grail::planning::DomainTranslator::CreateObjectTypes
virtual std::vector< WorldObjectType > CreateObjectTypes(const AIEntity &entity, const Goal &goal, MemoryPool *memory)=0
grail::MemoryPool
The MemoryPool class - preallocated memory container for optimization issues.
Definition: MemoryPool.hh:73
grail::planning::DomainTranslator
Definition: DomainTranslator.hh:17
grail::planning::DomainTranslator::GeneratePlannerObjects
virtual std::vector< IPlannerObject * > GeneratePlannerObjects(AIEntity &entity, const Goal &goal, MemoryPool *memory)=0
grail::planning::DomainTranslator::TranslatePlan
virtual Plan TranslatePlan(const AIEntity &entity, const Planner::AbstractPlan &plan, const Goal &goal) const =0
grail::planning::Goal
Represents a planner goal, used by PlannerReasoner.
Definition: Goal.hh:14
grail::planning::ObjectIndexBinding
Definition: ObjectIndexBinding.hh:12
grail::planning::Plan
A data structure used by PlannerReasoner to execute a sequence of behaviors.
Definition: Plan.hh:14