Cleanup: OBJECT_OT_collection_instance_add
Minor changes to match OBJECT_OT_data_instance_add. - Access properties once & reuse them. - Early exit when the data to instance can't be found.
This commit is contained in:
parent
955a4142ec
commit
379d5d7349
@ -1434,29 +1434,35 @@ static int collection_instance_add_exec(bContext *C, wmOperator *op)
|
||||
ushort local_view_bits;
|
||||
float loc[3], rot[3];
|
||||
|
||||
if (RNA_struct_property_is_set(op->ptr, "name")) {
|
||||
char name[MAX_ID_NAME - 2];
|
||||
PropertyRNA *prop_name = RNA_struct_find_property(op->ptr, "name");
|
||||
PropertyRNA *prop_location = RNA_struct_find_property(op->ptr, "location");
|
||||
|
||||
RNA_string_get(op->ptr, "name", name);
|
||||
if (RNA_property_is_set(op->ptr, prop_name)) {
|
||||
char name[MAX_ID_NAME - 2];
|
||||
RNA_property_string_get(op->ptr, prop_name, name);
|
||||
collection = (Collection *)BKE_libblock_find_name(bmain, ID_GR, name);
|
||||
|
||||
if (0 == RNA_struct_property_is_set(op->ptr, "location")) {
|
||||
if (!RNA_property_is_set(op->ptr, prop_location)) {
|
||||
const wmEvent *event = CTX_wm_window(C)->eventstate;
|
||||
ARegion *region = CTX_wm_region(C);
|
||||
const int mval[2] = {event->x - region->winrct.xmin, event->y - region->winrct.ymin};
|
||||
ED_object_location_from_view(C, loc);
|
||||
ED_view3d_cursor3d_position(C, mval, false, loc);
|
||||
RNA_float_set_array(op->ptr, "location", loc);
|
||||
RNA_property_float_set_array(op->ptr, prop_location, loc);
|
||||
}
|
||||
}
|
||||
else {
|
||||
collection = BLI_findlink(&bmain->collections, RNA_enum_get(op->ptr, "collection"));
|
||||
}
|
||||
|
||||
if (collection == NULL) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
if (!ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, NULL, NULL, &local_view_bits, NULL)) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
if (collection) {
|
||||
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
@ -1482,9 +1488,6 @@ static int collection_instance_add_exec(bContext *C, wmOperator *op)
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
/* only used as menu */
|
||||
void OBJECT_OT_collection_instance_add(wmOperatorType *ot)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user