[Bf-blender-cvs] [341d5b08b0f] blender2.8: Fix adding objects in local view
Campbell Barton
noreply at git.blender.org
Fri Dec 7 03:01:41 CET 2018
Commit: 341d5b08b0f6743ddd03bc9868a96d311b509900
Author: Campbell Barton
Date: Fri Dec 7 12:59:04 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB341d5b08b0f6743ddd03bc9868a96d311b509900
Fix adding objects in local view
===================================================================
M source/blender/editors/curve/editcurve_add.c
M source/blender/editors/gpencil/gpencil_paint.c
M source/blender/editors/gpencil/gpencil_utils.c
M source/blender/editors/include/ED_gpencil.h
M source/blender/editors/include/ED_object.h
M source/blender/editors/mesh/editmesh_add.c
M source/blender/editors/object/object_add.c
M source/blender/editors/space_outliner/outliner_collections.c
===================================================================
diff --git a/source/blender/editors/curve/editcurve_add.c b/source/blender/editors/curve/editcurve_add.c
index 7eabd9c96e8..eef3df94033 100644
--- a/source/blender/editors/curve/editcurve_add.c
+++ b/source/blender/editors/curve/editcurve_add.c
@@ -477,13 +477,14 @@ static int curvesurf_prim_add(bContext *C, wmOperator *op, int type, int isSurf)
Nurb *nu;
bool newob = false;
bool enter_editmode;
+ ushort local_view_bits;
float dia;
float loc[3], rot[3];
float mat[4][4];
WM_operator_view3d_unit_defaults(C, op);
- if (!ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, NULL))
+ if (!ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, &local_view_bits, NULL))
return OPERATOR_CANCELLED;
if (!isSurf) { /* adding curve */
@@ -491,7 +492,7 @@ static int curvesurf_prim_add(bContext *C, wmOperator *op, int type, int isSurf)
const char *name = get_curve_defname(type);
Curve *cu;
- obedit = ED_object_add_type(C, OB_CURVE, name, loc, rot, true);
+ obedit = ED_object_add_type(C, OB_CURVE, name, loc, rot, true, local_view_bits);
newob = true;
cu = (Curve *)obedit->data;
@@ -507,7 +508,7 @@ static int curvesurf_prim_add(bContext *C, wmOperator *op, int type, int isSurf)
else { /* adding surface */
if (obedit == NULL || obedit->type != OB_SURF) {
const char *name = get_surf_defname(type);
- obedit = ED_object_add_type(C, OB_SURF, name, loc, rot, true);
+ obedit = ED_object_add_type(C, OB_SURF, name, loc, rot, true, local_view_bits);
newob = true;
}
else {
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index eb483f2db80..15629295a6f 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -1815,11 +1815,17 @@ static bool gp_session_initdata(bContext *C, wmOperator *op, tGPsdata *p)
return 0;
}
- /* if active object doesn't exist or isn't a GP Object, create one */
- const float *cur = p->scene->cursor.location;
if ((!obact) || (obact->type != OB_GPENCIL)) {
+ View3D *v3d = p->sa->spacedata.first;
+ /* if active object doesn't exist or isn't a GP Object, create one */
+ const float *cur = p->scene->cursor.location;
+
+ ushort local_view_bits = 0;
+ if (v3d->localvd) {
+ local_view_bits = v3d->local_view_uuid;
+ }
/* create new default object */
- obact = ED_add_gpencil_object(C, p->scene, cur);
+ obact = ED_add_gpencil_object(C, p->scene, cur, local_view_bits);
}
/* assign object after all checks to be sure we have one active */
p->ob = obact;
diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c
index 4d16f842fa3..1f1b779d4f8 100644
--- a/source/blender/editors/gpencil/gpencil_utils.c
+++ b/source/blender/editors/gpencil/gpencil_utils.c
@@ -1205,11 +1205,11 @@ void ED_gpencil_reset_layers_parent(Depsgraph *depsgraph, Object *obact, bGPdata
/* GP Object Stuff */
/* Helper function to create new OB_GPENCIL Object */
-Object *ED_add_gpencil_object(bContext *C, Scene *UNUSED(scene), const float loc[3])
+Object *ED_add_gpencil_object(bContext *C, Scene *UNUSED(scene), const float loc[3], ushort local_view_bits)
{
float rot[3] = {0.0f};
- Object *ob = ED_object_add_type(C, OB_GPENCIL, NULL, loc, rot, false);
+ Object *ob = ED_object_add_type(C, OB_GPENCIL, NULL, loc, rot, false, local_view_bits);
/* define size */
BKE_object_obdata_size_init(ob, GP_OBGPENCIL_DEFAULT_SIZE);
diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h
index 3ea0dbf10fa..62f8873d4bd 100644
--- a/source/blender/editors/include/ED_gpencil.h
+++ b/source/blender/editors/include/ED_gpencil.h
@@ -235,7 +235,8 @@ void ED_gpencil_create_monkey(struct bContext *C, float mat[4][4]);
void ED_gpencil_create_stroke(struct bContext *C, float mat[4][4]);
/* ------------ Object Utilities ------------ */
-struct Object *ED_add_gpencil_object(struct bContext *C, struct Scene *scene, const float loc[3]);
+struct Object *ED_add_gpencil_object(
+ struct bContext *C, struct Scene *scene, const float loc[3], unsigned short local_view_bits);
void ED_gpencil_add_defaults(struct bContext *C);
/* set object modes */
void ED_gpencil_setup_modes(struct bContext *C, struct bGPdata *gpd, int newmode);
diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h
index a6be1c833eb..58a7e5a1203 100644
--- a/source/blender/editors/include/ED_object.h
+++ b/source/blender/editors/include/ED_object.h
@@ -178,14 +178,15 @@ void ED_object_add_unit_props_size(struct wmOperatorType *ot);
void ED_object_add_unit_props_radius(struct wmOperatorType *ot);
void ED_object_add_generic_props(struct wmOperatorType *ot, bool do_editmode);
void ED_object_add_mesh_props(struct wmOperatorType *ot);
-bool ED_object_add_generic_get_opts(struct bContext *C, struct wmOperator *op, const char view_align_axis,
- float loc[3], float rot[3],
- bool *enter_editmode, bool *is_view_aligned);
+bool ED_object_add_generic_get_opts(
+ struct bContext *C, struct wmOperator *op, const char view_align_axis,
+ float loc[3], float rot[3],
+ bool *enter_editmode, unsigned short *local_view_bits, bool *is_view_aligned);
struct Object *ED_object_add_type(
struct bContext *C,
int type, const char *name, const float loc[3], const float rot[3],
- bool enter_editmode)
+ bool enter_editmode, unsigned short local_view_bits)
ATTR_NONNULL(1) ATTR_RETURNS_NONNULL;
void ED_object_single_users(struct Main *bmain, struct Scene *scene, const bool full, const bool copy_groups);
diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c
index dd16cb9e4ec..bcde2411899 100644
--- a/source/blender/editors/mesh/editmesh_add.c
+++ b/source/blender/editors/mesh/editmesh_add.c
@@ -66,14 +66,14 @@ typedef struct MakePrimitiveData {
static Object *make_prim_init(
bContext *C, const char *idname,
- const float loc[3], const float rot[3],
+ const float loc[3], const float rot[3], ushort local_view_bits,
MakePrimitiveData *r_creation_data)
{
Object *obedit = CTX_data_edit_object(C);
r_creation_data->was_editmode = false;
if (obedit == NULL || obedit->type != OB_MESH) {
- obedit = ED_object_add_type(C, OB_MESH, idname, loc, rot, false);
+ obedit = ED_object_add_type(C, OB_MESH, idname, loc, rot, false, local_view_bits);
/* create editmode */
ED_object_editmode_enter(C, EM_IGNORE_LAYER); /* rare cases the active layer is messed up */
@@ -111,11 +111,14 @@ static int add_primitive_plane_exec(bContext *C, wmOperator *op)
BMEditMesh *em;
float loc[3], rot[3];
bool enter_editmode;
+ ushort local_view_bits;
const bool calc_uvs = RNA_boolean_get(op->ptr, "calc_uvs");
WM_operator_view3d_unit_defaults(C, op);
- ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, NULL);
- obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Plane"), loc, rot, &creation_data);
+ ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, &local_view_bits, NULL);
+ obedit = make_prim_init(
+ C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Plane"),
+ loc, rot, local_view_bits, &creation_data);
em = BKE_editmesh_from_object(obedit);
if (calc_uvs) {
@@ -161,11 +164,14 @@ static int add_primitive_cube_exec(bContext *C, wmOperator *op)
BMEditMesh *em;
float loc[3], rot[3];
bool enter_editmode;
+ ushort local_view_bits;
const bool calc_uvs = RNA_boolean_get(op->ptr, "calc_uvs");
WM_operator_view3d_unit_defaults(C, op);
- ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, NULL);
- obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Cube"), loc, rot, &creation_data);
+ ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, &local_view_bits, NULL);
+ obedit = make_prim_init(
+ C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Cube"),
+ loc, rot, local_view_bits, &creation_data);
em = BKE_editmesh_from_object(obedit);
if (calc_uvs) {
@@ -218,6 +224,7 @@ static int add_primitive_circle_exec(bContext *C, wmOperator *op)
BMEditMesh *em;
float loc[3], rot[3];
bool enter_editmode;
+ ushort local_view_bits;
int cap_end, cap_tri;
const bool calc_uvs = RNA_boolean_get(op->ptr, "calc_uvs");
@@ -225,8 +232,10 @@ static int add_primitive_circle_exec(bContext *C, wmOperator *op)
cap_tri = (cap_end == 2);
WM_operator_view3d_unit_defaults(C, op);
- ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, NULL);
- obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Circle"), loc, rot, &creation_data);
+ ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, &local_view_bits, NULL);
+ obedit = make_prim_init(
+ C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Circle"),
+ loc, rot, local_view_bits, &creation_data);
em = BKE_editmesh_from_object(obedit);
if (calc_uvs) {
@@ -277,14 +286,17 @@ static int add_primitive_cylinder_exec(bContext *C, wmOperator *op)
BMEditMesh *em;
float loc[3], rot[3];
bool enter_editmode;
+ ushort local_view_bits;
const int end_fill_type = RNA_enum_get(op->ptr, "end_fill_type");
const bool cap_end = (end_fill_type != 0);
const bool cap_tri = (end_fill_type == 2);
const bool calc_uvs = RNA_boolean_get(op->ptr, "calc_uvs");
WM_operator_view3d_unit_defaults(C, op);
- ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, NULL);
- obedit = make_prim_init(C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Cylinder"), loc, rot, &creation_data);
+ ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, &local_view_bits, NULL);
+ obedit = make_prim_init(
+ C, CTX_DATA_(BLT_I18NCONTEXT_ID_MESH, "Cylinder"),
+ loc, rot, local_view_bits, &creation_data);
em = BKE_editmesh_from_object(obedit);
if (calc_uvs) {
@@ -339,14 +351,17 @@ static int add_primitive_cone_exec(bContext *C, wmOperator *op)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list