same fixes to 3D navmesh..

This commit is contained in:
Juan Linietsky 2015-05-02 17:39:29 -03:00
parent 2296b0508e
commit 5f2aac4bbe
2 changed files with 16 additions and 1 deletions

View File

@ -30,6 +30,7 @@ void Navigation::_navmesh_link(int p_id) {
p.edges.resize(plen);
Vector3 center;
float sum=0;
for(int j=0;j<plen;j++) {
@ -44,8 +45,19 @@ void Navigation::_navmesh_link(int p_id) {
center+=ep;
e.point=_get_point(ep);
p.edges[j]=e;
if (j>=2) {
Vector3 epa = nm.xform.xform(r[indices[j-2]]);
Vector3 epb = nm.xform.xform(r[indices[j-1]]);
sum+=up.dot((epb-epa).cross(ep-epa));
}
}
p.clockwise=sum>0;
if (!valid) {
nm.polygons.pop_back();
ERR_CONTINUE(!valid);
@ -399,7 +411,8 @@ Vector<Vector3> Navigation::get_simple_path(const Vector3& p_start, const Vector
left = _get_vertex(p->edges[prev].point);
right = _get_vertex(p->edges[prev_n].point);
if (CLOCK_TANGENT(apex_point,left,(left+right)*0.5).dot(up) < 0){
//if (CLOCK_TANGENT(apex_point,left,(left+right)*0.5).dot(up) < 0){
if (p->clockwise) {
SWAP(left,right);
}
}

View File

@ -59,6 +59,8 @@ class Navigation : public Spatial {
float distance;
int prev_edge;
bool clockwise;
NavMesh *owner;
};