*/
// INTERNAL INCLUDES
-#include <dali-scene3d/public-api/api.h>
#include <dali-scene3d/public-api/algorithm/navigation-mesh.h>
#include <dali-scene3d/public-api/algorithm/path-finder-waypoint.h>
+#include <dali-scene3d/public-api/api.h>
namespace Dali::Scene3D::Algorithm
{
-
using WayPointList = std::vector<Scene3D::Algorithm::WayPoint>;
/**
*/
enum class PathFinderAlgorithm
{
- DJIKSTRA_SHORTEST_PATH, ///< Using A* variant (Djikstra) finding a shortest path
- DEFAULT = DJIKSTRA_SHORTEST_PATH, ///< Default algorithm to use
+ DIJKSTRA_SHORTEST_PATH, ///< Using A* variant (Dijkstra) finding a shortest path
+ SPFA, ///< Using SPFA-SLF (Shortest Path Fast Algorithm with Short Label First) finding a shortest path.
+ SPFA_DOUBLE_WAY, ///< Using SPFA-SLF double way. It might not find shortest, but will use less memory.
+
+ DEFAULT = DIJKSTRA_SHORTEST_PATH, ///< Default algorithm to use
};
/**
class DALI_SCENE3D_API PathFinderBase
{
public:
-
/**
* @brief Destructor
*/
* @param[in] polyIndexTo Index of end polygon
* @return List of waypoints for path or empty vector if no success
*/
- virtual WayPointList FindPath(uint32_t polyIndexFrom, uint32_t polyIndexTo) = 0;
+ virtual WayPointList FindPath(FaceIndex polyIndexFrom, FaceIndex polyIndexTo) = 0;
};
/**
class DALI_SCENE3D_API PathFinder
{
public:
-
/**
* @brief Creates new instance of path finder
* @param[in] navigationMesh Navigation mesh to associate with
* @param[in] algorithm algorithm to use
* @return Valid pointer to PathFinder object or nullptr
*/
- static std::unique_ptr<PathFinder> New( NavigationMesh& navigationMesh, PathFinderAlgorithm algorithm );
+ static std::unique_ptr<PathFinder> New(NavigationMesh& navigationMesh, PathFinderAlgorithm algorithm);
/**
* @brief Looks for a path from point A to point B.
* @param[in] faceIndexTo Target face index
* @return List of waypoints for path or empty list on failure
*/
- WayPointList FindPath(uint32_t faceIndexFrom, uint32_t faceIndexTo);
+ WayPointList FindPath(FaceIndex faceIndexFrom, FaceIndex faceIndexTo);
private:
-
PathFinder() = delete;
DALI_INTERNAL explicit PathFinder(std::unique_ptr<PathFinderBase>&& baseImpl);
std::unique_ptr<PathFinderBase> mImpl;
};
-}
+} // namespace Dali::Scene3D::Algorithm
#endif // DALI_SCENE3D_PATH_FINDER_H