[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