diff options
author | Julian Eisel <julian@blender.org> | 2020-03-26 23:03:42 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2020-03-26 23:18:45 +0300 |
commit | c94b6209861ca7cc3985b53474feed7d94c0221a (patch) | |
tree | 752054f0dca1338cda5cf8ad4f6d18573fcca3b9 /source/blender/makesrna/intern/rna_object.c | |
parent | 357ed79cb93f9d655501a828c6cddd68282de62d (diff) | |
parent | afb1a64ccb81b7ed792f64151986f40f53af8da5 (diff) |
Merge branch 'master' into wm-drag-drop-rewrite
Diffstat (limited to 'source/blender/makesrna/intern/rna_object.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_object.c | 117 |
1 files changed, 82 insertions, 35 deletions
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index 04d56921ca6..959529450f0 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -25,16 +25,16 @@ #include "DNA_brush_types.h" #include "DNA_collection_types.h" #include "DNA_customdata_types.h" +#include "DNA_gpencil_modifier_types.h" #include "DNA_lightprobe_types.h" #include "DNA_material_types.h" #include "DNA_mesh_types.h" +#include "DNA_meta_types.h" #include "DNA_object_force_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_meta_types.h" -#include "DNA_workspace_types.h" -#include "DNA_gpencil_modifier_types.h" #include "DNA_shader_fx_types.h" +#include "DNA_workspace_types.h" #include "BLI_utildefines.h" @@ -42,12 +42,12 @@ #include "BKE_camera.h" #include "BKE_collection.h" -#include "BKE_paint.h" #include "BKE_editlattice.h" #include "BKE_editmesh.h" #include "BKE_layer.h" #include "BKE_object_deform.h" #include "BKE_object_facemap.h" +#include "BKE_paint.h" #include "RNA_access.h" #include "RNA_define.h" @@ -85,6 +85,11 @@ const EnumPropertyItem rna_enum_object_mode_items[] = { ICON_GREASEPENCIL, "Draw", "Paint Grease Pencil Strokes"}, + {OB_MODE_VERTEX_GPENCIL, + "VERTEX_GPENCIL", + ICON_VPAINT_HLT, + "Vertex Paint", + "Grease Pencil Vertex Paint Strokes"}, {OB_MODE_WEIGHT_GPENCIL, "WEIGHT_GPENCIL", ICON_WPAINT_HLT, @@ -118,6 +123,11 @@ const EnumPropertyItem rna_enum_workspace_object_mode_items[] = { ICON_GREASEPENCIL, "Grease Pencil Draw", "Paint Grease Pencil Strokes"}, + {OB_MODE_VERTEX_GPENCIL, + "VERTEX_GPENCIL", + ICON_VPAINT_HLT, + "Grease Pencil Vertex Paint", + "Grease Pencil Vertex Paint Strokes"}, {OB_MODE_WEIGHT_GPENCIL, "WEIGHT_GPENCIL", ICON_WPAINT_HLT, @@ -224,6 +234,11 @@ const EnumPropertyItem rna_enum_object_type_items[] = { OBTYPE_CU_SURF, {OB_MBALL, "META", 0, "Meta", ""}, OBTYPE_CU_FONT, +#ifdef WITH_NEW_OBJECT_TYPES + {OB_HAIR, "HAIR", 0, "Hair", ""}, + {OB_POINTCLOUD, "POINTCLOUD", 0, "PointCloud", ""}, +#endif + {OB_VOLUME, "VOLUME", 0, "Volume", ""}, {0, "", 0, NULL, NULL}, {OB_ARMATURE, "ARMATURE", 0, "Armature", ""}, {OB_LATTICE, "LATTICE", 0, "Lattice", ""}, @@ -274,10 +289,10 @@ const EnumPropertyItem rna_enum_object_axis_items[] = { # include "BLI_math.h" -# include "DNA_key_types.h" +# include "DNA_ID.h" # include "DNA_constraint_types.h" # include "DNA_gpencil_types.h" -# include "DNA_ID.h" +# include "DNA_key_types.h" # include "DNA_lattice_types.h" # include "DNA_node_types.h" @@ -286,24 +301,24 @@ const EnumPropertyItem rna_enum_object_axis_items[] = { # include "BKE_constraint.h" # include "BKE_context.h" # include "BKE_curve.h" +# include "BKE_deform.h" # include "BKE_effect.h" # include "BKE_global.h" # include "BKE_key.h" -# include "BKE_object.h" # include "BKE_material.h" # include "BKE_mesh.h" # include "BKE_modifier.h" +# include "BKE_object.h" # include "BKE_particle.h" # include "BKE_scene.h" -# include "BKE_deform.h" # include "DEG_depsgraph.h" # include "DEG_depsgraph_build.h" -# include "ED_object.h" -# include "ED_particle.h" # include "ED_curve.h" # include "ED_lattice.h" +# include "ED_object.h" +# include "ED_particle.h" static void rna_Object_internal_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { @@ -343,6 +358,16 @@ static void rna_MaterialIndex_update(Main *UNUSED(bmain), Scene *UNUSED(scene), } } +static void rna_GPencil_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) +{ + Object *ob = (Object *)ptr->owner_id; + if (ob && ob->type == OB_GPENCIL) { + bGPdata *gpd = (bGPdata *)ob->data; + DEG_id_tag_update(&gpd->id, ID_RECALC_GEOMETRY); + WM_main_add_notifier(NC_GPENCIL | NA_EDITED, NULL); + } +} + static void rna_Object_matrix_local_get(PointerRNA *ptr, float values[16]) { Object *ob = (Object *)ptr->owner_id; @@ -383,36 +408,44 @@ static void rna_Object_matrix_basis_set(PointerRNA *ptr, const float values[16]) BKE_object_apply_mat4(ob, (float(*)[4])values, false, false); } -void rna_Object_internal_update_data(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) +void rna_Object_internal_update_data_impl(PointerRNA *ptr) { DEG_id_tag_update(ptr->owner_id, ID_RECALC_GEOMETRY); WM_main_add_notifier(NC_OBJECT | ND_DRAW, ptr->owner_id); } -void rna_Object_internal_update_data_dependency(Main *bmain, Scene *scene, PointerRNA *ptr) +void rna_Object_internal_update_data(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) +{ + rna_Object_internal_update_data_impl(ptr); +} + +void rna_Object_internal_update_data_dependency(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr) { DEG_relations_tag_update(bmain); - rna_Object_internal_update_data(bmain, scene, ptr); + rna_Object_internal_update_data_impl(ptr); } -static void rna_Object_active_shape_update(bContext *C, PointerRNA *ptr) +static void rna_Object_active_shape_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr) { Object *ob = (Object *)ptr->owner_id; - Main *bmain = CTX_data_main(C); - Scene *scene = CTX_data_scene(C); - if (CTX_data_edit_object(C) == ob) { + if (BKE_object_is_in_editmode(ob)) { /* exit/enter editmode to get new shape */ switch (ob->type) { - case OB_MESH: + case OB_MESH: { + Mesh *me = ob->data; + BMEditMesh *em = me->edit_mesh; + int select_mode = em->selectmode; EDBM_mesh_load(bmain, ob); - EDBM_mesh_make(ob, scene->toolsettings->selectmode, true); + EDBM_mesh_make(ob, select_mode, true); + em = me->edit_mesh; - DEG_id_tag_update(ob->data, 0); + DEG_id_tag_update(&me->id, 0); - EDBM_mesh_normals_update(((Mesh *)ob->data)->edit_mesh); - BKE_editmesh_looptri_calc(((Mesh *)ob->data)->edit_mesh); + EDBM_mesh_normals_update(em); + BKE_editmesh_looptri_calc(em); break; + } case OB_CURVE: case OB_SURF: ED_curve_editnurb_load(bmain, ob); @@ -425,7 +458,7 @@ static void rna_Object_active_shape_update(bContext *C, PointerRNA *ptr) } } - rna_Object_internal_update_data(bmain, scene, ptr); + rna_Object_internal_update_data_impl(ptr); } static void rna_Object_dependency_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr) @@ -481,7 +514,7 @@ static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value, struct Report id_us_plus(id); ob->data = id; - test_object_materials(G_MAIN, ob, id); + BKE_object_materials_test(G_MAIN, ob, id); if (GS(id->name) == ID_CU) { BKE_curve_type_test(ob); @@ -524,6 +557,14 @@ static StructRNA *rna_Object_data_typef(PointerRNA *ptr) return &RNA_LightProbe; case OB_GPENCIL: return &RNA_GreasePencil; +# ifdef WITH_NEW_OBJECT_TYPES + case OB_HAIR: + return &RNA_Hair; + case OB_POINTCLOUD: + return &RNA_PointCloud; +# endif + case OB_VOLUME: + return &RNA_Volume; default: return &RNA_ID; } @@ -702,7 +743,7 @@ static void rna_VertexGroup_name_set(PointerRNA *ptr, const char *value) Object *ob = (Object *)ptr->owner_id; bDeformGroup *dg = (bDeformGroup *)ptr->data; BLI_strncpy_utf8(dg->name, value, sizeof(dg->name)); - defgroup_unique_name(dg, ob); + BKE_object_defgroup_unique_name(dg, ob); } static int rna_VertexGroup_index_get(PointerRNA *ptr) @@ -767,13 +808,13 @@ int rna_object_vgroup_name_index_length(PointerRNA *ptr, int index) void rna_object_vgroup_name_index_set(PointerRNA *ptr, const char *value, short *index) { Object *ob = (Object *)ptr->owner_id; - *index = defgroup_name_index(ob, value) + 1; + *index = BKE_object_defgroup_name_index(ob, value) + 1; } void rna_object_vgroup_name_set(PointerRNA *ptr, const char *value, char *result, int maxlen) { Object *ob = (Object *)ptr->owner_id; - bDeformGroup *dg = defgroup_find_name(ob, value); + bDeformGroup *dg = BKE_object_defgroup_find_name(ob, value); if (dg) { /* No need for BLI_strncpy_utf8, since this matches an existing group. */ BLI_strncpy(result, value, maxlen); @@ -948,7 +989,7 @@ static PointerRNA rna_Object_active_material_get(PointerRNA *ptr) Object *ob = (Object *)ptr->owner_id; Material *ma; - ma = (ob->totcol) ? give_current_material(ob, ob->actcol) : NULL; + ma = (ob->totcol) ? BKE_object_material_get(ob, ob->actcol) : NULL; return rna_pointer_inherit_refine(ptr, &RNA_Material, ma); } @@ -961,7 +1002,7 @@ static void rna_Object_active_material_set(PointerRNA *ptr, DEG_id_tag_update(value.data, 0); BLI_assert(BKE_id_is_in_global_main(&ob->id)); BLI_assert(BKE_id_is_in_global_main(value.data)); - assign_material(G_MAIN, ob, value.data, ob->actcol, BKE_MAT_ASSIGN_EXISTING); + BKE_object_material_assign(G_MAIN, ob, value.data, ob->actcol, BKE_MAT_ASSIGN_EXISTING); if (ob && ob->type == OB_GPENCIL) { /* notifying material property in topbar */ @@ -1165,7 +1206,7 @@ static PointerRNA rna_MaterialSlot_material_get(PointerRNA *ptr) Material *ma; const int index = (Material **)ptr->data - ob->mat; - ma = give_current_material(ob, index + 1); + ma = BKE_object_material_get(ob, index + 1); return rna_pointer_inherit_refine(ptr, &RNA_Material, ma); } @@ -1178,7 +1219,7 @@ static void rna_MaterialSlot_material_set(PointerRNA *ptr, BLI_assert(BKE_id_is_in_global_main(&ob->id)); BLI_assert(BKE_id_is_in_global_main(value.data)); - assign_material(G_MAIN, ob, value.data, index + 1, BKE_MAT_ASSIGN_EXISTING); + BKE_object_material_assign(G_MAIN, ob, value.data, index + 1, BKE_MAT_ASSIGN_EXISTING); } static bool rna_MaterialSlot_material_poll(PointerRNA *ptr, PointerRNA value) @@ -1225,7 +1266,7 @@ static int rna_MaterialSlot_name_length(PointerRNA *ptr) Material *ma; int index = (Material **)ptr->data - ob->mat; - ma = give_current_material(ob, index + 1); + ma = BKE_object_material_get(ob, index + 1); if (ma) { return strlen(ma->id.name + 2); @@ -1240,7 +1281,7 @@ static void rna_MaterialSlot_name_get(PointerRNA *ptr, char *str) Material *ma; int index = (Material **)ptr->data - ob->mat; - ma = give_current_material(ob, index + 1); + ma = BKE_object_material_get(ob, index + 1); if (ma) { strcpy(str, ma->id.name + 2); @@ -3059,6 +3100,13 @@ static void rna_def_object(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Display All Edges", "Display all edges for mesh objects"); RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL); + prop = RNA_def_property(srna, "use_grease_pencil_lights", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_USE_GPENCIL_LIGHTS); + RNA_def_property_boolean_default(prop, true); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_ui_text(prop, "Use Lights", "Lights affect grease pencil object"); + RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_GPencil_update"); + prop = RNA_def_property(srna, "show_transparent", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_DRAWTRANSP); RNA_def_property_ui_text( @@ -3068,7 +3116,7 @@ static void rna_def_object(BlenderRNA *brna) prop = RNA_def_property(srna, "show_in_front", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_DRAWXRAY); RNA_def_property_ui_text(prop, "In Front", "Make the object draw in front of others"); - RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL); + RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_GPencil_update"); /* pose */ prop = RNA_def_property(srna, "pose_library", PROP_POINTER, PROP_NONE); @@ -3105,7 +3153,6 @@ static void rna_def_object(BlenderRNA *brna) prop = RNA_def_property(srna, "active_shape_key_index", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "shapenr"); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); /* XXX this is really unpredictable... */ RNA_def_property_int_funcs(prop, "rna_Object_active_shape_key_index_get", |