Commit: 91fd0a487d95e604c1c245905895123eeaf2ca0e
Author: Lukas Tönne
Date:   Fri Aug 11 08:57:04 2017 +0100
Branches: strand_editmode
https://developer.blender.org/rB91fd0a487d95e604c1c245905895123eeaf2ca0e

Store pointer into the hair follicle array in hair groups directly.

This creates a dependency of the hair groups on the validity of the pattern,
so care has to be taken to always update the groups when the pattern changes.

===================================================================

M       source/blender/blenkernel/BKE_hair.h
M       source/blender/blenkernel/intern/hair.c
M       source/blender/makesdna/DNA_hair_types.h

===================================================================

diff --git a/source/blender/blenkernel/BKE_hair.h 
b/source/blender/blenkernel/BKE_hair.h
index c399c78a735..1c079168500 100644
--- a/source/blender/blenkernel/BKE_hair.h
+++ b/source/blender/blenkernel/BKE_hair.h
@@ -105,8 +105,8 @@ void BKE_hair_batch_cache_dirty(struct HairGroup *group, 
int mode);
 void BKE_hair_batch_cache_free(struct HairGroup *group);
 
 int* BKE_hair_get_fiber_lengths(struct HairGroup *group, int subdiv);
-void BKE_hair_group_get_texture_buffer_size(struct HairPattern *hair, struct 
HairGroup *group, int subdiv, int *r_size,
+void BKE_hair_group_get_texture_buffer_size(struct HairGroup *group, int 
subdiv, int *r_size,
                                             int *r_strand_map_start, int 
*r_strand_vertex_start, int *r_fiber_start);
-void BKE_hair_group_get_texture_buffer(struct HairPattern *hair, struct 
HairGroup *group, struct DerivedMesh *scalp, int subdiv, void *texbuffer);
+void BKE_hair_group_get_texture_buffer(struct HairGroup *group, struct 
DerivedMesh *scalp, int subdiv, void *texbuffer);
 
 #endif
diff --git a/source/blender/blenkernel/intern/hair.c 
b/source/blender/blenkernel/intern/hair.c
index c559d994c90..9c01fcbf788 100644
--- a/source/blender/blenkernel/intern/hair.c
+++ b/source/blender/blenkernel/intern/hair.c
@@ -234,7 +234,7 @@ static void get_strand_vertices(const 
HairDrawDataInterface* hairdata_, float (*
        }
 }
 
-static HairGroupStrandsView hair_strands_get_view(HairPattern *hair, HairGroup 
*group)
+static HairGroupStrandsView hair_strands_get_view(HairGroup *group)
 {
        HairGroupStrandsView hairdata;
        hairdata.base.get_num_strands = get_num_strands;
@@ -251,7 +251,6 @@ static HairGroupStrandsView 
hair_strands_get_view(HairPattern *hair, HairGroup *
                }
                case HAIR_GROUP_TYPE_STRANDS: {
                        // TODO
-                       UNUSED_VARS(hair);
                        hairdata.numstrands = 0;
                        hairdata.numverts_orig = 0;
                        break;
@@ -261,18 +260,17 @@ static HairGroupStrandsView 
hair_strands_get_view(HairPattern *hair, HairGroup *
        return hairdata;
 }
 
-void BKE_hair_group_get_texture_buffer_size(HairPattern *hair, HairGroup 
*group, int subdiv,
+void BKE_hair_group_get_texture_buffer_size(HairGroup *group, int subdiv,
                                             int *r_size, int 
*r_strand_map_start,
                                             int *r_strand_vertex_start, int 
*r_fiber_start)
 {
-       HairGroupStrandsView hairdata = hair_strands_get_view(hair, group);
+       HairGroupStrandsView hairdata = hair_strands_get_view(group);
        BKE_hair_strands_get_texture_buffer_size(&hairdata.base, 
group->num_follicles, subdiv,
                                                 r_size, r_strand_map_start, 
r_strand_vertex_start, r_fiber_start);
 }
 
-void BKE_hair_group_get_texture_buffer(HairPattern *hair, HairGroup *group,
-                                       DerivedMesh *scalp, int subdiv, void 
*buffer)
+void BKE_hair_group_get_texture_buffer(HairGroup *group, DerivedMesh *scalp, 
int subdiv, void *buffer)
 {
-       HairGroupStrandsView hairdata = hair_strands_get_view(hair, group);
+       HairGroupStrandsView hairdata = hair_strands_get_view(group);
        BKE_hair_strands_get_texture_buffer(&hairdata.base, scalp, NULL, 0, 
subdiv, buffer);
 }
diff --git a/source/blender/makesdna/DNA_hair_types.h 
b/source/blender/makesdna/DNA_hair_types.h
index a902858eb23..3095ecc91fb 100644
--- a/source/blender/makesdna/DNA_hair_types.h
+++ b/source/blender/makesdna/DNA_hair_types.h
@@ -57,8 +57,9 @@ typedef struct HairGroup {
        
        char name[64]; /* MAX_NAME */
        int type;
+       int pad;
        
-       int follicle_start;
+       struct HairFollicle *follicles;
        int num_follicles;
        
        /* NORMALS */

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

Reply via email to