Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-08-22 17:10:43 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-08-22 17:10:43 +0400
commit97ee630dcd18d98bb04dbcef9fdfe6bcc897ce4b (patch)
tree6589de559d9d6822c0629a59bc4e4f818ebc9e5b /source/blender/blenkernel/intern/anim.c
parent61dddcb800963390b348c977d307bec3620a443a (diff)
Fix #32201: particle size compatibility broken for object/group duplication.
After 2.63 there was a bugfix to take object scale into account for the duplicated objects, but this breaks compatibility on earlier files. Now there is an option to control if the scale should be used or not. Scale is used by default on newer files, and not used on older ones.
Diffstat (limited to 'source/blender/blenkernel/intern/anim.c')
-rw-r--r--source/blender/blenkernel/intern/anim.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c
index 33cdede6fce..6e857bacb1b 100644
--- a/source/blender/blenkernel/intern/anim.c
+++ b/source/blender/blenkernel/intern/anim.c
@@ -1469,6 +1469,18 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
quat_to_mat4(obmat, q);
obmat[3][3] = 1.0f;
+ /* add scaling if requested */
+ if ((part->draw & PART_DRAW_NO_SCALE_OB) == 0)
+ mult_m4_m4m4(obmat, obmat, size_mat);
+ }
+ else if (part->draw & PART_DRAW_NO_SCALE_OB) {
+ /* remove scaling */
+ float size_mat[4][4], original_size[3];
+
+ mat4_to_size(original_size, obmat);
+ size_to_mat4(size_mat, original_size);
+ invert_m4(size_mat);
+
mult_m4_m4m4(obmat, obmat, size_mat);
}