Commit: ec65bc6e76c462153978837d03c937d0df5c453d
Author: Dalai Felinto
Date:   Wed Jan 11 11:45:41 2017 +0100
Branches: render-layers
https://developer.blender.org/rBec65bc6e76c462153978837d03c937d0df5c453d

Introduce ObjectBase rna wrapper for bpy.context.active_base

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

M       source/blender/makesrna/intern/rna_internal.h
M       source/blender/makesrna/intern/rna_object.c
M       source/blender/makesrna/intern/rna_object_api.c
M       source/blender/makesrna/intern/rna_scene.c

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

diff --git a/source/blender/makesrna/intern/rna_internal.h 
b/source/blender/makesrna/intern/rna_internal.h
index 76455adbc7..b904b65a37 100644
--- a/source/blender/makesrna/intern/rna_internal.h
+++ b/source/blender/makesrna/intern/rna_internal.h
@@ -279,7 +279,7 @@ void RNA_api_material(StructRNA *srna);
 void RNA_api_mesh(struct StructRNA *srna);
 void RNA_api_meta(struct StructRNA *srna);
 void RNA_api_object(struct StructRNA *srna);
-void RNA_api_object_base(struct StructRNA *srna);
+void RNA_api_object_base_legacy(struct StructRNA *srna);
 void RNA_api_pose(struct StructRNA *srna);
 void RNA_api_pose_channel(struct StructRNA *srna);
 void RNA_api_scene(struct StructRNA *srna);
diff --git a/source/blender/makesrna/intern/rna_object.c 
b/source/blender/makesrna/intern/rna_object.c
index 0cffba47f1..e1c1da3cc9 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -2895,14 +2895,14 @@ static void rna_def_dupli_object(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Dupli Type", "Duplicator type that 
generated this dupli object");
 }
 
-static void rna_def_object_base(BlenderRNA *brna)
+static void rna_def_object_base_legacy(BlenderRNA *brna)
 {
        StructRNA *srna;
        PropertyRNA *prop;
 
-       srna = RNA_def_struct(brna, "ObjectBase", NULL);
+       srna = RNA_def_struct(brna, "ObjectBaseLegacy", NULL);
        RNA_def_struct_sdna(srna, "Base");
-       RNA_def_struct_ui_text(srna, "Object Base", "An object instance in a 
scene");
+       RNA_def_struct_ui_text(srna, "Object Base Legacy", "An object instance 
in a scene (deprecated)");
        RNA_def_struct_ui_icon(srna, ICON_OBJECT_DATA);
 
        prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
@@ -2928,7 +2928,7 @@ static void rna_def_object_base(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Select", "Object base selection state");
        RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, 
"rna_Base_select_update");
        
-       RNA_api_object_base(srna);
+       RNA_api_object_base_legacy(srna);
 }
 
 void RNA_def_object(BlenderRNA *brna)
@@ -2937,7 +2937,7 @@ void RNA_def_object(BlenderRNA *brna)
 
        RNA_define_animate_sdna(false);
        rna_def_object_game_settings(brna);
-       rna_def_object_base(brna);
+       rna_def_object_base_legacy(brna);
        rna_def_vertex_group(brna);
        rna_def_material_slot(brna);
        rna_def_dupli_object(brna);
diff --git a/source/blender/makesrna/intern/rna_object_api.c 
b/source/blender/makesrna/intern/rna_object_api.c
index c680abe71a..b995f4341f 100644
--- a/source/blender/makesrna/intern/rna_object_api.c
+++ b/source/blender/makesrna/intern/rna_object_api.c
@@ -413,9 +413,9 @@ finally:
        free_bvhtree_from_mesh(&treeData);
 }
 
-/* ObjectBase */
+/* ObjectBaseLegacy */
 
-static void rna_ObjectBase_layers_from_view(Base *base, View3D *v3d)
+static void rna_ObjectBaseLegacy_layers_from_view(Base *base, View3D *v3d)
 {
        base->lay = base->object->lay = v3d->lay;
 }
@@ -707,12 +707,12 @@ void RNA_api_object(StructRNA *srna)
 }
 
 
