[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12687] trunk/blender/source/blender:
Brecht Van Lommel
brechtvanlommel at pandora.be
Tue Nov 27 12:17:52 CET 2007
Revision: 12687
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12687
Author: blendix
Date: 2007-11-27 12:17:52 +0100 (Tue, 27 Nov 2007)
Log Message:
-----------
Particles
=========
- Fix for bug #7840: adding particle system to nurbs, curves crashes.
Now simply doesn't allow to add a particle system to a non-mesh
object, the current code does not support it.
- Fix for bug #7834: deleting vertices of an object with a particle
system crashes. Fixed by disabling particle display for objects in
editmode.
- Fix for the particle add brush on subsurfed objects.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/modifier.c
trunk/blender/source/blender/blenkernel/intern/particle.c
trunk/blender/source/blender/blenkernel/intern/particle_system.c
trunk/blender/source/blender/src/buttons_object.c
trunk/blender/source/blender/src/drawobject.c
trunk/blender/source/blender/src/editparticle.c
Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c 2007-11-27 09:59:18 UTC (rev 12686)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c 2007-11-27 11:17:52 UTC (rev 12687)
@@ -5164,8 +5164,6 @@
if(psmd->flag & eParticleSystemFlag_Loaded)
psmd->flag &= ~eParticleSystemFlag_Loaded;
else{
- /* TODO PARTICLE - Added this so changing subsurf under hair updates it
- should it be done elsewhere? - Campbell */
psys->recalc |= PSYS_RECALC_HAIR;
psys->recalc |= PSYS_DISTR;
psmd->flag |= eParticleSystemFlag_DM_changed;
@@ -5179,6 +5177,9 @@
}
}
+/* disabled particles in editmode for now, until support for proper derivedmesh
+ * updates is coded */
+#if 0
static void particleSystemModifier_deformVertsEM(
ModifierData *md, Object *ob, EditMesh *editData,
DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
@@ -5191,6 +5192,7 @@
if(!derivedData) dm->release(dm);
}
+#endif
/* Particle Instance */
static void particleInstanceModifier_initData(ModifierData *md)
@@ -6757,14 +6759,18 @@
mti = INIT_TYPE(ParticleSystem);
mti->type = eModifierTypeType_OnlyDeform;
- mti->flags = eModifierTypeFlag_AcceptsMesh
+ mti->flags = eModifierTypeFlag_AcceptsMesh;
+#if 0
|eModifierTypeFlag_SupportsEditmode
|eModifierTypeFlag_EnableInEditmode;
+#endif
mti->initData = particleSystemModifier_initData;
mti->freeData = particleSystemModifier_freeData;
mti->copyData = particleSystemModifier_copyData;
mti->deformVerts = particleSystemModifier_deformVerts;
+#if 0
mti->deformVertsEM = particleSystemModifier_deformVertsEM;
+#endif
mti->requiredDataMask = particleSystemModifier_requiredDataMask;
mti = INIT_TYPE(ParticleInstance);
Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c 2007-11-27 09:59:18 UTC (rev 12686)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c 2007-11-27 11:17:52 UTC (rev 12687)
@@ -583,7 +583,7 @@
if(osface==NULL || origindex==NULL) {
/* Assume we dont need osface data */
if (index <totface) {
- printf("\tNO CD_ORIGSPACE, assuming not needed\n");
+ //printf("\tNO CD_ORIGSPACE, assuming not needed\n");
return index;
} else {
printf("\tNO CD_ORIGSPACE, error out of range\n");
@@ -645,7 +645,7 @@
/* this works for meshes with deform verts only - constructive modifiers wont work properly*/
float temp1[3];
- if(index_dmcache == DMCACHE_ISCHILD && index >= dm->getNumFaces(dm)) {
+ if(index >= dm->getNumFaces(dm)) {
PARTICLE_ERROR(nor, vec);
return;
}
Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c 2007-11-27 09:59:18 UTC (rev 12686)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c 2007-11-27 11:17:52 UTC (rev 12687)
@@ -4006,7 +4006,7 @@
{
ParticleSettings *part = psys->part;
- if(psys->recalc & PSYS_DISTR){
+ if(psys->recalc & PSYS_DISTR) {
/* need this for changing subsurf levels */
psys_calc_dmfaces(ob, psmd->dm, psys);
}
Modified: trunk/blender/source/blender/src/buttons_object.c
===================================================================
--- trunk/blender/source/blender/src/buttons_object.c 2007-11-27 09:59:18 UTC (rev 12686)
+++ trunk/blender/source/blender/src/buttons_object.c 2007-11-27 11:17:52 UTC (rev 12687)
@@ -4656,7 +4656,7 @@
ob=OBACT;
- if(ob) {
+ if(ob && ob->type==OB_MESH) {
object_panel_particle_system(ob);
psys=psys_get_current(ob);
Modified: trunk/blender/source/blender/src/drawobject.c
===================================================================
--- trunk/blender/source/blender/src/drawobject.c 2007-11-27 09:59:18 UTC (rev 12686)
+++ trunk/blender/source/blender/src/drawobject.c 2007-11-27 11:17:52 UTC (rev 12687)
@@ -5038,7 +5038,7 @@
if(ob->pd && ob->pd->forcefield) draw_forcefield(ob);
/* code for new particle system */
- if(warning_recursive==0 && (flag & DRAW_PICKING)==0){
+ if(warning_recursive==0 && (flag & DRAW_PICKING)==0 && ob!=G.obedit){
glDepthMask(GL_FALSE);
if(col || (ob->flag & SELECT)) cpack(0xFFFFFF); /* for visibility, also while wpaint */
if(ob->particlesystem.first) {
Modified: trunk/blender/source/blender/src/editparticle.c
===================================================================
--- trunk/blender/source/blender/src/editparticle.c 2007-11-27 09:59:18 UTC (rev 12686)
+++ trunk/blender/source/blender/src/editparticle.c 2007-11-27 11:17:52 UTC (rev 12687)
@@ -2134,7 +2134,7 @@
/* warning, returns the derived mesh face */
#if EXPERIMENTAL_DEFORM_ONLY_PAINTING
if(psys_intersect_dm(ob,dm,0,co1,co2,&min_d,&add_pars[n].num,add_pars[n].fuv,0,0,0,0)) {
- add_pars[n].num_dmcache= psys_particle_dm_face_lookup(ob,dm,add_pars[n].num,add_pars[n].fuv,NULL);
+ add_pars[n].num_dmcache= psys_particle_dm_face_lookup(ob,psmd->dm,add_pars[n].num,add_pars[n].fuv,NULL);
n++;
}
#else
More information about the Bf-blender-cvs
mailing list