[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13463] trunk/blender: makes bullet independant from gameengine for cmake, introduces esc-key during sim, disables collisions when no bullet there

Daniel Genrich daniel.genrich at gmx.net
Wed Jan 30 00:13:31 CET 2008


Revision: 13463
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13463
Author:   genscher
Date:     2008-01-30 00:13:31 +0100 (Wed, 30 Jan 2008)

Log Message:
-----------
makes bullet independant from gameengine for cmake, introduces esc-key during sim, disables collisions when no bullet there

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/extern/CMakeLists.txt
    trunk/blender/source/blender/blenkernel/BKE_cloth.h
    trunk/blender/source/blender/blenkernel/intern/cloth.c
    trunk/blender/source/blender/blenkernel/intern/collision.c
    trunk/blender/source/blender/blenkernel/intern/implicit.c
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/src/buttons_object.c
    trunk/blender/tools/Blender.py

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2008-01-29 22:51:23 UTC (rev 13462)
+++ trunk/blender/CMakeLists.txt	2008-01-29 23:13:31 UTC (rev 13463)
@@ -57,8 +57,8 @@
 #-----------------------------------------------------------------------------
 # Set default config options
 OPTION(WITH_PLAYER		"Build Player"						OFF)
-OPTION(WITH_GAMEENGINE		"Enable Game Engine"					ON)
-OPTION(WITH_BULLET		"Enable Bullet (Physics Engine)"			ON)
+OPTION(WITH_GAMEENGINE		"Enable Game Engine"					OFF)
+OPTION(WITH_BULLET		"Enable Bullet (Physics Engine)"			OFF)
 OPTION(WITH_INTERNATIONAL	"Enable I18N   (International fonts and text)"		ON)
 OPTION(WITH_VERSE		"Enable Verse  (http://verse.blender.org)"		OFF)
 OPTION(WITH_ELBEEM		"Enable Elbeem (Fluid Simulation)"			ON)
@@ -408,6 +408,9 @@
 IF(WITH_GAMEENGINE)
   SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DGAMEBLENDER ")
 ENDIF(WITH_GAMEENGINE)
+IF(WITH_BULLET)
+  SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DWITH_BULLET ")
+ENDIF(WITH_BULLET)
 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS} ")
 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS} ")
 

Modified: trunk/blender/extern/CMakeLists.txt
===================================================================
--- trunk/blender/extern/CMakeLists.txt	2008-01-29 22:51:23 UTC (rev 13462)
+++ trunk/blender/extern/CMakeLists.txt	2008-01-29 23:13:31 UTC (rev 13463)
@@ -29,11 +29,11 @@
 
 IF(WITH_GAMEENGINE)
   SUBDIRS(qhull solid)
+ENDIF(WITH_GAMEENGINE)
 
-  IF(WITH_BULLET)
+IF(WITH_BULLET)
     SUBDIRS(bullet2)
-  ENDIF(WITH_BULLET)
-ENDIF(WITH_GAMEENGINE)
+ENDIF(WITH_BULLET)
 
 IF(WITH_INTERNATIONAL)
   SUBDIRS(bFTGL)

Modified: trunk/blender/source/blender/blenkernel/BKE_cloth.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_cloth.h	2008-01-29 22:51:23 UTC (rev 13462)
+++ trunk/blender/source/blender/blenkernel/BKE_cloth.h	2008-01-29 23:13:31 UTC (rev 13463)
@@ -130,14 +130,14 @@
 typedef enum
 {
 	CLOTH_SIMSETTINGS_FLAG_RESET = ( 1 << 1 ),	// The CM object requires a reinitializaiton.
-					 CLOTH_SIMSETTINGS_FLAG_COLLOBJ = ( 1 << 2 ),// object is only collision object, no cloth simulation is done
-							 CLOTH_SIMSETTINGS_FLAG_GOAL = ( 1 << 3 ), 	// we have goals enabled
-									 CLOTH_SIMSETTINGS_FLAG_TEARING = ( 1 << 4 ),// true if tearing is enabled
-										CLOTH_SIMSETTINGS_FLAG_CCACHE_PROTECT = ( 1 << 5 ), // true if tearing is enabled
-										CLOTH_SIMSETTINGS_FLAG_EDITMODE = ( 1 << 6 ), // are we in editmode? -several things disabled
-										CLOTH_SIMSETTINGS_FLAG_CCACHE_FFREE = (1 << 7), /* force cache freeing */
-										CLOTH_SIMSETTINGS_FLAG_SCALING = (1 << 8), /* is advanced scaling active? */
-										CLOTH_SIMSETTINGS_FLAG_LOADED = (1 << 9), /* did we just got load? */
+	CLOTH_SIMSETTINGS_FLAG_COLLOBJ = ( 1 << 2 ),// object is only collision object, no cloth simulation is done
+	CLOTH_SIMSETTINGS_FLAG_GOAL = ( 1 << 3 ), 	// we have goals enabled
+	CLOTH_SIMSETTINGS_FLAG_TEARING = ( 1 << 4 ),// true if tearing is enabled
+	CLOTH_SIMSETTINGS_FLAG_CCACHE_PROTECT = ( 1 << 5 ), // true if tearing is enabled
+	CLOTH_SIMSETTINGS_FLAG_EDITMODE = ( 1 << 6 ), // are we in editmode? -several things disabled
+	CLOTH_SIMSETTINGS_FLAG_CCACHE_FFREE = (1 << 7), /* force cache freeing */
+	CLOTH_SIMSETTINGS_FLAG_SCALING = (1 << 8), /* is advanced scaling active? */
+	CLOTH_SIMSETTINGS_FLAG_LOADED = (1 << 9), /* did we just got load? */
 } CLOTH_SIMSETTINGS_FLAGS;
 
 /* COLLISION FLAGS */
