Fix T66525: Wrong apply scale for children chain
The operator did not behave correct when there was a chain of parents longer than 1.
This commit is contained in:
		@@ -465,6 +465,7 @@ static void ignore_parent_tx(Main *bmain, Depsgraph *depsgraph, Scene *scene, Ob
 | 
			
		||||
{
 | 
			
		||||
  Object workob;
 | 
			
		||||
  Object *ob_child;
 | 
			
		||||
  Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
 | 
			
		||||
 | 
			
		||||
  /* a change was made, adjust the children to compensate */
 | 
			
		||||
  for (ob_child = bmain->objects.first; ob_child; ob_child = ob_child->id.next) {
 | 
			
		||||
@@ -475,6 +476,10 @@ static void ignore_parent_tx(Main *bmain, Depsgraph *depsgraph, Scene *scene, Ob
 | 
			
		||||
      invert_m4_m4(ob_child->parentinv, workob.obmat);
 | 
			
		||||
      /* Copy result of BKE_object_apply_mat4(). */
 | 
			
		||||
      BKE_object_transform_copy(ob_child, ob_child_eval);
 | 
			
		||||
      /* Make sure evaluated object is in a consistent state with the original one.
 | 
			
		||||
       * It might be needed for applying transform on its children. */
 | 
			
		||||
      copy_m4_m4(ob_child_eval->parentinv, ob_child->parentinv);
 | 
			
		||||
      BKE_object_eval_transform_all(depsgraph, scene_eval, ob_child_eval);
 | 
			
		||||
      /* Tag for update.
 | 
			
		||||
       * This is because parent matrix did change, so in theory the child object might now be
 | 
			
		||||
       * evaluated to a different location in another editing context. */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user