[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24305] trunk/blender: particle vertex group UI

Campbell Barton ideasman42 at gmail.com
Wed Nov 4 13:09:02 CET 2009


Revision: 24305
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24305
Author:   campbellbarton
Date:     2009-11-04 13:09:02 +0100 (Wed, 04 Nov 2009)

Log Message:
-----------
particle vertex group UI
Changed RNA vgroup access to use strings (string functions adjust the ints used internally)

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_particle.py
    trunk/blender/source/blender/makesdna/DNA_particle_types.h
    trunk/blender/source/blender/makesrna/intern/rna_particle.c

Modified: trunk/blender/release/scripts/ui/properties_particle.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_particle.py	2009-11-04 11:30:48 UTC (rev 24304)
+++ trunk/blender/release/scripts/ui/properties_particle.py	2009-11-04 12:09:02 UTC (rev 24305)
@@ -930,63 +930,64 @@
     def draw(self, context):
         layout = self.layout
 
+        ob = context.object
         psys = context.particle_system
         part = psys.settings
 
-        layout.itemL(text="Nothing here yet.")
+        # layout.itemL(text="Nothing here yet.")
 
-        #row = layout.row()
-        #row.itemL(text="Vertex Group")
-        #row.itemL(text="Negate")
+        row = layout.row()
+        row.itemL(text="Vertex Group")
+        row.itemL(text="Negate")
 
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_density")
-        #row.itemR(psys, "vertex_group_density_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_density", ob, "vertex_groups", text="Density")
+        row.itemR(psys, "vertex_group_density_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_velocity")
-        #row.itemR(psys, "vertex_group_velocity_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_velocity", ob, "vertex_groups", text="Velocity")
+        row.itemR(psys, "vertex_group_velocity_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_length")
-        #row.itemR(psys, "vertex_group_length_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_length", ob, "vertex_groups", text="Length")
+        row.itemR(psys, "vertex_group_length_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_clump")
-        #row.itemR(psys, "vertex_group_clump_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump")
+        row.itemR(psys, "vertex_group_clump_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_kink")
-        #row.itemR(psys, "vertex_group_kink_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink")
+        row.itemR(psys, "vertex_group_kink_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_roughness1")
-        #row.itemR(psys, "vertex_group_roughness1_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_roughness1", ob, "vertex_groups", text="Roughness 1")
+        row.itemR(psys, "vertex_group_roughness1_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_roughness2")
-        #row.itemR(psys, "vertex_group_roughness2_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_roughness2", ob, "vertex_groups", text="Roughness 2")
+        row.itemR(psys, "vertex_group_roughness2_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_roughness_end")
-        #row.itemR(psys, "vertex_group_roughness_end_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End")
+        row.itemR(psys, "vertex_group_roughness_end_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_size")
-        #row.itemR(psys, "vertex_group_size_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_size", ob, "vertex_groups", text="Size")
+        row.itemR(psys, "vertex_group_size_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_tangent")
-        #row.itemR(psys, "vertex_group_tangent_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_tangent", ob, "vertex_groups", text="Tangent")
+        row.itemR(psys, "vertex_group_tangent_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_rotation")
-        #row.itemR(psys, "vertex_group_rotation_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_rotation", ob, "vertex_groups", text="Rotation")
+        row.itemR(psys, "vertex_group_rotation_negate", text="")
 
-        #row = layout.row()
-        #row.itemR(psys, "vertex_group_field")
-        #row.itemR(psys, "vertex_group_field_negate", text="")
+        row = layout.row()
+        row.item_pointerR(psys, "vertex_group_field", ob, "vertex_groups", text="Field")
+        row.itemR(psys, "vertex_group_field_negate", text="")
 
 bpy.types.register(PARTICLE_PT_particles)
 bpy.types.register(PARTICLE_PT_hair_dynamics)

Modified: trunk/blender/source/blender/makesdna/DNA_particle_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_particle_types.h	2009-11-04 11:30:48 UTC (rev 24304)
+++ trunk/blender/source/blender/makesdna/DNA_particle_types.h	2009-11-04 12:09:02 UTC (rev 24305)
@@ -231,7 +231,7 @@
 	char bb_uvname[3][32];					/* billboard uv name */
 
 	/* if you change these remember to update array lengths to PSYS_TOT_VG! */
-	short vgroup[12], vg_neg, rt3;			/* vertex groups */
+	short vgroup[12], vg_neg, rt3;			/* vertex groups, 0==disable, 1==starting index */
 
 	/* temporary storage during render */
 	void *renderdata;