@@ -159,7 +159,7 @@
 typedef enum
 {
 	CLOTH_SPRING_FLAG_DEACTIVATE = ( 1 << 1 ),
-					 CLOTH_SPRING_FLAG_NEEDED = ( 1 << 2 ), // springs has values to be applied
+	CLOTH_SPRING_FLAG_NEEDED = ( 1 << 2 ), // springs has values to be applied
 } CLOTH_SPRINGS_FLAGS;
 
 /* Bits to or into the ClothVertex.flags. */
@@ -190,6 +190,9 @@
 int implicit_free ( ClothModifierData *clmd );
 int implicit_solver ( Object *ob, float frame, ClothModifierData *clmd, ListBase *effectors );
 void implicit_set_positions ( ClothModifierData *clmd );
+
+// globally needed
+void clmdSetInterruptCallBack(int (*f)(void));
 ////////////////////////////////////////////////
 
 

Modified: trunk/blender/source/blender/blenkernel/intern/cloth.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/cloth.c	2008-01-29 22:51:23 UTC (rev 13462)
+++ trunk/blender/source/blender/blenkernel/intern/cloth.c	2008-01-29 23:13:31 UTC (rev 13463)
@@ -639,6 +639,7 @@
 	MEdge *medge = NULL;
 	MFace *mface = NULL;
 	DerivedMesh *result = NULL;
+	int ret = 0;
 	
 	if(G.rt > 0)
 		printf("clothModifier_do start\n");
@@ -782,13 +783,18 @@
 
 			// Call the solver.
 			if ( solvers [clmd->sim_parms->solver_type].solver )
-				solvers [clmd->sim_parms->solver_type].solver ( ob, framenr, clmd, effectors );
+			{
+				ret = solvers [clmd->sim_parms->solver_type].solver ( ob, framenr, clmd, effectors );
+			}
 
 			tend();
 			// printf ( "Cloth simulation time: %f\n", ( float ) tval() );
-
-			cloth_write_cache(ob, clmd, framenr);
 			
+			if(ret)
+				cloth_write_cache(ob, clmd, framenr);
+			else
+				clmd->sim_parms->sim_time--;
+			
 			// check for autoprotection
 			if(framenr >= clmd->sim_parms->autoprotect)
 			{

Modified: trunk/blender/source/blender/blenkernel/intern/collision.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/collision.c	2008-01-29 22:51:23 UTC (rev 13462)
+++ trunk/blender/source/blender/blenkernel/intern/collision.c	2008-01-29 23:13:31 UTC (rev 13463)
@@ -680,9 +680,13 @@
 		if(i < 4)
 		{
 			// calc distance + normal 	
+#if WITH_BULLET == 1
 			distance = plNearestPoints(
 					verts1[collpair->ap1].txold, verts1[collpair->ap2].txold, verts1[collpair->ap3].txold, collmd->current_x[collpair->bp1].co, collmd->current_x[collpair->bp2].co, collmd->current_x[collpair->bp3].co, collpair->pa,collpair->pb,collpair->vector);
-			
+#else
+			// just be sure that we don't add anything
+			distance = 2.0 * (epsilon + ALMOST_ZERO);
+#endif	
 			if (distance <= (epsilon + ALMOST_ZERO))
 			{
 				// printf("dist: %f\n", (float)distance);

Modified: trunk/blender/source/blender/blenkernel/intern/implicit.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/implicit.c	2008-01-29 22:51:23 UTC (rev 13462)
+++ trunk/blender/source/blender/blenkernel/intern/implicit.c	2008-01-29 23:13:31 UTC (rev 13463)
@@ -110,6 +110,10 @@
 	return t2-t1;
 }
 #endif
+
+/* callbacks for errors and interrupts and some goo */
+static int (*CT_localInterruptCallBack)(void) = NULL;
+
 /*
 #define C99
 #ifdef C99
@@ -1525,6 +1529,10 @@
 		step += dt;
 
 		if(effectors) pdEndEffectors(effectors);
+		
+		/* ask for user break */ 
+		if (CT_localInterruptCallBack && CT_localInterruptCallBack())
+			return 0;
 	}
 
 	for(i = 0; i < numverts; i++)
@@ -1569,3 +1577,9 @@
 	if(G.rt > 0)
 		printf("implicit_set_positions\n");	
 }
