[Bf-blender-cvs] [623f180537c] hair_object: Explicit object pointer needed for scalp access functions in RNA.

Lukas Tönne noreply at git.blender.org
Sun Sep 2 12:40:41 CEST 2018


Commit: 623f180537ca421832ea871782c6a2719ad79ec9
Author: Lukas Tönne
Date:   Sun Sep 2 11:40:13 2018 +0100
Branches: hair_object
https://developer.blender.org/rB623f180537ca421832ea871782c6a2719ad79ec9

Explicit object pointer needed for scalp access functions in RNA.

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

M	intern/cycles/blender/blender_curves.cpp
M	intern/cycles/blender/blender_mesh.cpp
M	intern/cycles/blender/blender_sync.h
M	source/blender/blenkernel/intern/hair.c
M	source/blender/makesrna/intern/rna_hair.c

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

diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index d27df4237fe..b6ea9ee0a2c 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -296,8 +296,7 @@ static void ObtainCacheVColFromParticleSystem(BL::Mesh *b_mesh,
 	}
 }
 
-static void ObtainCacheDataFromHairSystem(BL::Depsgraph& b_depsgraph,
-                                          BL::Object *b_ob,
+static void ObtainCacheDataFromHairSystem(BL::Object *b_ob,
                                           BL::HairSystem *b_hsys,
                                           BL::Mesh *b_scalp,
                                           bool /*background*/,
@@ -407,7 +406,6 @@ static void ObtainCacheDataFromHairSystem(BL::Depsgraph& b_depsgraph,
 }
 
 static bool ObtainCacheDataFromObject(Mesh *mesh,
-                                      BL::Depsgraph& b_depsgraph,
                                       BL::Object *b_ob,
                                       ParticleCurveData *CData,
                                       bool background)
@@ -421,10 +419,9 @@ static bool ObtainCacheDataFromObject(Mesh *mesh,
 	if(b_ob->type() == BL::Object::type_HAIR) {
 		BL::HairSystem b_hsys(b_ob->data());
 		
-		BL::Mesh b_scalp(b_hsys.scalp_object().data());
+		BL::Mesh b_scalp(b_hsys.get_scalp_object(*b_ob).data());
 		if (b_scalp) {
-			ObtainCacheDataFromHairSystem(b_depsgraph,
-			                              b_ob,
+			ObtainCacheDataFromHairSystem(b_ob,
 			                              &b_hsys,
 			                              &b_scalp,
 			                              background,
@@ -1055,7 +1052,6 @@ void BlenderSync::sync_curve_settings()
 }
 
 void BlenderSync::sync_curves(Mesh *mesh,
-                              BL::Depsgraph& b_depsgraph,
                               BL::Mesh& b_mesh,
                               BL::Object& b_ob,
                               bool motion,
@@ -1090,7 +1086,7 @@ void BlenderSync::sync_curves(Mesh *mesh,
 
 	ParticleCurveData CData;
 
-	ObtainCacheDataFromObject(mesh, b_depsgraph, &b_ob, &CData, !preview);
+	ObtainCacheDataFromObject(mesh, &b_ob, &CData, !preview);
 
 	/* add hair geometry to mesh */
 	if(primitive == CURVE_TRIANGLES) {
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 062356fb01f..1d0e8fc6ace 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -1191,7 +1191,7 @@ Mesh *BlenderSync::sync_mesh(BL::Depsgraph& b_depsgraph,
 		}
 
 		if(view_layer.use_hair && mesh->subdivision_type == Mesh::SUBDIVISION_NONE)
-			sync_curves(mesh, b_depsgraph, b_mesh, b_ob, false);
+			sync_curves(mesh, b_mesh, b_ob, false);
 
 		if(b_mesh) {
 			/* free derived mesh */
@@ -1369,7 +1369,7 @@ void BlenderSync::sync_mesh_motion(BL::Depsgraph& b_depsgraph,
 
 	/* hair motion */
 	if(numkeys)
-		sync_curves(mesh, b_depsgraph, b_mesh, b_ob, true, motion_step);
+		sync_curves(mesh, b_mesh, b_ob, true, motion_step);
 
 	/* free derived mesh */
 	b_data.meshes.remove(b_mesh, false, true, false);
diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h
index 7f561398c07..e63ef9e5e47 100644
--- a/intern/cycles/blender/blender_sync.h
+++ b/intern/cycles/blender/blender_sync.h
@@ -119,7 +119,6 @@ private:
 	                bool object_updated,
 	                bool hide_tris);
 	void sync_curves(Mesh *mesh,
-	                 BL::Depsgraph& b_depsgraph,
 	                 BL::Mesh& b_mesh,
 	                 BL::Object& b_ob,
 	                 bool motion,
diff --git a/source/blender/blenkernel/intern/hair.c b/source/blender/blenkernel/intern/hair.c
index 7c10e160055..8d635c47b29 100644
--- a/source/blender/blenkernel/intern/hair.c
+++ b/source/blender/blenkernel/intern/hair.c
@@ -250,8 +250,7 @@ struct Object* BKE_hair_get_scalp_object(
 	/* TODO add scalp mode and optional object pointer */
 	UNUSED_VARS(hsys);
 
-	if (ob->parent && ob->parent->type == OB_MESH)
-	{
+	if (ob->parent && ob->parent->type == OB_MESH) {
 		return ob->parent;
 	}
 
diff --git a/source/blender/makesrna/intern/rna_hair.c b/source/blender/makesrna/intern/rna_hair.c
index e34a282f690..291c9256731 100644
--- a/source/blender/makesrna/intern/rna_hair.c
+++ b/source/blender/makesrna/intern/rna_hair.c
@@ -75,23 +75,18 @@ static void rna_HairDrawSettings_update(Main *UNUSED(bmain), Scene *UNUSED(scene
 	WM_main_add_notifier(NC_OBJECT | ND_DRAW, ptr->id.data);
 }
 
-static PointerRNA rna_HairSystem_scalp_object_get(PointerRNA *ptr)
+static PointerRNA rna_HairSystem_get_scalp_object(HairSystem *hsys, Object *object)
 {
-	Object *ob = ptr->id.data;
-	HairSystem *hsys = ptr->data;
 	PointerRNA r_ptr;
-
-	Object *scalp_ob = BKE_hair_get_scalp_object(ob, hsys);
+	Object *scalp_ob = BKE_hair_get_scalp_object(object, hsys);
 	RNA_id_pointer_create(&scalp_ob->id, &r_ptr);
 	return r_ptr;
 }
 
-static PointerRNA rna_HairSystem_get_scalp(ID *id_ptr, HairSystem *hsys, struct bContext *C)
+static PointerRNA rna_HairSystem_get_scalp_mesh(HairSystem *hsys, struct bContext *C, Object *object)
 {
-	Object *ob = (Object *)id_ptr;
 	PointerRNA r_ptr;
-
-	Mesh *scalp = BKE_hair_get_scalp(CTX_data_depsgraph(C), ob, hsys);
+	Mesh *scalp = BKE_hair_get_scalp(CTX_data_depsgraph(C), object, hsys);
 	RNA_id_pointer_create(&scalp->id, &r_ptr);
 	return r_ptr;
 }
@@ -162,14 +157,17 @@ static void rna_def_hair_system(BlenderRNA *brna)
 	RNA_def_property_struct_type(prop, "HairPattern");
 	RNA_def_property_ui_text(prop, "Pattern", "Hair pattern");
 
-	prop = RNA_def_property(srna, "scalp_object", PROP_POINTER, PROP_NONE);
-	RNA_def_property_struct_type(prop, "Object");
-	RNA_def_property_clear_flag(prop, PROP_EDITABLE);
-	RNA_def_property_pointer_funcs(prop, "rna_HairSystem_scalp_object_get", NULL, NULL, NULL);
-	RNA_def_property_ui_text(prop, "Scalp object", "Object that generates the scalp mesh");
+	func = RNA_def_function(srna, "get_scalp_object", "rna_HairSystem_get_scalp_object");
+	parm = RNA_def_pointer(func, "object", "Object", "Object", "Object containing the hair system");
+	RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+	parm = RNA_def_pointer(func, "scalp_object", "Object", "Scalp Object", "Object that generates the scalp mesh");
+	RNA_def_function_return(func, parm);
+	RNA_def_parameter_flags(parm, 0, PARM_RNAPTR);
 
-	func = RNA_def_function(srna, "get_scalp", "rna_HairSystem_get_scalp");
-	RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_SELF_ID);
+	func = RNA_def_function(srna, "get_scalp_mesh", "rna_HairSystem_get_scalp_mesh");
+	RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+	parm = RNA_def_pointer(func, "object", "Object", "Object", "Object containing the hair system");
+	RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
 	parm = RNA_def_pointer(func, "scalp", "Mesh", "Scalp", "Scalp mesh used for hair placement");
 	RNA_def_function_return(func, parm);
 	RNA_def_parameter_flags(parm, 0, PARM_RNAPTR);



More information about the Bf-blender-cvs mailing list