[dali_2.3.28] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / public-api / algorithm / path-finder.h
index e1791bc..5ff9fe4 100644 (file)
  */
 
 // 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>;
 
 /**
@@ -33,27 +32,32 @@ 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. @SINCE_2_2.12
+  SPFA,                   ///< Using SPFA-SLF (Shortest Path Fast Algorithm with Short Label First) finding a shortest path. @SINCE_2_2.12
+  SPFA_DOUBLE_WAY,        ///< Using SPFA-SLF double way. It might not find shortest, but will use less memory. @SINCE_2_2.12
+
+  DEFAULT = DIJKSTRA_SHORTEST_PATH, ///< Default algorithm to use
 };
 
 /**
  * @class PathFinderBase
  *
  * Base class for implementation of pathfinding algorithms.
+ * @SINCE_2_2.12
  */
 class DALI_SCENE3D_API PathFinderBase
 {
 public:
-
   /**
    * @brief Destructor
+   * @SINCE_2_2.12
    */
   virtual ~PathFinderBase() = default;
 
   /**
    * @brief Looks for a path from point A to point B.
    *
+   * @SINCE_2_2.12
    * @param[in] positionFrom source position in NavigationMesh parent space
    * @param[in] positionTo target position in NavigationMesh parent space
    * @return List of waypoints for path or empty vector if no success
@@ -63,11 +67,12 @@ public:
   /**
    * @brief Finds path between NavigationMesh faces
    *
+   * @SINCE_2_2.12
    * @param[in] polyIndexFrom Index of start polygon
    * @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;
 };
 
 /**
@@ -75,18 +80,19 @@ public:
  *
  * PathFinder runs path finding algorithm on associated NavigationMesh
  * and returns a list of waypoints.
+ * @SINCE_2_2.12
  */
 class DALI_SCENE3D_API PathFinder
 {
 public:
-
   /**
    * @brief Creates new instance of path finder
+   * @SINCE_2_2.12
    * @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.
@@ -100,6 +106,7 @@ public:
    *
    * Both points should be defined in the same space as is used by the NavigationMesh.
    *
+   * @SINCE_2_2.12
    * @param[in] positionFrom Source position
    * @param[in] positionTo Target position
    * @return List of waypoints for path or empty list on failure
@@ -115,14 +122,14 @@ public:
    * - index < 0 or index > NavigationMesh::GetFaceCount()
    * - The path doesn't exist
    *
+   * @SINCE_2_2.12
    * @param[in] faceIndexFrom Source face index
    * @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);
@@ -130,6 +137,6 @@ private:
   std::unique_ptr<PathFinderBase> mImpl;
 };
 
-}
+} // namespace Dali::Scene3D::Algorithm
 
 #endif // DALI_SCENE3D_PATH_FINDER_H