[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21010] branches/blender2.5/blender: RNA:
Brecht Van Lommel
brecht at blender.org
Fri Jun 19 16:56:49 CEST 2009
Revision: 21010
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21010
Author: blendix
Date: 2009-06-19 16:56:49 +0200 (Fri, 19 Jun 2009)
Log Message:
-----------
RNA:
* EditBone wrapped, using manual get/set function, and used
in the UI code. Makes the RNA wrapping code here more
complicated, but works.
Modified Paths:
--------------
branches/blender2.5/blender/release/datafiles/blenderbuttons
branches/blender2.5/blender/release/ui/buttons_data_bone.py
branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c
Modified: branches/blender2.5/blender/release/datafiles/blenderbuttons
===================================================================
(Binary files differ)
Modified: branches/blender2.5/blender/release/ui/buttons_data_bone.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_bone.py 2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/release/ui/buttons_data_bone.py 2009-06-19 14:56:49 UTC (rev 21010)
@@ -7,7 +7,7 @@
__context__ = "bone"
def poll(self, context):
- return (context.bone != None)
+ return (context.bone or context.edit_bone)
class BONE_PT_bone(BoneButtonsPanel):
__idname__ = "BONE_PT_bone"
@@ -16,6 +16,8 @@
def draw(self, context):
layout = self.layout
bone = context.bone
+ if not bone:
+ bone = context.edit_bone
split = layout.split()
@@ -40,8 +42,7 @@
sub.itemL(text="Display:")
sub.itemR(bone, "draw_wire", text="Wireframe")
- sub.itemR(bone, "editmode_hidden", text="Hide (EditMode)")
- sub.itemR(bone, "pose_channel_hidden", text="Hide (PoseMode)")
+ sub.itemR(bone, "hidden", text="Hide")
sub.itemL(text="Curved Bones:")
sub.itemR(bone, "bbone_segments", text="Segments")
@@ -50,4 +51,4 @@
sub.itemR(bone, "cyclic_offset")
-bpy.types.register(BONE_PT_bone)
\ No newline at end of file
+bpy.types.register(BONE_PT_bone)
Modified: branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c 2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c 2009-06-19 14:56:49 UTC (rev 21010)
@@ -54,6 +54,7 @@
#include "RNA_access.h"
+#include "ED_armature.h"
#include "ED_screen.h"
#include "UI_interface.h"
@@ -249,17 +250,30 @@
{
bArmature *arm;
Bone *bone;
+ EditBone *edbo;
/* if we have an armature, get the active bone */
if(buttons_context_path_data(path, OB_ARMATURE)) {
arm= path->ptr[path->len-1].data;
- bone= find_active_bone(arm->bonebase.first);
- if(bone) {
- RNA_pointer_create(&arm->id, &RNA_Bone, bone, &path->ptr[path->len]);
- path->len++;
- return 1;
+ if(arm->edbo) {
+ for(edbo=arm->edbo->first; edbo; edbo=edbo->next) {
+ if(edbo->flag & BONE_ACTIVE) {
+ RNA_pointer_create(&arm->id, &RNA_EditBone, edbo, &path->ptr[path->len]);
+ path->len++;
+ return 1;
+ }
+ }
}
+ else {
+ bone= find_active_bone(arm->bonebase.first);
+
+ if(bone) {
+ RNA_pointer_create(&arm->id, &RNA_Bone, bone, &path->ptr[path->len]);
+ path->len++;
+ return 1;
+ }
+ }
}
/* no path to a bone possible */
@@ -569,6 +583,10 @@
set_pointer_type(path, result, &RNA_Bone);
return 1;
}
+ else if(CTX_data_equals(member, "edit_bone")) {
+ set_pointer_type(path, result, &RNA_EditBone);
+ return 1;
+ }
else if(CTX_data_equals(member, "particle_system")) {
set_pointer_type(path, result, &RNA_ParticleSystem);
return 1;
Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h 2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h 2009-06-19 14:56:49 UTC (rev 21010)
@@ -164,6 +164,7 @@
extern StructRNA RNA_Driver;
extern StructRNA RNA_DriverTarget;
extern StructRNA RNA_EdgeSplitModifier;
+extern StructRNA RNA_EditBone;
extern StructRNA RNA_EffectSequence;
extern StructRNA RNA_EnumProperty;
extern StructRNA RNA_EnumPropertyItem;
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c 2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c 2009-06-19 14:56:49 UTC (rev 21010)
@@ -702,8 +702,10 @@
else {
if(manualfunc)
fprintf(f, "\n %s(iter, ptr);\n", manualfunc);
+ else if(dp->dnapointerlevel == 0)
+ fprintf(f, "\n rna_iterator_listbase_begin(iter, &data->%s, NULL);\n", dp->dnaname);
else
- fprintf(f, "\n rna_iterator_listbase_begin(iter, &data->%s, NULL);\n", dp->dnaname);
+ fprintf(f, "\n rna_iterator_listbase_begin(iter, data->%s, NULL);\n", dp->dnaname);
}
getfunc= rna_alloc_function_name(srna->identifier, prop->identifier, "get");
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c 2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c 2009-06-19 14:56:49 UTC (rev 21010)
@@ -218,7 +218,6 @@
{
StructRNA *srna;
PropertyRNA *prop;
- FunctionRNA *func;
srna= RNA_def_struct(brna, "ID", NULL);
RNA_def_struct_ui_text(srna, "ID", "Base type for datablocks, defining a unique name, linking from other libraries and garbage collection.");
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c 2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c 2009-06-19 14:56:49 UTC (rev 21010)
@@ -1500,7 +1500,7 @@
ListBaseIterator *internal;
internal= MEM_callocN(sizeof(ListBaseIterator), "ListBaseIterator");
- internal->link= lb->first;
+ internal->link= (lb)? lb->first: NULL;
internal->skip= skip;
iter->internal= internal;
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c 2009-06-19 12:57:31 UTC (rev 21009)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_armature.c 2009-06-19 14:56:49 UTC (rev 21010)
@@ -36,25 +36,32 @@
#ifdef RNA_RUNTIME
-static void rna_Bone_layer_set(PointerRNA *ptr, const int *values)
+#include "ED_armature.h"
+
+static void rna_bone_layer_set(short *layer, const int *values)
{
- Bone *bone= (Bone*)ptr->data;
int i, tot= 0;
/* ensure we always have some layer selected */
- for(i=0; i<20; i++)
+ for(i=0; i<16; i++)
if(values[i])
tot++;
if(tot==0)
return;
- for(i=0; i<20; i++) {
- if(values[i]) bone->layer |= (1<<i);
- else bone->layer &= ~(1<<i);
+ for(i=0; i<16; i++) {
+ if(values[i]) *layer |= (1<<i);
+ else *layer &= ~(1<<i);
}
}
+static void rna_Bone_layer_set(PointerRNA *ptr, const int *values)
+{
+ Bone *bone= (Bone*)ptr->data;
+ rna_bone_layer_set(&bone->layer, values);
+}
+
static void rna_Armature_layer_set(PointerRNA *ptr, const int *values)
{
bArmature *arm= (bArmature*)ptr->data;
@@ -102,152 +109,529 @@
data->pathef= value;
}
+PointerRNA rna_EditBone_rna_type_get(PointerRNA *ptr)
+{
+ return rna_builtin_type_get(ptr);
+}
+
+void rna_EditBone_name_get(PointerRNA *ptr, char *value)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ BLI_strncpy(value, data->name, sizeof(data->name));
+}
+
+int rna_EditBone_name_length(PointerRNA *ptr)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ return strlen(data->name);
+}
+
+int rna_EditBone_active_get(PointerRNA *ptr)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ return (((data->flag) & BONE_ACTIVE) != 0);
+}
+
+void rna_EditBone_active_set(PointerRNA *ptr, int value)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ if(value) data->flag |= BONE_ACTIVE;
+ else data->flag &= ~BONE_ACTIVE;
+}
+
+float rna_EditBone_bbone_in_get(PointerRNA *ptr)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ return (float)(data->ease1);
+}
+
+void rna_EditBone_bbone_in_set(PointerRNA *ptr, float value)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ data->ease1= CLAMPIS(value, 0.0f, 2.0f);
+}
+
+float rna_EditBone_bbone_out_get(PointerRNA *ptr)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ return (float)(data->ease2);
+}
+
+void rna_EditBone_bbone_out_set(PointerRNA *ptr, float value)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ data->ease2= CLAMPIS(value, 0.0f, 2.0f);
+}
+
+int rna_EditBone_bbone_segments_get(PointerRNA *ptr)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ return (int)(data->segments);
+}
+
+void rna_EditBone_bbone_segments_set(PointerRNA *ptr, int value)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ data->segments= CLAMPIS(value, 1, 32);
+}
+
+void rna_EditBone_layer_get(PointerRNA *ptr, int values[16])
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ values[0]= ((data->layer & (1<<0)) != 0);
+ values[1]= ((data->layer & (1<<1)) != 0);
+ values[2]= ((data->layer & (1<<2)) != 0);
+ values[3]= ((data->layer & (1<<3)) != 0);
+ values[4]= ((data->layer & (1<<4)) != 0);
+ values[5]= ((data->layer & (1<<5)) != 0);
+ values[6]= ((data->layer & (1<<6)) != 0);
+ values[7]= ((data->layer & (1<<7)) != 0);
+ values[8]= ((data->layer & (1<<8)) != 0);
+ values[9]= ((data->layer & (1<<9)) != 0);
+ values[10]= ((data->layer & (1<<10)) != 0);
+ values[11]= ((data->layer & (1<<11)) != 0);
+ values[12]= ((data->layer & (1<<12)) != 0);
+ values[13]= ((data->layer & (1<<13)) != 0);
+ values[14]= ((data->layer & (1<<14)) != 0);
+ values[15]= ((data->layer & (1<<15)) != 0);
+}
+
+void rna_EditBone_layer_set(PointerRNA *ptr, const int values[16])
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ rna_bone_layer_set(&data->layer, values);
+}
+
+int rna_EditBone_connected_get(PointerRNA *ptr)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ return (((data->flag) & BONE_CONNECTED) != 0);
+}
+
+void rna_EditBone_connected_set(PointerRNA *ptr, int value)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ if(value) data->flag |= BONE_CONNECTED;
+ else data->flag &= ~BONE_CONNECTED;
+}
+
+int rna_EditBone_cyclic_offset_get(PointerRNA *ptr)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ return (!((data->flag) & BONE_NO_CYCLICOFFSET) != 0);
+}
+
+void rna_EditBone_cyclic_offset_set(PointerRNA *ptr, int value)
+{
+ EditBone *data= (EditBone*)(ptr->data);
+ if(!value) data->flag |= BONE_NO_CYCLICOFFSET;
+ else data->flag &= ~BONE_NO_CYCLICOFFSET;
+}
+
+int rna_EditBone_deform_get(PointerRNA *ptr)
+{
+ EditBone *data= (EditBone*)(ptr->data);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list