Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Eisel <julian@blender.org>2020-03-26 23:03:42 +0300
committerJulian Eisel <julian@blender.org>2020-03-26 23:18:45 +0300
commitc94b6209861ca7cc3985b53474feed7d94c0221a (patch)
tree752054f0dca1338cda5cf8ad4f6d18573fcca3b9 /source/blender/makesrna/intern/rna_object.c
parent357ed79cb93f9d655501a828c6cddd68282de62d (diff)
parentafb1a64ccb81b7ed792f64151986f40f53af8da5 (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.c117
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",