Plasma Engine  2.0
Loading...
Searching...
No Matches
NavMeshWorldModule.h
1#pragma once
2
3#include <AiPlugin/AiPluginDLL.h>
4#include <AiPlugin/Navigation/Implementation/NavMeshGeneration.h>
5#include <Core/World/WorldModule.h>
6
7class plAiNavMesh;
8class dtNavMesh;
9
15class PL_AIPLUGIN_DLL plAiNavMeshWorldModule final : public plWorldModule
16{
17 PL_DECLARE_WORLD_MODULE();
18 PL_ADD_DYNAMIC_REFLECTION(plAiNavMeshWorldModule, plWorldModule);
19
20public:
23
24 virtual void Initialize() override;
25 virtual void Deinitialize() override;
26
27 plAiNavMesh* GetNavMesh(plStringView sName);
28 const plAiNavMesh* GetNavMesh(plStringView sName) const;
29
30 const dtQueryFilter& GetPathSearchFilter(plStringView sName) const;
31
32 const plAiNavigationConfig& GetConfig() const { return m_Config; }
33
34private:
35 void Update(const UpdateContext& ctxt);
36
37 plMap<plString, plAiNavMesh*> m_WorldNavMeshes;
38
39 // TODO: this is a hacky solution to delay the navmesh generation until after Physics has been set up.
40 plUInt32 m_uiUpdateDelay = 10;
41 plTaskGroupID m_GenerateSectorTaskID;
43
44 plAiNavigationConfig m_Config;
45
46 plMap<plString, dtQueryFilter> m_PathSearchFilters;
47};
48
49/* TODO:
50
51Navmesh Generation
52==================
53
54* fix navmesh on hills
55* collision group filtering
56* invalidate sectors, re-generate
57* Invalidate path searches after sector changes
58* sector usage tracking
59* unload unused sectors
60
61Path Search
62===========
63
64* callback for touched sectors
65* on-demand sector generation ???
66* use max edge-length + poly flags for 'dynamic' obstacles
67
68Steering
69========
70
71* movement with ineratia
72* decoupled position and rotation
73* avoid dynamic obstacles
74
75*/
A navmesh generated with a specific configuration.
Definition NavMesh.h:70
Definition NavMeshWorldModule.h:16
Definition Map.h:408
A Shared ptr manages a shared object and destroys that object when no one references it anymore....
Definition SharedPtr.h:10
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Given out by plTaskSystem::CreateTaskGroup to identify a task group.
Definition TaskSystemDeclarations.h:103
A world encapsulates a scene graph of game objects and various component managers and their component...
Definition World.h:22
Definition WorldModule.h:10
virtual void Initialize()
This method is called after the constructor. A derived type can override this method to do initializa...
Definition WorldModule.h:98
virtual void Deinitialize()
This method is called before the destructor. A derived type can override this method to do deinitiali...
Definition WorldModule.h:101
Definition NavigationConfig.h:44
Definition WorldModule.h:33