[Bf-blender-cvs] [5861acf] hair_immediate_fixes: Added generalized method for creating an array of mesh samples with arbitrary stride.
Lukas Tönne
noreply at git.blender.org
Sat Dec 27 11:31:33 CET 2014
Commit: 5861acfd2f751d8615ca02bf2608e4c503f7e257
Author: Lukas Tönne
Date: Wed Sep 24 15:58:53 2014 +0200
Branches: hair_immediate_fixes
https://developer.blender.org/rB5861acfd2f751d8615ca02bf2608e4c503f7e257
Added generalized method for creating an array of mesh samples with
arbitrary stride.
===================================================================
M source/blender/blenkernel/BKE_mesh_sample.h
M source/blender/blenkernel/intern/mesh_sample.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_mesh_sample.h b/source/blender/blenkernel/BKE_mesh_sample.h
index 6a0a892..9706bfc 100644
--- a/source/blender/blenkernel/BKE_mesh_sample.h
+++ b/source/blender/blenkernel/BKE_mesh_sample.h
@@ -76,5 +76,6 @@ void BKE_mesh_sample_info_random(struct MSurfaceSampleInfo *info, struct Derived
void BKE_mesh_sample_info_release(struct MSurfaceSampleInfo *info);
void BKE_mesh_sample_surface_array(const struct MSurfaceSampleInfo *info, struct MSurfaceSample *samples, int totsample);
+void BKE_mesh_sample_surface_array_stride(const struct MSurfaceSampleInfo *info, struct MSurfaceSample *first, int stride, int totsample);
#endif /* __BKE_MESH_SAMPLE_H__ */
diff --git a/source/blender/blenkernel/intern/mesh_sample.c b/source/blender/blenkernel/intern/mesh_sample.c
index c105ffa..a1c3e71 100644
--- a/source/blender/blenkernel/intern/mesh_sample.c
+++ b/source/blender/blenkernel/intern/mesh_sample.c
@@ -44,7 +44,7 @@
bool BKE_mesh_sample_eval(DerivedMesh *dm, const MSurfaceSample *sample, float loc[3], float nor[3])
{
MVert *mverts = dm->getVertArray(dm);
- int totverts = dm->getNumVerts(dm);
+ unsigned int totverts = (unsigned int)dm->getNumVerts(dm);
MVert *v1, *v2, *v3;
float vnor[3];
@@ -157,13 +157,18 @@ static void mesh_sample_surface_random(const MSurfaceSampleInfo *info, MSurfaceS
void BKE_mesh_sample_surface_array(const MSurfaceSampleInfo *info, MSurfaceSample *samples, int totsample)
{
+ BKE_mesh_sample_surface_array_stride(info, samples, (int)sizeof(MSurfaceSample), totsample);
+}
+
+void BKE_mesh_sample_surface_array_stride(const struct MSurfaceSampleInfo *info, struct MSurfaceSample *first, int stride, int totsample)
+{
MSurfaceSample *sample;
int i;
switch (info->algorithm) {
case MSS_RANDOM: {
DM_ensure_tessface(info->dm);
- for (sample = samples, i = 0; i < totsample; ++sample, ++i)
+ for (sample = first, i = 0; i < totsample; sample = (MSurfaceSample *)((char *)sample + stride), ++i)
mesh_sample_surface_random(info, sample);
break;
}
More information about the Bf-blender-cvs
mailing list