aboutsummaryrefslogtreecommitdiff
path: root/scene/3d/navigation.h
diff options
context:
space:
mode:
authorAnton Yabchinskiy2015-07-29 23:01:36 +0300
committerAnton Yabchinskiy2015-07-29 23:01:36 +0300
commitdc8df8a91a995796f0f330bf6bb6b209f6dfce08 (patch)
tree46cfe09124703b07860754d6b44e0289422e0573 /scene/3d/navigation.h
parent16746f157f83d666079ba3266acec13d35b84c3f (diff)
parent922356b903061cda7591090bf19e8346c3a78cf5 (diff)
downloadgodot-dc8df8a91a995796f0f330bf6bb6b209f6dfce08.tar.gz
godot-dc8df8a91a995796f0f330bf6bb6b209f6dfce08.tar.zst
godot-dc8df8a91a995796f0f330bf6bb6b209f6dfce08.zip
Merge branch 'master' of github.com:okamstudio/godot
Diffstat (limited to 'scene/3d/navigation.h')
-rw-r--r--scene/3d/navigation.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/scene/3d/navigation.h b/scene/3d/navigation.h
index 19977c311..f8434aaf7 100644
--- a/scene/3d/navigation.h
+++ b/scene/3d/navigation.h
@@ -42,6 +42,13 @@ class Navigation : public Spatial {
struct NavMesh;
+ struct Polygon;
+
+ struct ConnectionPending {
+
+ Polygon *polygon;
+ int edge;
+ };
struct Polygon {
@@ -50,7 +57,8 @@ class Navigation : public Spatial {
Point point;
Polygon *C; //connection
int C_edge;
- Edge() { C=NULL; C_edge=-1; }
+ List<ConnectionPending>::Element *P;
+ Edge() { C=NULL; C_edge=-1; P=NULL; }
};
Vector<Edge> edges;
@@ -59,6 +67,8 @@ class Navigation : public Spatial {
float distance;
int prev_edge;
+ bool clockwise;
+
NavMesh *owner;
};
@@ -70,6 +80,9 @@ class Navigation : public Spatial {
int A_edge;
Polygon *B;
int B_edge;
+
+ List<ConnectionPending> pending;
+
Connection() { A=NULL; B=NULL; A_edge=-1; B_edge=-1;}
};
@@ -135,9 +148,10 @@ public:
void navmesh_remove(int p_id);
Vector<Vector3> get_simple_path(const Vector3& p_start, const Vector3& p_end,bool p_optimize=true);
- Vector3 get_closest_point_to_segment(const Vector3& p_from,const Vector3& p_to,const bool& p_use_collision=false);
+ Vector3 get_closest_point_to_segment(const Vector3& p_from,const Vector3& p_to,const bool& p_use_collision=false);
Vector3 get_closest_point(const Vector3& p_point);
Vector3 get_closest_point_normal(const Vector3& p_point);
+ Object* get_closest_point_owner(const Vector3& p_point);
Navigation();
};