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:
Diffstat (limited to 'source/blender/blenkernel/intern/particle_system.c')
-rw-r--r--source/blender/blenkernel/intern/particle_system.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index d97a217a734..bd854a427d0 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -2779,18 +2779,18 @@ void BKE_psys_collision_neartest_cb(void *userdata,
ParticleCollision *col = (ParticleCollision *)userdata;
ParticleCollisionElement pce;
const MVertTri *vt = &col->md->tri[index];
- MVert *x = col->md->x;
- MVert *v = col->md->current_v;
+ float(*x)[3] = col->md->x;
+ float(*v)[3] = col->md->current_v;
float t = hit->dist / col->original_ray_length;
int collision = 0;
- pce.x[0] = x[vt->tri[0]].co;
- pce.x[1] = x[vt->tri[1]].co;
- pce.x[2] = x[vt->tri[2]].co;
+ pce.x[0] = x[vt->tri[0]];
+ pce.x[1] = x[vt->tri[1]];
+ pce.x[2] = x[vt->tri[2]];
- pce.v[0] = v[vt->tri[0]].co;
- pce.v[1] = v[vt->tri[1]].co;
- pce.v[2] = v[vt->tri[2]].co;
+ pce.v[0] = v[vt->tri[0]];
+ pce.v[1] = v[vt->tri[1]];
+ pce.v[2] = v[vt->tri[2]];
pce.tot = 3;
pce.inside = 0;
@@ -3307,7 +3307,6 @@ static void hair_create_input_mesh(ParticleSimulationData *sim,
ParticleSystem *psys = sim->psys;
ParticleSettings *part = psys->part;
Mesh *mesh;
- MVert *mvert;
MEdge *medge;
MDeformVert *dvert;
HairKey *key;
@@ -3321,7 +3320,7 @@ static void hair_create_input_mesh(ParticleSimulationData *sim,
if (!mesh) {
*r_mesh = mesh = BKE_mesh_new_nomain(totpoint, totedge, 0, 0, 0);
}
- mvert = BKE_mesh_verts_for_write(mesh);
+ float(*positions)[3] = BKE_mesh_positions_for_write(mesh);
medge = BKE_mesh_edges_for_write(mesh);
dvert = BKE_mesh_deform_verts_for_write(mesh);
@@ -3345,6 +3344,8 @@ static void hair_create_input_mesh(ParticleSimulationData *sim,
psys->clmd->sim_parms->vgroup_mass = 1;
+ int vert_index = 0;
+
/* XXX placeholder for more flexible future hair settings */
hair_radius = part->size;
@@ -3383,16 +3384,16 @@ static void hair_create_input_mesh(ParticleSimulationData *sim,
hair->radius = hair_radius;
hair->bending_stiffness = bending_stiffness;
- add_v3_v3v3(mvert->co, co, co);
- sub_v3_v3(mvert->co, co_next);
- mul_m4_v3(hairmat, mvert->co);
+ add_v3_v3v3(positions[vert_index], co, co);
+ sub_v3_v3(positions[vert_index], co_next);
+ mul_m4_v3(hairmat, positions[vert_index]);
medge->v1 = pa->hair_index - 1;
medge->v2 = pa->hair_index;
dvert = hair_set_pinning(dvert, 1.0f);
- mvert++;
+ vert_index++;
medge++;
}
@@ -3404,8 +3405,8 @@ static void hair_create_input_mesh(ParticleSimulationData *sim,
hair->radius = hair_radius;
hair->bending_stiffness = bending_stiffness;
- copy_v3_v3(mvert->co, co);
- mul_m4_v3(hairmat, mvert->co);
+ copy_v3_v3(positions[vert_index], co);
+ mul_m4_v3(hairmat, positions[vert_index]);
if (k) {
medge->v1 = pa->hair_index + k - 1;
@@ -3420,7 +3421,7 @@ static void hair_create_input_mesh(ParticleSimulationData *sim,
dvert = hair_set_pinning(dvert, 1.0f);
}
- mvert++;
+ vert_index++;
if (k) {
medge++;
}