Returning from point and returning empty array from C++ if no path found.
This commit is contained in:
@@ -226,13 +226,11 @@ TypedArray<Vector2i> MultilevelAStarEx::generate_path(const Node *current) const
|
||||
int cnt = 0;
|
||||
for (const Node *n = current; n != nullptr; n = n->parent) cnt++;
|
||||
|
||||
cnt--; // because we're not adding the starting node
|
||||
|
||||
TypedArray<Vector2i> arr;
|
||||
arr.resize(cnt);
|
||||
|
||||
int i = cnt;
|
||||
while (current->parent != nullptr)
|
||||
while (current != nullptr)
|
||||
{
|
||||
arr[--cnt] = Vector2i(current->x, current->y) + _trans;
|
||||
current = current->parent;
|
||||
@@ -241,7 +239,7 @@ TypedArray<Vector2i> MultilevelAStarEx::generate_path(const Node *current) const
|
||||
return arr;
|
||||
}
|
||||
|
||||
Variant MultilevelAStarEx::find_path(const Vector2i &from, const Vector2i &to, bool return_closest)
|
||||
TypedArray<Vector2i> MultilevelAStarEx::find_path(const Vector2i &from, const Vector2i &to, bool return_closest)
|
||||
{
|
||||
DEV_ASSERT(_init);
|
||||
|
||||
@@ -312,7 +310,7 @@ Variant MultilevelAStarEx::find_path(const Vector2i &from, const Vector2i &to, b
|
||||
if (current->distanceToEnd == 0)
|
||||
{
|
||||
// found the path
|
||||
return Variant(generate_path(current));
|
||||
return generate_path(current);
|
||||
}
|
||||
|
||||
// close it
|
||||
@@ -381,8 +379,8 @@ Variant MultilevelAStarEx::find_path(const Vector2i &from, const Vector2i &to, b
|
||||
if (return_closest)
|
||||
{
|
||||
// return path to closest
|
||||
return Variant(generate_path(closest));
|
||||
return generate_path(closest);
|
||||
}
|
||||
|
||||
return Variant();
|
||||
return TypedArray<Vector2i>();
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ public:
|
||||
TerrainType get_terrain(const Vector2i &cell) const;
|
||||
void set_unit(const Vector2i &cell, bool blocked);
|
||||
bool get_unit(const Vector2i &cell) const;
|
||||
Variant find_path(const Vector2i &from, const Vector2i &to, bool return_closest);
|
||||
TypedArray<Vector2i> find_path(const Vector2i &from, const Vector2i &to, bool return_closest);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user