-void RNA_api_object_base(StructRNA *srna)
+void RNA_api_object_base_legacy(StructRNA *srna)
 {
        FunctionRNA *func;
        PropertyRNA *parm;
 
-       func = RNA_def_function(srna, "layers_from_view", 
"rna_ObjectBase_layers_from_view");
+       func = RNA_def_function(srna, "layers_from_view", 
"rna_ObjectBaseLegacy_layers_from_view");
        RNA_def_function_ui_description(func,
                                        "Sets the object layers from a 3D View 
(use when adding an object in local view)");
        parm = RNA_def_pointer(func, "view", "SpaceView3D", "", "");
diff --git a/source/blender/makesrna/intern/rna_scene.c 
b/source/blender/makesrna/intern/rna_scene.c
index 4a4570b160..dd6b3d8532 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -47,6 +47,8 @@
 #include "BKE_editmesh.h"
 #include "BKE_paint.h"
 
+#include "ED_object.h"
+
 #include "GPU_extensions.h"
 
 #include "RNA_define.h"
@@ -563,7 +565,7 @@ static int rna_Scene_object_bases_lookup_string(PointerRNA 
*ptr, const char *key
 
        for (base = scene->base.first; base; base = base->next) {
                if (STREQLEN(base->object->id.name + 2, key, 
sizeof(base->object->id.name) - 2)) {
-                       *r_ptr = rna_pointer_inherit_refine(ptr, 
&RNA_ObjectBase, base);
+                       *r_ptr = rna_pointer_inherit_refine(ptr, 
&RNA_ObjectBaseLegacy, base);
                        return true;
                }
        }
@@ -2484,6 +2486,13 @@ static void rna_SceneLayer_remove(
        WM_main_add_notifier(NC_SCENE | ND_LAYER, NULL);
 }
 
+static void rna_ObjectBase_select_update(Main *UNUSED(bmain), Scene 
*UNUSED(scene), PointerRNA *ptr)
+{
+       ObjectBase *base = (ObjectBase *)ptr->data;
+       short mode = (base->flag & BASE_SELECTED) ? BA_SELECT : BA_DESELECT;
+       ED_object_base_select(base, mode);
+}
+
 #else
 
 /* Grease Pencil Drawing Brushes */
@@ -5562,6 +5571,26 @@ static void rna_def_scene_layers(BlenderRNA *brna, 
PropertyRNA *cprop)
        RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0);
 }
 
+static void rna_def_object_base(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       srna = RNA_def_struct(brna, "ObjectBase", NULL);
+       RNA_def_struct_sdna(srna, "ObjectBase");
+       RNA_def_struct_ui_text(srna, "Object Base", "An object instance in a 
scene layer");
+       RNA_def_struct_ui_icon(srna, ICON_OBJECT_DATA);
+
+       prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+       RNA_def_property_pointer_sdna(prop, NULL, "object");
+       RNA_def_property_ui_text(prop, "Object", "Object this base links to");
+
+       prop = RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", BASE_SELECTED);
+       RNA_def_property_ui_text(prop, "Select", "Object base selection state");
+       RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, 
"rna_ObjectBase_select_update");
+}
+
 /* TODO LAYERS: legacy SceneRenderLayers, to be removed */
 
 static void rna_def_scene_render_layer(BlenderRNA *brna)
@@ -7277,7 +7306,7 @@ static void rna_def_scene_objects(BlenderRNA *brna, 
PropertyRNA *cprop)
        RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_REPORTS);
        parm = RNA_def_pointer(func, "object", "Object", "", "Object to add to 
scene");
        RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
-       parm = RNA_def_pointer(func, "base", "ObjectBase", "", "The newly 
created base");
+       parm = RNA_def_pointer(func, "base", "ObjectBaseLegacy", "", "The newly 
created base");
        RNA_def_function_return(func, parm);
 
        func = RNA_def_function(srna, "unlink", "rna_Scene_object_unlink");
@@ -7312,7 +7341,7 @@ static void rna_def_scene_bases(BlenderRNA *brna, 
PropertyRNA *cprop)
        RNA_def_struct_ui_text(srna, "Scene Bases", "Collection of scene 
bases");
 
        prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
-       RNA_def_property_struct_type(prop, "ObjectBase");
+       RNA_def_property_struct_type(prop, "ObjectBaseLegacy");
        RNA_def_property_pointer_sdna(prop, NULL, "basact");
        RNA_def_property_flag(prop, PROP_EDITABLE);
        RNA_def_property_ui_text(prop, "Active Base", "Active object base in 
the scene");
@@ -7556,7 +7585,7 @@ void RNA_def_scene(BlenderRNA *brna)
        /* Bases/Objects */
        prop = RNA_def_property(srna, "object_bases", PROP_COLLECTION, 
PROP_NONE);
        RNA_def_property_collection_sdna(prop, NULL, "base", NULL);
-       RNA_def_property_struct_type(prop, "ObjectBase");
+       RNA_def_property_struct_type(prop, "ObjectBaseLegacy");
        RNA_def_property_ui_text(prop, "Bases", "");
        RNA_def_property_collection_funcs(prop, NULL, NULL, NULL, NULL, NULL, 
NULL,
                                          
"rna_Scene_object_bases_lookup_string", NULL);
@@ -7932,6 +7961,7 @@ void RNA_def_scene(BlenderRNA *brna)
        rna_def_scene_collection(brna);
        rna_def_layer_collection(brna);
        rna_def_scene_layer(brna);
+       rna_def_object_base(brna);
        RNA_define_animate_sdna(true);
        /* *** Animated *** */
        rna_def_scene_render_data(brna);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to