[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