[Bf-blender-cvs] [0df6175] temp-mball-refactor: cleanup: use realloc & store co/no as float(*)[3]
Campbell Barton
noreply at git.blender.org
Fri Feb 27 16:52:18 CET 2015
Commit: 0df6175f829da1319e3d38a6fe53a5eba17d54cc
Author: Campbell Barton
Date: Sat Feb 28 02:42:03 2015 +1100
Branches: temp-mball-refactor
https://developer.blender.org/rB0df6175f829da1319e3d38a6fe53a5eba17d54cc
cleanup: use realloc & store co/no as float(*)[3]
===================================================================
M source/blender/blenkernel/intern/mball_tessellate.c
===================================================================
diff --git a/source/blender/blenkernel/intern/mball_tessellate.c b/source/blender/blenkernel/intern/mball_tessellate.c
index 55b6ee9..c6416ab 100644
--- a/source/blender/blenkernel/intern/mball_tessellate.c
+++ b/source/blender/blenkernel/intern/mball_tessellate.c
@@ -127,7 +127,7 @@ typedef struct process { /* parameters, storage */
unsigned int totindex; /* size of memory allocated for indices */
unsigned int curindex; /* number of currently added indices */
- float *co, *no; /* surface vertices - positions and normals */
+ float (*co)[3], (*no)[3]; /* surface vertices - positions and normals */
unsigned int totvertex; /* memory size */
unsigned int curvertex; /* currently added vertices */
@@ -826,33 +826,16 @@ static int getedge(EDGELIST *table[],
/**
* Adds a vertex, expands memory if needed.
*/
-static void addtovertices(PROCESS *process, float v[3], float no[3])
+static void addtovertices(PROCESS *process, const float v[3], const float no[3])
{
- float *newco, *newno;
-
if (process->curvertex == process->totvertex) {
process->totvertex += 4096;
- newco = MEM_callocN(process->totvertex * sizeof(float) * 3, "addtovertices");
- newno = MEM_callocN(process->totvertex * sizeof(float) * 3, "addtovertices");
-
- if (process->co) {
- memcpy(newco, process->co, process->curvertex * sizeof(float) * 3);
- memcpy(newno, process->no, process->curvertex * sizeof(float) * 3);
- MEM_freeN(process->co);
- MEM_freeN(process->no);
- }
-
- process->co = newco;
- process->no = newno;
+ process->co = MEM_reallocN(process->co, process->totvertex * sizeof(float[3]));
+ process->no = MEM_reallocN(process->no, process->totvertex * sizeof(float[3]));
}
- process->co[3 * process->curvertex] = v[0];
- process->co[3 * process->curvertex + 1] = v[1];
- process->co[3 * process->curvertex + 2] = v[2];
-
- process->no[3 * process->curvertex] = no[0];
- process->no[3 * process->curvertex + 1] = no[1];
- process->no[3 * process->curvertex + 2] = no[2];
+ copy_v3_v3(process->co[process->curvertex], v);
+ copy_v3_v3(process->no[process->curvertex], no);
process->curvertex++;
}
@@ -1316,11 +1299,11 @@ void BKE_mball_polygonize(EvaluationContext *eval_ctx, Scene *scene, Object *ob,
dl->index = process.indices;
for (a = 0; a < process.curvertex; a++) {
- normalize_v3(&process.no[a * 3]);
+ normalize_v3(process.no[a]);
}
- dl->verts = process.co;
- dl->nors = process.no;
+ dl->verts = (float *)process.co;
+ dl->nors = (float *)process.no;
}
}
}
More information about the Bf-blender-cvs
mailing list