[Bf-blender-cvs] [91fd0a487d9] strand_editmode: Store pointer into the hair follicle array in hair groups directly.

Lukas Tönne noreply at git.blender.org
Mon Aug 14 09:23:24 CEST 2017


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 */




More information about the Bf-blender-cvs mailing list