Commit: 82132fc5b031b49b5d9f73c4732a11906be6cbc1
Author: Lukas Tönne
Date:   Wed Sep 24 15:58:53 2014 +0200
Branches: strand_editmode
https://developer.blender.org/rB82132fc5b031b49b5d9f73c4732a11906be6cbc1

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;
                }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to