Commit: f7b8875ed5a5e86375a119847f5cdf8d4719a62d
Author: Aleksi Juvani
Date:   Tue Jan 11 13:02:49 2022 +0100
Branches: blender-v2.83-release
https://developer.blender.org/rBf7b8875ed5a5e86375a119847f5cdf8d4719a62d

Fix `PSYS_GLOBAL_HAIR` stripped even if connecting the hair fails

After disconnecting hair on an object, if you then hide the particle system, 
and try connecting the hair again, the operator is cancelled due to 
`remap_hair_emitter` returning `false` because `target_psmd->mesh_final` is 
NULL, but `connect_hair` will still strip the `PSYS_GLOBAL_HAIR` flag, which 
will cause the hair in the hidden particle system to be positioned incorrectly. 
The correct behavior is to strip the flag only if `remap_hair_emitter` succeeds.

Differential Revision: https://developer.blender.org/D13703

===================================================================

M       source/blender/editors/physics/particle_object.c

===================================================================

diff --git a/source/blender/editors/physics/particle_object.c 
b/source/blender/editors/physics/particle_object.c
index 141315d5200..3bb7d634f2f 100644
--- a/source/blender/editors/physics/particle_object.c
+++ b/source/blender/editors/physics/particle_object.c
@@ -935,7 +935,9 @@ static bool connect_hair(Depsgraph *depsgraph, Scene 
*scene, Object *ob, Particl
                           ob->obmat,
                           psys->flag & PSYS_GLOBAL_HAIR,
                           false);
-  psys->flag &= ~PSYS_GLOBAL_HAIR;
+  if (ok) {
+    psys->flag &= ~PSYS_GLOBAL_HAIR;
+  }
 
   return ok;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to