Modified: trunk/blender/source/blender/makesrna/intern/rna_particle.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_particle.c	2009-11-04 11:30:48 UTC (rev 24304)
+++ trunk/blender/source/blender/makesrna/intern/rna_particle.c	2009-11-04 12:09:02 UTC (rev 24305)
@@ -98,6 +98,7 @@
 
 #include "BKE_context.h"
 #include "BKE_cloth.h"
+#include "BKE_deform.h"
 #include "BKE_depsgraph.h"
 #include "BKE_effect.h"
 #include "BKE_modifier.h"
@@ -553,7 +554,94 @@
 	return rna_pointer_inherit_refine(ptr, &RNA_FieldSettings, part->pd2);
 }
 
+static void psys_vg_name_get__internal(PointerRNA *ptr, char *value, int index)
+{
+	Object *ob= ptr->id.data;
+	ParticleSystem *psys= (ParticleSystem*)ptr->data;
 
+	if(psys->vgroup[index] > 0) {
+		bDeformGroup *defGroup= BLI_findlink(&ob->defbase, psys->vgroup[index]-1);
+
+		if(defGroup) {
+			strcpy(value, defGroup->name);
+			return;
+		}
+	}
+
+	value[0]= '\0';
+}
+static int psys_vg_name_len__internal(PointerRNA *ptr, int index)
+{
+	Object *ob= ptr->id.data;
+	ParticleSystem *psys= (ParticleSystem*)ptr->data;
+
+	if(psys->vgroup[index] > 0) {
+		bDeformGroup *defGroup= BLI_findlink(&ob->defbase, psys->vgroup[index]-1);
+
+		if(defGroup) {
+			return strlen(defGroup->name);
+		}
+	}
+	return 0;
+}
+static void psys_vg_name_set__internal(PointerRNA *ptr, const char *value, int index)
+{
+	Object *ob= ptr->id.data;
+	ParticleSystem *psys= (ParticleSystem*)ptr->data;
+
+	if(value[0]=='\0') {
+		psys->vgroup[index]= 0;
+	}
+	else {
+		int vgroup_num = get_named_vertexgroup_num(ob, value);
+
+		if(vgroup_num == -1)
+			return;
+
+		psys->vgroup[index]= vgroup_num + 1;
+	}
+}
+
+/* irritating string functions for each index :/ */
+static void rna_ParticleVGroup_name_get_0(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 0); }
+static void rna_ParticleVGroup_name_get_1(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 1); }
+static void rna_ParticleVGroup_name_get_2(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 2); }
+static void rna_ParticleVGroup_name_get_3(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 3); }
+static void rna_ParticleVGroup_name_get_4(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 4); }
+static void rna_ParticleVGroup_name_get_5(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 5); }
+static void rna_ParticleVGroup_name_get_6(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 6); }
+static void rna_ParticleVGroup_name_get_7(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 7); }
+static void rna_ParticleVGroup_name_get_8(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 8); }
+static void rna_ParticleVGroup_name_get_9(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 9); }
+static void rna_ParticleVGroup_name_get_10(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 10); }
+static void rna_ParticleVGroup_name_get_11(PointerRNA *ptr, char *value) { psys_vg_name_get__internal(ptr, value, 11); }
+
+static int rna_ParticleVGroup_name_len_0(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 0); }
+static int rna_ParticleVGroup_name_len_1(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 1); }
+static int rna_ParticleVGroup_name_len_2(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 2); }
+static int rna_ParticleVGroup_name_len_3(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 3); }
+static int rna_ParticleVGroup_name_len_4(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 4); }
+static int rna_ParticleVGroup_name_len_5(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 5); }
+static int rna_ParticleVGroup_name_len_6(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 6); }
+static int rna_ParticleVGroup_name_len_7(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 7); }
+static int rna_ParticleVGroup_name_len_8(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 8); }
+static int rna_ParticleVGroup_name_len_9(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 9); }
+static int rna_ParticleVGroup_name_len_10(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 10); }
+static int rna_ParticleVGroup_name_len_11(PointerRNA *ptr) { return psys_vg_name_len__internal(ptr, 11); }
+
+static void rna_ParticleVGroup_name_set_0(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 0); }
+static void rna_ParticleVGroup_name_set_1(PointerRNA *ptr, const char *value) { psys_vg_name_set__internal(ptr, value, 1); }

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list