[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31109] branches/soc-2010-nicks/source/ blender/editors/util/navmesh_conversion.cpp: fixed error in forming of navigation polygons: non-traversed polygons are allowed if and only if they haven' t border edges

Nick Samarin nicks1987 at bigmir.net
Fri Aug 6 18:11:17 CEST 2010


Revision: 31109
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31109
Author:   nicks
Date:     2010-08-06 18:11:17 +0200 (Fri, 06 Aug 2010)

Log Message:
-----------
fixed error in forming of navigation polygons: non-traversed polygons are allowed if and only if they haven't border edges

Modified Paths:
--------------
    branches/soc-2010-nicks/source/blender/editors/util/navmesh_conversion.cpp

Modified: branches/soc-2010-nicks/source/blender/editors/util/navmesh_conversion.cpp
===================================================================
--- branches/soc-2010-nicks/source/blender/editors/util/navmesh_conversion.cpp	2010-08-06 15:58:15 UTC (rev 31108)
+++ branches/soc-2010-nicks/source/blender/editors/util/navmesh_conversion.cpp	2010-08-06 16:11:17 UTC (rev 31109)
@@ -241,14 +241,26 @@
 		delete adjustedPoly;
 		nv = adjustedNv;
 
-		bool allTraversed = true;
+		bool allBorderTraversed = true;
 		for (size_t i=0; i<(size_t)dtrisNum; i++)
 		{
 			if (traversedTris[i]==0)
-				allTraversed = false;
+			{
+				//check whether it has border edges
+				int curpolytri = dtrisBase+i;
+				for (int k=0; k<3; k++)
+				{
+					unsigned short neighbortri = dtris[curpolytri*3*2+3+k];
+					if ( neighbortri==0xffff || dtrisToPolysMap[neighbortri]!=polyidx+1)
+					{
+						allBorderTraversed = false;
+						break;
+					}
+				}
+			}				
 		}
 
-		if (nv<=vertsPerPoly && allTraversed)
+		if (nv<=vertsPerPoly && allBorderTraversed)
 		{
 			for (int i=0; i<nv; i++)
 			{





More information about the Bf-blender-cvs mailing list