diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c index 19dcee676cb..36d114cf023 100644 --- a/source/blender/blenkernel/intern/softbody.c +++ b/source/blender/blenkernel/intern/softbody.c @@ -782,21 +782,21 @@ static void calculate_collision_balls(Object *ob) } if (akku_count > 0) { - if (sb->sbc_mode == 0){ + if (sb->sbc_mode == SBC_MODE_MANUAL){ bp->colball=sb->colball; - } - if (sb->sbc_mode == 1){ - bp->colball = akku/(float)akku_count*sb->colball; } - if (sb->colball == 2){ + if (sb->sbc_mode == SBC_MODE_AVG){ + bp->colball = akku/(float)akku_count*sb->colball; + } + if (sb->sbc_mode == SBC_MODE_MIN){ bp->colball=min*sb->colball; - } - if (sb->colball == 3){ + } + if (sb->sbc_mode == SBC_MODE_MAX){ bp->colball=max*sb->colball; - } - if (sb->colball == 4){ - bp->colball = (min + max)/2.0f*sb->colball; - } + } + if (sb->sbc_mode == SBC_MODE_AVGMINMAX){ + bp->colball = (min + max)/2.0f*sb->colball; + } } else bp->colball=0; }/*for bp*/ diff --git a/source/blender/makesdna/DNA_object_force.h b/source/blender/makesdna/DNA_object_force.h index a821e209ef0..88d45f0dbd8 100644 --- a/source/blender/makesdna/DNA_object_force.h +++ b/source/blender/makesdna/DNA_object_force.h @@ -143,9 +143,17 @@ typedef struct SoftBody { #define OB_SB_EDGECOLL 2048 #define OB_SB_COLLFINAL 4096 +/* sb->solverflags */ #define SBSO_MONITOR 1 #define SBSO_OLDERR 2 +/* sb->sbc_mode */ +#define SBC_MODE_MANUAL 0 +#define SBC_MODE_AVG 1 +#define SBC_MODE_MIN 2 +#define SBC_MODE_MAX 3 +#define SBC_MODE_AVGMINMAX 4 + #ifdef __cplusplus } #endif diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c index 3a2c7bda497..971de79ab21 100644 --- a/source/blender/src/buttons_object.c +++ b/source/blender/src/buttons_object.c @@ -2900,11 +2900,11 @@ static void object_softbodies_II(Object *ob) uiDefButBitS(block, TOG, OB_SB_SELF, B_SOFTBODY_CHANGE, "Self Collision", 10,170,150,20, &ob->softflag, 0, 0, 0, 0, "enable naive vertex ball self collision"); if(ob->softflag & OB_SB_SELF){ uiDefButF(block, NUM, B_SOFTBODY_CHANGE, "Ball Size:", 160,170,150,20, &sb->colball, -10.0, 10.0, 10, 0, "Absolute ball size or factor if not manual adjusted"); - uiDefButS(block, ROW, B_DIFF, "Man",10,150,60,20, &sb->sbc_mode, 4.0,(float)0, 0, 0, "Manual adjust"); - uiDefButS(block, ROW, B_DIFF, "Av",70,150,60,20, &sb->sbc_mode, 4.0,(float)1, 0, 0, "Average Spring lenght * Ball Size"); - uiDefButS(block, ROW, B_DIFF, "Min",130,150,60,20, &sb->sbc_mode, 4.0,(float)2, 0, 0, "Minimal Spring lenght * Ball Size"); - uiDefButS(block, ROW, B_DIFF, "Max",190,150,60,20, &sb->sbc_mode, 4.0,(float)3, 0, 0, "Maximal Spring lenght * Ball Size"); - uiDefButS(block, ROW, B_DIFF, "AvMiMa",250,150,60,20, &sb->sbc_mode, 4.0,(float)4, 0, 0, "(Min+Max)/2 * Ball Size"); + uiDefButS(block, ROW, B_DIFF, "Man",10,150,60,20, &sb->sbc_mode, 4.0,SBC_MODE_MANUAL, 0, 0, "Manual adjust"); + uiDefButS(block, ROW, B_DIFF, "Av",70,150,60,20, &sb->sbc_mode, 4.0,SBC_MODE_AVG, 0, 0, "Average Spring lenght * Ball Size"); + uiDefButS(block, ROW, B_DIFF, "Min",130,150,60,20, &sb->sbc_mode, 4.0,SBC_MODE_MIN, 0, 0, "Minimal Spring lenght * Ball Size"); + uiDefButS(block, ROW, B_DIFF, "Max",190,150,60,20, &sb->sbc_mode, 4.0,SBC_MODE_MAX, 0, 0, "Maximal Spring lenght * Ball Size"); + uiDefButS(block, ROW, B_DIFF, "AvMiMa",250,150,60,20, &sb->sbc_mode, 4.0,SBC_MODE_AVGMINMAX, 0, 0, "(Min+Max)/2 * Ball Size"); uiDefButF(block, NUM, B_DIFF, "B Stiff:", 10,130,150,20, &sb->ballstiff, 0.001, 100.0, 10, 0, "Ball inflating presure"); uiDefButF(block, NUM, B_DIFF, "B Damp:", 160,130,150,20, &sb->balldamp, 0.001, 1.0, 10, 0, "Blending to inelastic collision"); }