[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29052] branches/soc-2010-nicks/source/ gameengine/Ketsji/KX_Pathfinder.cpp: EOL to native

Benoit Bolsee benoit.bolsee at online.be
Fri May 28 22:45:43 CEST 2010


Revision: 29052
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29052
Author:   ben2610
Date:     2010-05-28 22:45:41 +0200 (Fri, 28 May 2010)

Log Message:
-----------
EOL to native

Modified Paths:
--------------
    branches/soc-2010-nicks/source/gameengine/Ketsji/KX_Pathfinder.cpp

Property Changed:
----------------
    branches/soc-2010-nicks/source/gameengine/Ketsji/KX_Pathfinder.cpp

Modified: branches/soc-2010-nicks/source/gameengine/Ketsji/KX_Pathfinder.cpp
===================================================================
--- branches/soc-2010-nicks/source/gameengine/Ketsji/KX_Pathfinder.cpp	2010-05-28 20:22:21 UTC (rev 29051)
+++ branches/soc-2010-nicks/source/gameengine/Ketsji/KX_Pathfinder.cpp	2010-05-28 20:45:41 UTC (rev 29052)
@@ -1,180 +1,180 @@
-/**
-* $Id$ 
-* ***** BEGIN GPL LICENSE BLOCK *****
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software Foundation,
-* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-*
-* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
-* All rights reserved.
-*
-* The Original Code is: all of this file.
-*
-* Contributor(s): none yet.
-*
-* ***** END GPL LICENSE BLOCK *****
-*/
-
-#include "KX_Pathfinder.h"
-#include "RAS_MeshObject.h"
-
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
-extern "C" {
-#include "BKE_scene.h"
-#include "BKE_customdata.h"
-#include "BKE_cdderivedmesh.h"
-#include "BKE_DerivedMesh.h"
-}
-#include "KX_PythonInit.h"
-#include "KX_PyMath.h"
-#include "Value.h"
-#include "Recast.h"
-#include "DetourStatNavMeshBuilder.h"
-
-static const int MAX_PATH_LEN = 256;
-static const float polyPickExt[3] = {2, 4, 2};
-
-static void calcMeshBounds(const float* vert, int nverts, float* bmin, float* bmax)
-{
-	bmin[0] = bmax[0] = vert[0];
-	bmin[1] = bmax[1] = vert[1];
-	bmin[2] = bmax[2] = vert[2];
-	for (int i=1; i<nverts; i++)
-	{
-		if (bmin[0]>vert[3*i+0]) bmin[0] = vert[3*i+0];
-		if (bmin[1]>vert[3*i+1]) bmin[1] = vert[3*i+1];
-		if (bmin[2]>vert[3*i+2]) bmin[2] = vert[3*i+2];
-
-		if (bmax[0]<vert[3*i+0]) bmax[0] = vert[3*i+0];
-		if (bmax[1]<vert[3*i+1]) bmax[1] = vert[3*i+1];
-		if (bmax[2]<vert[3*i+2]) bmax[2] = vert[3*i+2];
-	}
-}
-
-inline void flipAxes(float* vec)
-{
-	std::swap(vec[1],vec[2]);
-}
-
-KX_Pathfinder::KX_Pathfinder(void* sgReplicationInfo, SG_Callbacks callbacks)
-:	KX_GameObject(sgReplicationInfo, callbacks)
-,	m_navMesh(NULL)
-{
-	
-}
-
-KX_Pathfinder::~KX_Pathfinder()
-{
-	if (m_navMesh)
-		delete m_navMesh;
-}
-
-bool KX_Pathfinder::BuildVertIndArrays(RAS_MeshObject* meshobj, float *&vertices, int& nverts,
-									   unsigned short* &faces, int& npolys)
-{
-	if (!meshobj || meshobj->HasColliderPolygon()==false) 
-	{
-		return false;
-	}
-
-	DerivedMesh* dm = CDDM_from_mesh(meshobj->GetMesh(), NULL);
-
-	MVert *mvert = dm->getVertArray(dm);
-	MFace *mface = dm->getFaceArray(dm);
-	int numpolys = dm->getNumFaces(dm);
-	int numverts = dm->getNumVerts(dm);
-	int* index = (int*)dm->getFaceDataArray(dm, CD_ORIGINDEX);
-	MTFace *tface = (MTFace *)dm->getFaceDataArray(dm, CD_MTFACE);
-
-	nverts = numverts;
+/**
+* $Id$ 
+* ***** BEGIN GPL LICENSE BLOCK *****
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*
+* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+* All rights reserved.
+*
+* The Original Code is: all of this file.
+*
+* Contributor(s): none yet.
+*
+* ***** END GPL LICENSE BLOCK *****
+*/
+
+#include "KX_Pathfinder.h"
+#include "RAS_MeshObject.h"
+
+#include "DNA_mesh_types.h"
+#include "DNA_meshdata_types.h"
+extern "C" {
+#include "BKE_scene.h"
+#include "BKE_customdata.h"
+#include "BKE_cdderivedmesh.h"
+#include "BKE_DerivedMesh.h"
+}
+#include "KX_PythonInit.h"
+#include "KX_PyMath.h"
+#include "Value.h"
+#include "Recast.h"
+#include "DetourStatNavMeshBuilder.h"
+
+static const int MAX_PATH_LEN = 256;
+static const float polyPickExt[3] = {2, 4, 2};
+
+static void calcMeshBounds(const float* vert, int nverts, float* bmin, float* bmax)
+{
+	bmin[0] = bmax[0] = vert[0];
+	bmin[1] = bmax[1] = vert[1];
+	bmin[2] = bmax[2] = vert[2];
+	for (int i=1; i<nverts; i++)
+	{
+		if (bmin[0]>vert[3*i+0]) bmin[0] = vert[3*i+0];
+		if (bmin[1]>vert[3*i+1]) bmin[1] = vert[3*i+1];
+		if (bmin[2]>vert[3*i+2]) bmin[2] = vert[3*i+2];
+
+		if (bmax[0]<vert[3*i+0]) bmax[0] = vert[3*i+0];
+		if (bmax[1]<vert[3*i+1]) bmax[1] = vert[3*i+1];
+		if (bmax[2]<vert[3*i+2]) bmax[2] = vert[3*i+2];
+	}
+}
+
+inline void flipAxes(float* vec)
+{
+	std::swap(vec[1],vec[2]);
+}
+
+KX_Pathfinder::KX_Pathfinder(void* sgReplicationInfo, SG_Callbacks callbacks)
+:	KX_GameObject(sgReplicationInfo, callbacks)
+,	m_navMesh(NULL)
+{
+	
+}
+
+KX_Pathfinder::~KX_Pathfinder()
+{
+	if (m_navMesh)
+		delete m_navMesh;
+}
+
+bool KX_Pathfinder::BuildVertIndArrays(RAS_MeshObject* meshobj, float *&vertices, int& nverts,
+									   unsigned short* &faces, int& npolys)
+{
+	if (!meshobj || meshobj->HasColliderPolygon()==false) 
+	{
+		return false;
+	}
+
+	DerivedMesh* dm = CDDM_from_mesh(meshobj->GetMesh(), NULL);
+
+	MVert *mvert = dm->getVertArray(dm);
+	MFace *mface = dm->getFaceArray(dm);
+	int numpolys = dm->getNumFaces(dm);
+	int numverts = dm->getNumVerts(dm);
+	int* index = (int*)dm->getFaceDataArray(dm, CD_ORIGINDEX);
+	MTFace *tface = (MTFace *)dm->getFaceDataArray(dm, CD_MTFACE);
+
+	nverts = numverts;
 	if (nverts >= 0xffff)
-		return false;
-	//calculate count of tris
-	npolys = numpolys;
-	for (int p2=0; p2<numpolys; p2++)
-	{
-		MFace* mf = &mface[p2];
-		if (mf->v4)
-			npolys+=1;
-	}
-
-	//create verts
-	vertices = new float[nverts*3];
-	for (int vi=0; vi<nverts; vi++)
-	{
-		MVert *v = &mvert[vi];
-		for (int j=0; j<3; j++)
-			vertices[3*vi+j] = v->co[j];
-	}
-	//create tris
-	faces = new unsigned short[npolys*3*2];
-	memset(faces,0xff,sizeof(unsigned short)*3*2*npolys);
-	unsigned short *face = faces;
-	for (int p2=0; p2<numpolys; p2++)
-	{
-		MFace* mf = &mface[p2];
-		face[0]= mf->v1;
-		face[1]= mf->v2;
-		face[2]= mf->v3;
-		face += 6;
-		if (mf->v4)
-		{
-			face[0]= mf->v1;
-			face[1]= mf->v3;
-			face[2]= mf->v4;
-			face += 6;
-		}
-	}
-
-	dm->release(dm);
-	dm = NULL;
-	
-	return true;
-}
-
-bool KX_Pathfinder::BuildNavMesh()
-{
-	if (GetMeshCount()==0)
-		return false;
-
-	RAS_MeshObject* meshobj = GetMesh(0);
-
-	float* vertices = NULL;
+		return false;
+	//calculate count of tris
+	npolys = numpolys;
+	for (int p2=0; p2<numpolys; p2++)
+	{
+		MFace* mf = &mface[p2];
+		if (mf->v4)
+			npolys+=1;
+	}
+
+	//create verts
+	vertices = new float[nverts*3];
+	for (int vi=0; vi<nverts; vi++)
+	{
+		MVert *v = &mvert[vi];
+		for (int j=0; j<3; j++)
+			vertices[3*vi+j] = v->co[j];
+	}
+	//create tris
+	faces = new unsigned short[npolys*3*2];
+	memset(faces,0xff,sizeof(unsigned short)*3*2*npolys);
+	unsigned short *face = faces;
+	for (int p2=0; p2<numpolys; p2++)
+	{
+		MFace* mf = &mface[p2];
+		face[0]= mf->v1;
+		face[1]= mf->v2;
+		face[2]= mf->v3;
+		face += 6;
+		if (mf->v4)
+		{
+			face[0]= mf->v1;
+			face[1]= mf->v3;
+			face[2]= mf->v4;
+			face += 6;
+		}
+	}
+
+	dm->release(dm);
+	dm = NULL;
+	
+	return true;
+}
+
+bool KX_Pathfinder::BuildNavMesh()
+{
+	if (GetMeshCount()==0)
+		return false;
+
+	RAS_MeshObject* meshobj = GetMesh(0);
+
+	float* vertices = NULL;
 	unsigned short* faces = NULL;
 	int nverts = 0, npolys = 0;	
-	if (!BuildVertIndArrays(meshobj, vertices, nverts, faces, npolys))
-		return false;
+	if (!BuildVertIndArrays(meshobj, vertices, nverts, faces, npolys))
+		return false;
 	
 	//prepare vertices and indices
 	MT_Transform worldTransform = GetSGNode()->GetWorldTransform();
 	MT_Point3 pos;
-	for (int i=0; i<nverts; i++)
-	{
-		flipAxes(&vertices[i*3]);
-		pos.setValue(&vertices[i*3]);
-		//add world transform
-		pos = worldTransform(pos);
-		pos.getValue(&vertices[i*3]);
-
-	}
-	//reorder tris 
-	for (int i=0; i<npolys; i++)
-	{
-		std::swap(faces[6*i+1], faces[6*i+2]);
-	}
-	const int vertsPerPoly = 3;
+	for (int i=0; i<nverts; i++)
+	{
+		flipAxes(&vertices[i*3]);
+		pos.setValue(&vertices[i*3]);
+		//add world transform
+		pos = worldTransform(pos);
+		pos.getValue(&vertices[i*3]);
+
+	}
+	//reorder tris 
+	for (int i=0; i<npolys; i++)
+	{
+		std::swap(faces[6*i+1], faces[6*i+2]);
+	}
+	const int vertsPerPoly = 3;
 	buildMeshAdjacency(faces, npolys, nverts, vertsPerPoly);
 
 	
@@ -192,11 +192,11 @@
 	//quantize vertex pos
 	unsigned short* vertsi = new unsigned short[3*nverts];
 	float ics = 1.f/cs;
-	for (int i=0; i<nverts; i++)
-	{
-		vertsi[3*i+0] = static_cast<unsigned short>((vertices[3*i+0]-bmin[0])*ics);
-		vertsi[3*i+1] = static_cast<unsigned short>((vertices[3*i+1]-bmin[1])*ics);
-		vertsi[3*i+2] = static_cast<unsigned short>((vertices[3*i+2]-bmin[2])*ics);
+	for (int i=0; i<nverts; i++)
+	{
+		vertsi[3*i+0] = static_cast<unsigned short>((vertices[3*i+0]-bmin[0])*ics);
+		vertsi[3*i+1] = static_cast<unsigned short>((vertices[3*i+1]-bmin[1])*ics);
+		vertsi[3*i+2] = static_cast<unsigned short>((vertices[3*i+2]-bmin[2])*ics);
 	}
 
 	// Calculate data size
@@ -285,25 +285,25 @@
 	const unsigned short* face = faces;
 	for(size_t i=0; i<ndtris; i++)
 	{
-		for (size_t j=0; j<3; j++)
-			tri[4*i+j] = j;
+		for (size_t j=0; j<3; j++)
+			tri[4*i+j] = j;
 	}
 
 	m_navMesh = new dtStatNavMesh;
-	m_navMesh->init(data, dataSize, true);
-
-	delete [] vertices;
-	delete [] faces;
-	
-	return true;
-}
-
-void KX_Pathfinder::DebugDraw()
-{
-	if (!m_navMesh)
-		return;
-	MT_Vector3 color(0.f, 0.f, 0.f);
-
+	m_navMesh->init(data, dataSize, true);
+
+	delete [] vertices;
+	delete [] faces;
+	
+	return true;
+}
+
+void KX_Pathfinder::DebugDraw()
+{
+	if (!m_navMesh)
+		return;
+	MT_Vector3 color(0.f, 0.f, 0.f);
+
 	for (int i = 0; i < m_navMesh->getPolyDetailCount(); ++i)
 	{
 		const dtStatPoly* p = m_navMesh->getPoly(i);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list