+
+/* Cloth global visible functions */ 
+void clmdSetInterruptCallBack(int (*f)(void))
+{
+	CT_localInterruptCallBack = f;
+}

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2008-01-29 22:51:23 UTC (rev 13462)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2008-01-29 23:13:31 UTC (rev 13463)
@@ -4960,6 +4960,7 @@
 		return;
 	
 	cloth_init (clmd);
+	if(G.rt >0)
 	printf("clothModifier_initData\n");
 }
 

Modified: trunk/blender/source/blender/src/buttons_object.c
===================================================================
--- trunk/blender/source/blender/src/buttons_object.c	2008-01-29 22:51:23 UTC (rev 13462)
+++ trunk/blender/source/blender/src/buttons_object.c	2008-01-29 23:13:31 UTC (rev 13463)
@@ -3304,7 +3304,7 @@
 			uiDefButF(block, NUM, B_DIFF, "Permeability: ",	160,80,150,20, &pd->pdef_perm, 0.0, 1.0, 10, 0, "Chance that the particle will pass through the mesh");
 			uiBlockEndAlign(block);
 			
-			uiDefBut(block, LABEL, 0, "Soft Body",			160,60,150,20, NULL, 0.0, 0, 0, 0, "");
+			uiDefBut(block, LABEL, 0, "Soft Body / Cloth",			160,60,150,20, NULL, 0.0, 0, 0, 0, "");
 
 			uiBlockBeginAlign(block);
 			uiDefButF(block, NUM, B_FIELD_CHANGE, "Damping:",	160,40,150,20, &pd->pdef_sbdamp, 0.0, 1.0, 10, 0, "Amount of damping during soft body collision");
@@ -5123,6 +5123,9 @@
 		int defCount;
 		char *clvg1, *clvg2;
 		char clmvg [] = "Vertex Groups%t|";
+		
+		clmdSetInterruptCallBack(blender_test_break); // make softbody module ESC aware
+		G.afbreek=0; // init global break system
 
 		val2=0;
 		
@@ -5265,7 +5268,7 @@
 		{
 			uiDefButF(block, NUM, REDRAWBUTSOBJECT, "Min Distance:",	   160,60,150,20, &clmd->coll_parms->epsilon, 0.001f, 1.0, 0.01f, 0, "Minimum distance between collision objects before collision response takes in, can be changed for each frame");
 			uiDefButS(block, NUM, REDRAWBUTSOBJECT, "Collision Quality:",	   10,40,150,20, &clmd->coll_parms->loop_count, 1.0, 100.0, 1.0, 0, "How many collision iterations should be done. (higher = better = slower), can be changed for each frame");
-			uiDefButF(block, NUM, REDRAWBUTSOBJECT, "Friction:",	   160,40,150,20, &clmd->coll_parms->friction, 1.0, 100.0, 1.0, 0, "Friction force if a collision happened");
+			uiDefButF(block, NUM, REDRAWBUTSOBJECT, "Friction:",	   160,40,150,20, &clmd->coll_parms->friction, 1.0, 100.0, 1.0, 0, "Friction force if a collision happened (high=slower movement when collided)");
 		}
 		else
 			uiDefBut(block, LABEL, 0, "",160,60,150,20, NULL, 0.0, 0, 0, 0, "");	

Modified: trunk/blender/tools/Blender.py
===================================================================
--- trunk/blender/tools/Blender.py	2008-01-29 22:51:23 UTC (rev 13462)
+++ trunk/blender/tools/Blender.py	2008-01-29 23:13:31 UTC (rev 13463)
@@ -392,6 +392,8 @@
             lenv.Append(CPPDEFINES=defines)
             if lenv['WITH_BF_GAMEENGINE']:
                     lenv.Append(CPPDEFINES=['GAMEBLENDER=1'])
+            if lenv['WITH_BF_BULLET']:
+                    lenv.Append(CPPDEFINES=['WITH_BULLET=1'])
             # debug or not
             # CXXFLAGS defaults to CCFLAGS, therefore

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list