[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19231] trunk/blender/source/gameengine: Fix: The debug lines of Physics Debug Visualization were drawn incorrectly when using overlay scenes (it was using the wrong camera)

Erwin Coumans blender at erwincoumans.com
Mon Mar 9 06:01:17 CET 2009


Revision: 19231
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19231
Author:   erwin
Date:     2009-03-09 06:01:16 +0100 (Mon, 09 Mar 2009)

Log Message:
-----------
Fix: The debug lines of Physics Debug Visualization were drawn incorrectly when using overlay scenes (it was using the wrong camera)

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
    trunk/blender/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
    trunk/blender/source/gameengine/Rasterizer/RAS_IRasterizer.h
    trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h

Modified: trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp	2009-03-09 04:21:28 UTC (rev 19230)
+++ trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp	2009-03-09 05:01:16 UTC (rev 19231)
@@ -1112,6 +1112,11 @@
 
 	scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
 	
+	if (scene->GetPhysicsEnvironment())
+		scene->GetPhysicsEnvironment()->debugDrawWorld();
+	
+	m_rasterizer->FlushDebugLines();
+
 	PostRenderFrame();
 }
 

Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp	2009-03-09 04:21:28 UTC (rev 19230)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp	2009-03-09 05:01:16 UTC (rev 19231)
@@ -563,6 +563,11 @@
 
 }
 
+void CcdPhysicsEnvironment::debugDrawWorld()
+{
+	if (m_dynamicsWorld->getDebugDrawer() &&  m_dynamicsWorld->getDebugDrawer()->getDebugMode() >0)
+			m_dynamicsWorld->debugDrawWorld();
+}
 
 bool	CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
 {
@@ -599,10 +604,7 @@
 		veh->SyncWheels();
 	}
 
-	if (m_dynamicsWorld->getDebugDrawer() &&  m_dynamicsWorld->getDebugDrawer()->getDebugMode() >0)
-		m_dynamicsWorld->debugDrawWorld();
 
-
 	CallbackTriggers();
 
 	return true;

Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h	2009-03-09 04:21:28 UTC (rev 19230)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h	2009-03-09 05:01:16 UTC (rev 19231)
@@ -110,6 +110,8 @@
 		virtual void		endFrame() {};
 		/// Perform an integration step of duration 'timeStep'.
 		virtual	bool		proceedDeltaTime(double curTime,float timeStep);
+		
+		virtual void		debugDrawWorld();
 //		virtual bool		proceedDeltaTimeOneStep(float timeStep);
 
 		virtual	void		setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep){};

Modified: trunk/blender/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
===================================================================
--- trunk/blender/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h	2009-03-09 04:21:28 UTC (rev 19230)
+++ trunk/blender/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h	2009-03-09 05:01:16 UTC (rev 19231)
@@ -90,6 +90,8 @@
 		virtual void		endFrame() = 0;
 		/// Perform an integration step of duration 'timeStep'.
 		virtual	bool		proceedDeltaTime(double curTime,float timeStep)=0;
+		///draw debug lines (make sure to call this during the render phase, otherwise lines are not drawn properly)
+		virtual void		debugDrawWorld(){}
 		virtual	void		setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep)=0;
 		//returns 0.f if no fixed timestep is used
 		virtual	float		getFixedTimeStep()=0;

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_IRasterizer.h
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_IRasterizer.h	2009-03-09 04:21:28 UTC (rev 19230)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_IRasterizer.h	2009-03-09 05:01:16 UTC (rev 19231)
@@ -361,6 +361,8 @@
 	virtual void	SetPolygonOffset(float mult, float add) = 0;
 	
 	virtual	void	DrawDebugLine(const MT_Vector3& from,const MT_Vector3& to,const MT_Vector3& color)=0;
+	virtual	void	FlushDebugLines()=0;
+	
 
 
 	virtual void	SetTexCoordNum(int num) = 0;

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp	2009-03-09 04:21:28 UTC (rev 19230)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp	2009-03-09 05:01:16 UTC (rev 19231)
@@ -327,13 +327,12 @@
 	m_materialCachingInfo = 0;
 }
 
-
-void RAS_OpenGLRasterizer::EndFrame()
+void	RAS_OpenGLRasterizer::FlushDebugLines()
 {
+//DrawDebugLines
 	glDisable(GL_LIGHTING);
 	glDisable(GL_TEXTURE_2D);
 
-	//DrawDebugLines
 	glBegin(GL_LINES);
 	for (unsigned int i=0;i<m_debugLines.size();i++)
 	{
@@ -348,8 +347,19 @@
 	}
 	glEnd();
 
+	glEnable(GL_LIGHTING);
+	glEnable(GL_TEXTURE_2D);
+
 	m_debugLines.clear();
 
+}
+
+void RAS_OpenGLRasterizer::EndFrame()
+{
+	
+
+	FlushDebugLines();
+
 	glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
 	m_2DCanvas->EndFrame();
 }	

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h	2009-03-09 04:21:28 UTC (rev 19230)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h	2009-03-09 05:01:16 UTC (rev 19231)
@@ -240,6 +240,8 @@
 
 	virtual void	SetPolygonOffset(float mult, float add);
 
+	virtual	void	FlushDebugLines();
+
 	virtual	void	DrawDebugLine(const MT_Vector3& from,const MT_Vector3& to,const MT_Vector3& color)
 	{
 		OglDebugLine line;





More information about the Bf-blender-cvs mailing list