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:
authorCampbell Barton <ideasman42@gmail.com>2020-08-13 03:09:39 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-08-13 08:41:57 +0300
commit12c24ecf6e6a7d9f29fc74b64c2974b349232494 (patch)
treed53f38b893b829674fc099c8446697e45ec18224 /source/blender/blenkernel/intern/object_dupli.c
parent51a461dcab386297d693ec238baf88f91fdcea65 (diff)
Cleanup: pass normal as a float to dupli-vert function
Needed for supporting edit-mode dupli-verts. Currently the un-scaled short values are used to avoid changing behavior (noted in comments).
Diffstat (limited to 'source/blender/blenkernel/intern/object_dupli.c')
-rw-r--r--source/blender/blenkernel/intern/object_dupli.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/source/blender/blenkernel/intern/object_dupli.c b/source/blender/blenkernel/intern/object_dupli.c
index 22643e54f94..520b1948c4f 100644
--- a/source/blender/blenkernel/intern/object_dupli.c
+++ b/source/blender/blenkernel/intern/object_dupli.c
@@ -361,8 +361,12 @@ typedef struct VertexDupliData {
float child_imat[4][4];
} VertexDupliData;
+/**
+ * \param no: The direction,
+ * currently this is copied from a `short[3]` normal without division.
+ */
static void get_duplivert_transform(const float co[3],
- const short no[3],
+ const float no[3],
const bool use_rotation,
const short axis,
const short upflag,
@@ -373,11 +377,9 @@ static void get_duplivert_transform(const float co[3],
if (use_rotation) {
/* Construct rotation matrix from normals. */
- float nor_f[3];
- nor_f[0] = (float)-no[0];
- nor_f[1] = (float)-no[1];
- nor_f[2] = (float)-no[2];
- vec_to_quat(quat, nor_f, axis, upflag);
+ float no_flip[3];
+ negate_v3_v3(no_flip, no);
+ vec_to_quat(quat, no_flip, axis, upflag);
}
else {
unit_qt(quat);
@@ -389,7 +391,7 @@ static void get_duplivert_transform(const float co[3],
static void vertex_dupli(const VertexDupliData *vdd,
int index,
const float co[3],
- const short no[3])
+ const float no[3])
{
Object *inst_ob = vdd->inst_ob;
DupliObject *dob;
@@ -426,9 +428,10 @@ static void make_child_duplis_verts(const DupliContext *ctx, void *userdata, Obj
/* Relative transform from parent to child space. */
mul_m4_m4m4(vdd->child_imat, child->imat, ctx->object->obmat);
- const MVert *mvert = me_eval->mvert;
- for (int i = 0; i < me_eval->totvert; i++) {
- vertex_dupli(vdd, i, mvert[i].co, mvert[i].no);
+ const MVert *mv = me_eval->mvert;
+ for (int i = 0; i < me_eval->totvert; i++, mv++) {
+ const float no[3] = {mv->no[0], mv->no[1], mv->no[2]};
+ vertex_dupli(vdd, i, mv->co, no);
}
}