Local View
Bring back per-viewport localview. This is based on Blender 2.79. We have a limit of 16 different local view viewports. We are using both the numpad /, as well as the regular /. Missing features: * Hack to make sure lights are always visible. * Make rendered mode with external engines to support this as well (probably just need to support this in the RNA iterators). * Support over 16 viewports by taking existing viewports out of local view. The code can use a cleanup pass in the future to unify the test to see if an object is visible (or we can use TESTBASE in more places).
This commit is contained in:
parent
e60c49ecf0
commit
4c3ed98ca2
|
@ -845,6 +845,9 @@ def km_view3d(params):
|
|||
])
|
||||
|
||||
items.extend([
|
||||
# Visibility.
|
||||
("view3d.localview", {"type": 'NUMPAD_SLASH', "value": 'PRESS'}, None),
|
||||
("view3d.localview", {"type": 'SLASH', "value": 'PRESS'}, None),
|
||||
# Navigation.
|
||||
("view3d.rotate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
|
||||
("view3d.move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
|
||||
|
|
|
@ -609,6 +609,7 @@ class VIEW3D_MT_view(Menu):
|
|||
|
||||
layout.operator("view3d.view_all", text="Frame All").center = False
|
||||
layout.operator("view3d.view_persportho", text="Perspective/Orthographic")
|
||||
layout.operator("view3d.localview")
|
||||
|
||||
layout.separator()
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@ struct Main;
|
|||
struct Object;
|
||||
struct RenderEngine;
|
||||
struct Scene;
|
||||
struct View3D;
|
||||
struct ViewLayer;
|
||||
struct WorkSpace;
|
||||
|
||||
|
@ -140,6 +141,11 @@ void BKE_layer_eval_view_layer_indexed(
|
|||
|
||||
/* iterators */
|
||||
|
||||
typedef struct ObjectsVisibleIteratorData {
|
||||
struct ViewLayer *view_layer;
|
||||
struct View3D *v3d;
|
||||
} ObjectsVisibleIteratorData;
|
||||
|
||||
void BKE_view_layer_selected_objects_iterator_begin(BLI_Iterator *iter, void *data_in);
|
||||
void BKE_view_layer_selected_objects_iterator_next(BLI_Iterator *iter);
|
||||
void BKE_view_layer_selected_objects_iterator_end(BLI_Iterator *iter);
|
||||
|
@ -155,6 +161,7 @@ void BKE_view_layer_selected_editable_objects_iterator_end(BLI_Iterator *iter);
|
|||
struct ObjectsInModeIteratorData {
|
||||
int object_mode;
|
||||
struct ViewLayer *view_layer;
|
||||
struct View3D *v3d;
|
||||
struct Base *base_active;
|
||||
};
|
||||
|
||||
|
@ -174,39 +181,57 @@ void BKE_view_layer_visible_bases_iterator_begin(BLI_Iterator *iter, void *data_
|
|||
void BKE_view_layer_visible_bases_iterator_next(BLI_Iterator *iter);
|
||||
void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter);
|
||||
|
||||
#define FOREACH_SELECTED_OBJECT_BEGIN(view_layer, _instance) \
|
||||
#define FOREACH_SELECTED_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
|
||||
{ \
|
||||
struct ObjectsVisibleIteratorData data_ = { \
|
||||
.view_layer = _view_layer, \
|
||||
.v3d = _v3d, \
|
||||
}; \
|
||||
ITER_BEGIN(BKE_view_layer_selected_objects_iterator_begin, \
|
||||
BKE_view_layer_selected_objects_iterator_next, \
|
||||
BKE_view_layer_selected_objects_iterator_end, \
|
||||
view_layer, Object *, _instance)
|
||||
&data_, Object *, _instance)
|
||||
|
||||
#define FOREACH_SELECTED_OBJECT_END \
|
||||
ITER_END
|
||||
ITER_END; \
|
||||
} ((void)0)
|
||||
|
||||
#define FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN(view_layer, _instance) \
|
||||
#define FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
|
||||
{ \
|
||||
struct ObjectsVisibleIteratorData data_ = { \
|
||||
.view_layer = _view_layer, \
|
||||
.v3d = _v3d, \
|
||||
}; \
|
||||
ITER_BEGIN(BKE_view_layer_selected_editable_objects_iterator_begin, \
|
||||
BKE_view_layer_selected_editable_objects_iterator_next, \
|
||||
BKE_view_layer_selected_editable_objects_iterator_end, \
|
||||
view_layer, Object *, _instance)
|
||||
&data_, Object *, _instance)
|
||||
|
||||
#define FOREACH_SELECTED_EDITABLE_OBJECT_END \
|
||||
ITER_END
|
||||
ITER_END; \
|
||||
} ((void)0)
|
||||
|
||||
#define FOREACH_VISIBLE_OBJECT_BEGIN(view_layer, _instance) \
|
||||
#define FOREACH_VISIBLE_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
|
||||
{ \
|
||||
struct ObjectsVisibleIteratorData data_ = { \
|
||||
.view_layer = _view_layer, \
|
||||
.v3d = _v3d, \
|
||||
}; \
|
||||
ITER_BEGIN(BKE_view_layer_visible_objects_iterator_begin, \
|
||||
BKE_view_layer_visible_objects_iterator_next, \
|
||||
BKE_view_layer_visible_objects_iterator_end, \
|
||||
view_layer, Object *, _instance)
|
||||
&data_, Object *, _instance)
|
||||
|
||||
#define FOREACH_VISIBLE_OBJECT_END \
|
||||
ITER_END
|
||||
ITER_END; \
|
||||
} ((void)0)
|
||||
|
||||
|
||||
#define FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _object_mode, _instance) \
|
||||
#define FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, _object_mode, _instance) \
|
||||
{ \
|
||||
struct ObjectsInModeIteratorData data_ = { \
|
||||
.object_mode = _object_mode, \
|
||||
.view_layer = _view_layer, \
|
||||
.v3d = _v3d, \
|
||||
.base_active = _view_layer->basact, \
|
||||
}; \
|
||||
ITER_BEGIN(BKE_view_layer_bases_in_mode_iterator_begin, \
|
||||
|
@ -218,14 +243,14 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter);
|
|||
ITER_END; \
|
||||
} ((void)0)
|
||||
|
||||
#define FOREACH_BASE_IN_EDIT_MODE_BEGIN(_view_layer, _instance) \
|
||||
FOREACH_BASE_IN_MODE_BEGIN(_view_layer, OB_MODE_EDIT, _instance)
|
||||
#define FOREACH_BASE_IN_EDIT_MODE_BEGIN(_view_layer, _v3d, _instance) \
|
||||
FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, OB_MODE_EDIT, _instance)
|
||||
|
||||
#define FOREACH_BASE_IN_EDIT_MODE_END \
|
||||
FOREACH_BASE_IN_MODE_END
|
||||
|
||||
#define FOREACH_OBJECT_IN_MODE_BEGIN(_view_layer, _object_mode, _instance) \
|
||||
FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _object_mode, _base) { \
|
||||
#define FOREACH_OBJECT_IN_MODE_BEGIN(_view_layer, _v3d, _object_mode, _instance) \
|
||||
FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, _object_mode, _base) { \
|
||||
Object *_instance = _base->object;
|
||||
|
||||
#define FOREACH_OBJECT_IN_MODE_END \
|
||||
|
@ -247,14 +272,20 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter);
|
|||
#define FOREACH_SELECTED_BASE_END \
|
||||
ITER_END
|
||||
|
||||
#define FOREACH_VISIBLE_BASE_BEGIN(view_layer, _instance) \
|
||||
#define FOREACH_VISIBLE_BASE_BEGIN(_view_layer, _v3d, _instance) \
|
||||
{ \
|
||||
struct ObjectsVisibleIteratorData data_ = { \
|
||||
.view_layer = _view_layer, \
|
||||
.v3d = _v3d, \
|
||||
}; \
|
||||
ITER_BEGIN(BKE_view_layer_visible_bases_iterator_begin, \
|
||||
BKE_view_layer_visible_bases_iterator_next, \
|
||||
BKE_view_layer_visible_bases_iterator_end, \
|
||||
view_layer, Base *, _instance)
|
||||
&data_, Base *, _instance)
|
||||
|
||||
#define FOREACH_VISIBLE_BASE_END \
|
||||
ITER_END
|
||||
ITER_END; \
|
||||
} ((void)0)
|
||||
|
||||
|
||||
#define FOREACH_OBJECT_BEGIN(view_layer, _instance) \
|
||||
|
@ -332,21 +363,21 @@ struct ObjectsInModeParams {
|
|||
};
|
||||
|
||||
Base **BKE_view_layer_array_from_bases_in_mode_params(
|
||||
struct ViewLayer *view_layer, uint *r_len,
|
||||
struct ViewLayer *view_layer, struct View3D *v3d, uint *r_len,
|
||||
const struct ObjectsInModeParams *params);
|
||||
|
||||
struct Object **BKE_view_layer_array_from_objects_in_mode_params(
|
||||
struct ViewLayer *view_layer, uint *len,
|
||||
struct ViewLayer *view_layer, struct View3D *v3d, uint *len,
|
||||
const struct ObjectsInModeParams *params);
|
||||
|
||||
#define BKE_view_layer_array_from_objects_in_mode(view_layer, r_len, ...) \
|
||||
#define BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, ...) \
|
||||
BKE_view_layer_array_from_objects_in_mode_params( \
|
||||
view_layer, r_len, \
|
||||
view_layer, v3d, r_len, \
|
||||
&(const struct ObjectsInModeParams)__VA_ARGS__)
|
||||
|
||||
#define BKE_view_layer_array_from_bases_in_mode(view_layer, r_len, ...) \
|
||||
#define BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, ...) \
|
||||
BKE_view_layer_array_from_bases_in_mode_params( \
|
||||
view_layer, r_len, \
|
||||
view_layer, v3d, r_len, \
|
||||
&(const struct ObjectsInModeParams)__VA_ARGS__)
|
||||
|
||||
bool BKE_view_layer_filter_edit_mesh_has_uvs(struct Object *ob, void *user_data);
|
||||
|
@ -354,38 +385,38 @@ bool BKE_view_layer_filter_edit_mesh_has_edges(struct Object *ob, void *user_dat
|
|||
|
||||
/* Utility macros that wrap common args (add more as needed). */
|
||||
|
||||
#define BKE_view_layer_array_from_objects_in_edit_mode(view_layer, r_len) \
|
||||
#define BKE_view_layer_array_from_objects_in_edit_mode(view_layer, v3d, r_len) \
|
||||
BKE_view_layer_array_from_objects_in_mode( \
|
||||
view_layer, r_len, { \
|
||||
view_layer, v3d, r_len, { \
|
||||
.object_mode = OB_MODE_EDIT});
|
||||
|
||||
#define BKE_view_layer_array_from_bases_in_edit_mode(view_layer, r_len) \
|
||||
#define BKE_view_layer_array_from_bases_in_edit_mode(view_layer, v3d, r_len) \
|
||||
BKE_view_layer_array_from_bases_in_mode( \
|
||||
view_layer, r_len, { \
|
||||
view_layer, v3d, r_len, { \
|
||||
.object_mode = OB_MODE_EDIT});
|
||||
|
||||
#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, r_len) \
|
||||
#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, r_len) \
|
||||
BKE_view_layer_array_from_objects_in_mode( \
|
||||
view_layer, r_len, { \
|
||||
view_layer, v3d, r_len, { \
|
||||
.object_mode = OB_MODE_EDIT, \
|
||||
.no_dup_data = true});
|
||||
|
||||
#define BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, r_len) \
|
||||
#define BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, v3d, r_len) \
|
||||
BKE_view_layer_array_from_bases_in_mode( \
|
||||
view_layer, r_len, { \
|
||||
view_layer, v3d, r_len, { \
|
||||
.object_mode = OB_MODE_EDIT, \
|
||||
.no_dup_data = true});
|
||||
|
||||
#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, r_len) \
|
||||
#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, v3d, r_len) \
|
||||
BKE_view_layer_array_from_objects_in_mode( \
|
||||
view_layer, r_len, { \
|
||||
view_layer, v3d, r_len, { \
|
||||
.object_mode = OB_MODE_EDIT, \
|
||||
.no_dup_data = true, \
|
||||
.filter_fn = BKE_view_layer_filter_edit_mesh_has_uvs});
|
||||
|
||||
#define BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, r_len, mode) \
|
||||
#define BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, v3d, r_len, mode) \
|
||||
BKE_view_layer_array_from_objects_in_mode( \
|
||||
view_layer, r_len, { \
|
||||
view_layer, v3d, r_len, { \
|
||||
.object_mode = mode, \
|
||||
.no_dup_data = true});
|
||||
|
||||
|
|
|
@ -148,13 +148,13 @@ bool BKE_object_pose_context_check(const struct Object *ob);
|
|||
struct Object *BKE_object_pose_armature_get(struct Object *ob);
|
||||
struct Object *BKE_object_pose_armature_get_visible(struct Object *ob, struct ViewLayer *view_layer, struct View3D *v3d);
|
||||
|
||||
struct Object **BKE_object_pose_array_get_ex(struct ViewLayer *view_layer, unsigned int *r_objects_len, bool unique);
|
||||
struct Object **BKE_object_pose_array_get_unique(struct ViewLayer *view_layer, unsigned int *r_objects_len);
|
||||
struct Object **BKE_object_pose_array_get(struct ViewLayer *view_layer, unsigned int *r_objects_len);
|
||||
struct Object **BKE_object_pose_array_get_ex(struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_objects_len, bool unique);
|
||||
struct Object **BKE_object_pose_array_get_unique(struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_objects_len);
|
||||
struct Object **BKE_object_pose_array_get(struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_objects_len);
|
||||
|
||||
struct Base **BKE_object_pose_base_array_get_ex(struct ViewLayer *view_layer, unsigned int *r_bases_len, bool unique);
|
||||
struct Base **BKE_object_pose_base_array_get_unique(struct ViewLayer *view_layer, unsigned int *r_bases_len);
|
||||
struct Base **BKE_object_pose_base_array_get(struct ViewLayer *view_layer, unsigned int *r_bases_len);
|
||||
struct Base **BKE_object_pose_base_array_get_ex(struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_bases_len, bool unique);
|
||||
struct Base **BKE_object_pose_base_array_get_unique(struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_bases_len);
|
||||
struct Base **BKE_object_pose_base_array_get(struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_bases_len);
|
||||
|
||||
void BKE_object_get_parent_matrix(
|
||||
struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
|
||||
|
|
|
@ -1096,9 +1096,40 @@ void BKE_override_layer_collection_boolean_add(
|
|||
/** \name Private Iterator Helpers
|
||||
* \{ */
|
||||
|
||||
static void object_bases_iterator_begin(BLI_Iterator *iter, void *data_in, const int flag)
|
||||
typedef struct LayerObjectBaseIteratorData {
|
||||
View3D *v3d;
|
||||
Base *base;
|
||||
} LayerObjectBaseIteratorData;
|
||||
|
||||
static bool object_bases_iterator_is_valid_ex(View3D *v3d, Base *base, const int flag)
|
||||
{
|
||||
ViewLayer *view_layer = data_in;
|
||||
if (v3d != NULL) {
|
||||
if ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ((base->flag & flag) == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool object_bases_iterator_is_valid(View3D *v3d, Base *base)
|
||||
{
|
||||
return object_bases_iterator_is_valid_ex(v3d, base, ~(0));
|
||||
}
|
||||
|
||||
static void object_bases_iterator_begin(BLI_Iterator *iter, void *data_in_v, const int flag)
|
||||
{
|
||||
ObjectsVisibleIteratorData *data_in = data_in_v;
|
||||
ViewLayer *view_layer = data_in->view_layer;
|
||||
View3D *v3d = data_in->v3d;
|
||||
Base *base = view_layer->object_bases.first;
|
||||
|
||||
/* when there are no objects */
|
||||
|
@ -1107,9 +1138,13 @@ static void object_bases_iterator_begin(BLI_Iterator *iter, void *data_in, const
|
|||
return;
|
||||
}
|
||||
|
||||
iter->data = base;
|
||||
LayerObjectBaseIteratorData *data = MEM_callocN(sizeof(LayerObjectBaseIteratorData), __func__);
|
||||
iter->data = data;
|
||||
|
||||
if ((base->flag & flag) == 0) {
|
||||
data->v3d = v3d;
|
||||
data->base = base;
|
||||
|
||||
if (object_bases_iterator_is_valid_ex(v3d, base, flag) == false) {
|
||||
object_bases_iterator_next(iter, flag);
|
||||
}
|
||||
else {
|
||||
|
@ -1119,12 +1154,13 @@ static void object_bases_iterator_begin(BLI_Iterator *iter, void *data_in, const
|
|||
|
||||
static void object_bases_iterator_next(BLI_Iterator *iter, const int flag)
|
||||
{
|
||||
Base *base = ((Base *)iter->data)->next;
|
||||
LayerObjectBaseIteratorData *data = iter->data;
|
||||
Base *base = data->base->next;
|
||||
|
||||
while (base) {
|
||||
if ((base->flag & flag) != 0) {
|
||||
if (object_bases_iterator_is_valid_ex(data->v3d, base, flag)) {
|
||||
iter->current = base;
|
||||
iter->data = base;
|
||||
data->base = base;
|
||||
return;
|
||||
}
|
||||
base = base->next;
|
||||
|
@ -1133,6 +1169,11 @@ static void object_bases_iterator_next(BLI_Iterator *iter, const int flag)
|
|||
iter->valid = false;
|
||||
}
|
||||
|
||||
static void object_bases_iterator_end(BLI_Iterator *iter)
|
||||
{
|
||||
MEM_SAFE_FREE(iter->data);
|
||||
}
|
||||
|
||||
static void objects_iterator_begin(BLI_Iterator *iter, void *data_in, const int flag)
|
||||
{
|
||||
object_bases_iterator_begin(iter, data_in, flag);
|
||||
|
@ -1151,6 +1192,11 @@ static void objects_iterator_next(BLI_Iterator *iter, const int flag)
|
|||
}
|
||||
}
|
||||
|
||||
static void objects_iterator_end(BLI_Iterator *iter)
|
||||
{
|
||||
object_bases_iterator_end(iter);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name BKE_view_layer_selected_objects_iterator
|
||||
* See: #FOREACH_SELECTED_OBJECT_BEGIN
|
||||
|
@ -1166,9 +1212,9 @@ void BKE_view_layer_selected_objects_iterator_next(BLI_Iterator *iter)
|
|||
objects_iterator_next(iter, BASE_SELECTED);
|
||||
}
|
||||
|
||||
void BKE_view_layer_selected_objects_iterator_end(BLI_Iterator *UNUSED(iter))
|
||||
void BKE_view_layer_selected_objects_iterator_end(BLI_Iterator *iter)
|
||||
{
|
||||
/* do nothing */
|
||||
objects_iterator_end(iter);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
@ -1187,9 +1233,9 @@ void BKE_view_layer_visible_objects_iterator_next(BLI_Iterator *iter)
|
|||
objects_iterator_next(iter, BASE_VISIBLE);
|
||||
}
|
||||
|
||||
void BKE_view_layer_visible_objects_iterator_end(BLI_Iterator *UNUSED(iter))
|
||||
void BKE_view_layer_visible_objects_iterator_end(BLI_Iterator *iter)
|
||||
{
|
||||
/* do nothing */
|
||||
objects_iterator_end(iter);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
@ -1221,9 +1267,9 @@ void BKE_view_layer_selected_editable_objects_iterator_next(BLI_Iterator *iter)
|
|||
} while (iter->valid && BKE_object_is_libdata((Object *)iter->current) != false);
|
||||
}
|
||||
|
||||
void BKE_view_layer_selected_editable_objects_iterator_end(BLI_Iterator *UNUSED(iter))
|
||||
void BKE_view_layer_selected_editable_objects_iterator_end(BLI_Iterator *iter)
|
||||
{
|
||||
/* do nothing */
|
||||
objects_iterator_end(iter);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
@ -1234,7 +1280,7 @@ void BKE_view_layer_selected_editable_objects_iterator_end(BLI_Iterator *UNUSED(
|
|||
|
||||
void BKE_view_layer_selected_bases_iterator_begin(BLI_Iterator *iter, void *data_in)
|
||||
{
|
||||
object_bases_iterator_begin(iter, data_in, BASE_SELECTED);
|
||||
objects_iterator_begin(iter, data_in, BASE_SELECTED);
|
||||
}
|
||||
|
||||
void BKE_view_layer_selected_bases_iterator_next(BLI_Iterator *iter)
|
||||
|
@ -1242,9 +1288,9 @@ void BKE_view_layer_selected_bases_iterator_next(BLI_Iterator *iter)
|
|||
object_bases_iterator_next(iter, BASE_SELECTED);
|
||||
}
|
||||
|
||||
void BKE_view_layer_selected_bases_iterator_end(BLI_Iterator *UNUSED(iter))
|
||||
void BKE_view_layer_selected_bases_iterator_end(BLI_Iterator *iter)
|
||||
{
|
||||
/* do nothing */
|
||||
object_bases_iterator_end(iter);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
@ -1263,9 +1309,9 @@ void BKE_view_layer_visible_bases_iterator_next(BLI_Iterator *iter)
|
|||
object_bases_iterator_next(iter, BASE_VISIBLE);
|
||||
}
|
||||
|
||||
void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *UNUSED(iter))
|
||||
void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter)
|
||||
{
|
||||
/* do nothing */
|
||||
object_bases_iterator_end(iter);
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
@ -1377,6 +1423,10 @@ void BKE_view_layer_bases_in_mode_iterator_begin(BLI_Iterator *iter, void *data_
|
|||
}
|
||||
iter->data = data_in;
|
||||
iter->current = base;
|
||||
|
||||
if (object_bases_iterator_is_valid(data->v3d, base) == false) {
|
||||
BKE_view_layer_bases_in_mode_iterator_next(iter);
|
||||
}
|
||||
}
|
||||
|
||||
void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter)
|
||||
|
@ -1398,7 +1448,8 @@ void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter)
|
|||
while (base) {
|
||||
if ((base->object->type == data->base_active->object->type) &&
|
||||
(base != data->base_active) &&
|
||||
(base->object->mode & data->object_mode))
|
||||
(base->object->mode & data->object_mode) &&
|
||||
object_bases_iterator_is_valid(data->v3d, base))
|
||||
{
|
||||
iter->current = base;
|
||||
return;
|
||||
|
|
|
@ -40,11 +40,11 @@
|
|||
#include "MEM_guardedalloc.h"
|
||||
|
||||
Base **BKE_view_layer_array_from_bases_in_mode_params(
|
||||
ViewLayer *view_layer, uint *r_len,
|
||||
ViewLayer *view_layer, View3D *v3d, uint *r_len,
|
||||
const struct ObjectsInModeParams *params)
|
||||
{
|
||||
if (params->no_dup_data) {
|
||||
FOREACH_BASE_IN_MODE_BEGIN(view_layer, params->object_mode, base_iter) {
|
||||
FOREACH_BASE_IN_MODE_BEGIN(view_layer, v3d, params->object_mode, base_iter) {
|
||||
ID *id = base_iter->object->data;
|
||||
if (id) {
|
||||
id->tag |= LIB_TAG_DOIT;
|
||||
|
@ -55,7 +55,7 @@ Base **BKE_view_layer_array_from_bases_in_mode_params(
|
|||
Base **base_array = NULL;
|
||||
BLI_array_declare(base_array);
|
||||
|
||||
FOREACH_BASE_IN_MODE_BEGIN(view_layer, params->object_mode, base_iter) {
|
||||
FOREACH_BASE_IN_MODE_BEGIN(view_layer, v3d, params->object_mode, base_iter) {
|
||||
if (params->filter_fn) {
|
||||
if (!params->filter_fn(base_iter->object, params->filter_userdata)) {
|
||||
continue;
|
||||
|
@ -83,11 +83,11 @@ Base **BKE_view_layer_array_from_bases_in_mode_params(
|
|||
}
|
||||
|
||||
Object **BKE_view_layer_array_from_objects_in_mode_params(
|
||||
ViewLayer *view_layer, uint *r_len,
|
||||
ViewLayer *view_layer, View3D *v3d, uint *r_len,
|
||||
const struct ObjectsInModeParams *params)
|
||||
{
|
||||
Base **base_array = BKE_view_layer_array_from_bases_in_mode_params(
|
||||
view_layer, r_len, params);
|
||||
view_layer, v3d, r_len, params);
|
||||
if (base_array != NULL) {
|
||||
for (uint i = 0; i < *r_len; i++) {
|
||||
((Object **)base_array)[i] = base_array[i]->object;
|
||||
|
|
|
@ -1224,14 +1224,14 @@ Object *BKE_object_pose_armature_get_visible(Object *ob, ViewLayer *view_layer,
|
|||
/**
|
||||
* Access pose array with special check to get pose object when in weight paint mode.
|
||||
*/
|
||||
Object **BKE_object_pose_array_get_ex(ViewLayer *view_layer, uint *r_objects_len, bool unique)
|
||||
Object **BKE_object_pose_array_get_ex(ViewLayer *view_layer, View3D *v3d, uint *r_objects_len, bool unique)
|
||||
{
|
||||
Object *ob_active = OBACT(view_layer);
|
||||
Object *ob_pose = BKE_object_pose_armature_get(ob_active);
|
||||
Object **objects = NULL;
|
||||
if (ob_pose == ob_active) {
|
||||
objects = BKE_view_layer_array_from_objects_in_mode(
|
||||
view_layer, r_objects_len, {
|
||||
view_layer, v3d, r_objects_len, {
|
||||
.object_mode = OB_MODE_POSE,
|
||||
.no_dup_data = unique});
|
||||
}
|
||||
|
@ -1246,16 +1246,16 @@ Object **BKE_object_pose_array_get_ex(ViewLayer *view_layer, uint *r_objects_len
|
|||
}
|
||||
return objects;
|
||||
}
|
||||
Object **BKE_object_pose_array_get_unique(ViewLayer *view_layer, uint *r_objects_len)
|
||||
Object **BKE_object_pose_array_get_unique(ViewLayer *view_layer, View3D *v3d, uint *r_objects_len)
|
||||
{
|
||||
return BKE_object_pose_array_get_ex(view_layer, r_objects_len, true);
|
||||
return BKE_object_pose_array_get_ex(view_layer, v3d, r_objects_len, true);
|
||||
}
|
||||
Object **BKE_object_pose_array_get(ViewLayer *view_layer, uint *r_objects_len)
|
||||
Object **BKE_object_pose_array_get(ViewLayer *view_layer, View3D *v3d, uint *r_objects_len)
|
||||
{
|
||||
return BKE_object_pose_array_get_ex(view_layer, r_objects_len, false);
|
||||
return BKE_object_pose_array_get_ex(view_layer, v3d, r_objects_len, false);
|
||||
}
|
||||
|
||||
Base **BKE_object_pose_base_array_get_ex(ViewLayer *view_layer, uint *r_bases_len, bool unique)
|
||||
Base **BKE_object_pose_base_array_get_ex(ViewLayer *view_layer, View3D *v3d, uint *r_bases_len, bool unique)
|
||||
{
|
||||
Base *base_active = BASACT(view_layer);
|
||||
Object *ob_pose = base_active ? BKE_object_pose_armature_get(base_active->object) : NULL;
|
||||
|
@ -1273,7 +1273,7 @@ Base **BKE_object_pose_base_array_get_ex(ViewLayer *view_layer, uint *r_bases_le
|
|||
|
||||
if (base_active && (base_pose == base_active)) {
|
||||
bases = BKE_view_layer_array_from_bases_in_mode(
|
||||
view_layer, r_bases_len, {
|
||||
view_layer, v3d, r_bases_len, {
|
||||
.object_mode = OB_MODE_POSE,
|
||||
.no_dup_data = unique});
|
||||
}
|
||||
|
@ -1288,13 +1288,13 @@ Base **BKE_object_pose_base_array_get_ex(ViewLayer *view_layer, uint *r_bases_le
|
|||
}
|
||||
return bases;
|
||||
}
|
||||
Base **BKE_object_pose_base_array_get_unique(ViewLayer *view_layer, uint *r_bases_len)
|
||||
Base **BKE_object_pose_base_array_get_unique(ViewLayer *view_layer, View3D *v3d, uint *r_bases_len)
|
||||
{
|
||||
return BKE_object_pose_base_array_get_ex(view_layer, r_bases_len, true);
|
||||
return BKE_object_pose_base_array_get_ex(view_layer, v3d, r_bases_len, true);
|
||||
}
|
||||
Base **BKE_object_pose_base_array_get(ViewLayer *view_layer, uint *r_bases_len)
|
||||
Base **BKE_object_pose_base_array_get(ViewLayer *view_layer, View3D *v3d, uint *r_bases_len)
|
||||
{
|
||||
return BKE_object_pose_base_array_get_ex(view_layer, r_bases_len, false);
|
||||
return BKE_object_pose_base_array_get_ex(view_layer, v3d, r_bases_len, false);
|
||||
}
|
||||
|
||||
void BKE_object_transform_copy(Object *ob_tar, const Object *ob_src)
|
||||
|
|
|
@ -428,6 +428,7 @@ void BKE_object_eval_flush_base_flags(Depsgraph *depsgraph,
|
|||
object->base_flag |= BASE_FROM_SET;
|
||||
object->base_flag &= ~(BASE_SELECTED | BASE_SELECTABLE);
|
||||
}
|
||||
object->base_local_view_bits = base->local_view_bits;
|
||||
|
||||
/* Copy to original object datablock if needed. */
|
||||
if (DEG_is_active(depsgraph)) {
|
||||
|
|
|
@ -7406,25 +7406,21 @@ static void lib_link_window_scene_data_restore(wmWindow *win, Scene *scene)
|
|||
}
|
||||
|
||||
if (v3d->localvd) {
|
||||
/*Base *base;*/
|
||||
Base *base;
|
||||
|
||||
v3d->localvd->camera = scene->camera;
|
||||
|
||||
/* localview can become invalid during undo/redo steps, so we exit it when no could be found */
|
||||
#if 0 /* XXX regionlocalview ? */
|
||||
for (base= sc->scene->base.first; base; base= base->next) {
|
||||
if (base->lay & v3d->lay) break;
|
||||
/* Localview can become invalid during undo/redo steps, so we exit it when no could be found. */
|
||||
for (base = screen->scene->base.first; base; base = base->next) {
|
||||
if (base->local_view_bits & v3d->local_view_uuid) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (base==NULL) {
|
||||
v3d->lay= v3d->localvd->lay;
|
||||
v3d->layact= v3d->localvd->layact;
|
||||
if (base == NULL) {
|
||||
MEM_freeN(v3d->localvd);
|
||||
v3d->localvd= NULL;
|
||||
v3d->localvd = NULL;
|
||||
v3d->local_view_uuid = 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if (v3d->scenelock) {
|
||||
v3d->lay = scene->lay;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7446,9 +7442,6 @@ static void lib_link_workspace_layout_restore(struct IDNameLib_Map *id_map, Main
|
|||
v3d->camera = restore_pointer_by_name(id_map, (ID *)v3d->camera, USER_REAL);
|
||||
v3d->ob_centre = restore_pointer_by_name(id_map, (ID *)v3d->ob_centre, USER_REAL);
|
||||
|
||||
/* not very nice, but could help */
|
||||
if ((v3d->layact & v3d->lay) == 0) v3d->layact = v3d->lay;
|
||||
|
||||
/* free render engines for now */
|
||||
for (ar = sa->regionbase.first; ar; ar = ar->next) {
|
||||
if (ar->regiontype == RGN_TYPE_WINDOW) {
|
||||
|
|
|
@ -137,6 +137,7 @@ bool deg_objects_dupli_iterator_next(BLI_Iterator *iter)
|
|||
*temp_dupli_object = *dob->ob;
|
||||
temp_dupli_object->select_color = dupli_parent->select_color;
|
||||
temp_dupli_object->base_flag = dupli_parent->base_flag | BASE_FROMDUPLI;
|
||||
temp_dupli_object->base_local_view_bits = dupli_parent->base_local_view_bits;
|
||||
|
||||
/* Duplicated elements shouldn't care whether their original collection is visible or not. */
|
||||
temp_dupli_object->base_flag |= BASE_VISIBLE;
|
||||
|
|
|
@ -1426,9 +1426,13 @@ void DRW_draw_render_loop_ex(
|
|||
const int object_type_exclude_viewport = v3d->object_type_exclude_viewport;
|
||||
DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN(depsgraph, ob)
|
||||
{
|
||||
if ((object_type_exclude_viewport & (1 << ob->type)) == 0) {
|
||||
drw_engines_cache_populate(ob);
|
||||
if ((object_type_exclude_viewport & (1 << ob->type)) != 0) {
|
||||
continue;
|
||||
}
|
||||
if (v3d->localvd && ((v3d->local_view_uuid & ob->base_local_view_bits) == 0)) {
|
||||
continue;
|
||||
}
|
||||
drw_engines_cache_populate(ob);
|
||||
}
|
||||
DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END;
|
||||
|
||||
|
@ -2043,7 +2047,7 @@ void DRW_draw_select_loop(
|
|||
#if 0
|
||||
drw_engines_cache_populate(obact);
|
||||
#else
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, obact->mode, ob_iter) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, obact->mode, ob_iter) {
|
||||
drw_engines_cache_populate(ob_iter);
|
||||
}
|
||||
FOREACH_OBJECT_IN_MODE_END;
|
||||
|
@ -2060,6 +2064,10 @@ void DRW_draw_select_loop(
|
|||
DEG_ITER_OBJECT_FLAG_VISIBLE |
|
||||
DEG_ITER_OBJECT_FLAG_DUPLI)
|
||||
{
|
||||
if (v3d->localvd && ((v3d->local_view_uuid & ob->base_local_view_bits) == 0)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((ob->base_flag & BASE_SELECTABLE) &&
|
||||
(object_type_exclude_select & (1 << ob->type)) == 0)
|
||||
{
|
||||
|
@ -2237,9 +2245,15 @@ void DRW_draw_depth_loop(
|
|||
const int object_type_exclude_viewport = v3d->object_type_exclude_viewport;
|
||||
DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN(depsgraph, ob)
|
||||
{
|
||||
if ((object_type_exclude_viewport & (1 << ob->type)) == 0) {
|
||||
drw_engines_cache_populate(ob);
|
||||
if ((object_type_exclude_viewport & (1 << ob->type)) != 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (v3d->localvd && ((v3d->local_view_uuid & ob->base_local_view_bits) == 0)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
drw_engines_cache_populate(ob);
|
||||
}
|
||||
DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END;
|
||||
|
||||
|
|
|
@ -490,7 +490,7 @@ static int armature_duplicate_selected_exec(bContext *C, wmOperator *op)
|
|||
return OPERATOR_CANCELLED;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
EditBone *ebone_iter;
|
||||
EditBone *ebone_first_dupe = NULL; /* The beginning of the duplicated bones in the edbo list */
|
||||
|
@ -645,7 +645,7 @@ static int armature_symmetrize_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
bArmature *arm = obedit->data;
|
||||
|
@ -872,7 +872,7 @@ static int armature_extrude_exec(bContext *C, wmOperator *op)
|
|||
bool changed_multi = false;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
|
|
@ -306,7 +306,7 @@ static int armature_calc_roll_exec(bContext *C, wmOperator *op)
|
|||
(type >= CALC_ROLL_TAN_NEG_X) ? true : false);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
@ -490,7 +490,7 @@ static int armature_roll_clear_exec(bContext *C, wmOperator *op)
|
|||
const float roll = RNA_float_get(op->ptr, "roll");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
@ -710,7 +710,7 @@ static int armature_fill_bones_exec(bContext *C, wmOperator *op)
|
|||
Object *obedit = NULL;
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, OB_MODE_EDIT, ob_iter) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, OB_MODE_EDIT, ob_iter) {
|
||||
if (ob_iter->data == arm) {
|
||||
obedit = ob_iter;
|
||||
}
|
||||
|
@ -948,7 +948,7 @@ static int armature_merge_exec(bContext *C, wmOperator *op)
|
|||
const short type = RNA_enum_get(op->ptr, "type");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -1072,7 +1072,7 @@ static int armature_switch_direction_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
@ -1326,7 +1326,7 @@ static int armature_split_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
@ -1387,7 +1387,7 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
bArmature *arm = obedit->data;
|
||||
|
@ -1458,7 +1458,7 @@ static int armature_dissolve_selected_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
bool changed_multi = false;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
bArmature *arm = obedit->data;
|
||||
|
@ -1626,7 +1626,7 @@ static int armature_hide_exec(bContext *C, wmOperator *op)
|
|||
return OPERATOR_CANCELLED;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
bArmature *arm = obedit->data;
|
||||
|
@ -1677,7 +1677,7 @@ static int armature_reveal_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
const bool select = RNA_boolean_get(op->ptr, "select");
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
bArmature *arm = obedit->data;
|
||||
|
|
|
@ -411,7 +411,7 @@ static int armature_flip_names_exec(bContext *C, wmOperator *op)
|
|||
const bool do_strip_numbers = RNA_boolean_get(op->ptr, "do_strip_numbers");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
@ -490,7 +490,7 @@ static int armature_autoside_names_exec(bContext *C, wmOperator *op)
|
|||
bool changed_multi = false;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
|
|
@ -587,7 +587,7 @@ static int separate_armature_exec(bContext *C, wmOperator *op)
|
|||
WM_cursor_wait(1);
|
||||
|
||||
uint bases_len = 0;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &bases_len);
|
||||
|
||||
CTX_DATA_BEGIN(C, Base *, base, visible_bases)
|
||||
{
|
||||
|
@ -897,7 +897,7 @@ static int armature_parent_clear_exec(bContext *C, wmOperator *op)
|
|||
CTX_DATA_END;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
|
|
@ -268,11 +268,11 @@ void *get_nearest_bone(
|
|||
|
||||
if (vc.obedit != NULL) {
|
||||
bases = BKE_view_layer_array_from_bases_in_mode(
|
||||
vc.view_layer, &bases_len, {
|
||||
vc.view_layer, vc.v3d, &bases_len, {
|
||||
.object_mode = OB_MODE_EDIT});
|
||||
}
|
||||
else {
|
||||
bases = BKE_object_pose_base_array_get(vc.view_layer, &bases_len);
|
||||
bases = BKE_object_pose_base_array_get(vc.view_layer, vc.v3d, &bases_len);
|
||||
}
|
||||
|
||||
void *bone = get_bone_from_selectbuffer(
|
||||
|
@ -470,7 +470,7 @@ cache_end:
|
|||
view3d_opengl_select_cache_end();
|
||||
|
||||
uint bases_len;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(vc->view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(vc->view_layer, vc->v3d, &bases_len);
|
||||
|
||||
/* See if there are any selected bones in this group */
|
||||
if (hits > 0) {
|
||||
|
@ -630,7 +630,7 @@ bool ED_armature_edit_select_pick(bContext *C, const int mval[2], bool extend, b
|
|||
|
||||
if (!extend && !deselect && !toggle) {
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, vc.v3d, &objects_len);
|
||||
ED_armature_edit_deselect_all_multi(objects, objects_len);
|
||||
MEM_freeN(objects);
|
||||
}
|
||||
|
@ -886,7 +886,7 @@ static int armature_de_select_more_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
armature_select_more_less(ob, true);
|
||||
|
@ -915,7 +915,7 @@ static int armature_de_select_less_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
armature_select_more_less(ob, false);
|
||||
|
@ -987,7 +987,7 @@ static void select_similar_length(bContext *C, const float thresh)
|
|||
const float len_max = len * (1.0f + (thresh + FLT_EPSILON));
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
@ -1035,7 +1035,7 @@ static void select_similar_direction(bContext *C, const float thresh)
|
|||
bone_direction_worldspace_get(ob_act, ebone_act, dir_act);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
@ -1066,7 +1066,7 @@ static void select_similar_layer(bContext *C)
|
|||
EditBone *ebone_act = CTX_data_active_bone(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
@ -1103,7 +1103,7 @@ static void select_similar_prefix(bContext *C)
|
|||
}
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
@ -1142,7 +1142,7 @@ static void select_similar_suffix(bContext *C)
|
|||
return;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
@ -1452,7 +1452,7 @@ static int armature_select_mirror_exec(bContext *C, wmOperator *op)
|
|||
const bool extend = RNA_boolean_get(op->ptr, "extend");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
|
|
@ -156,7 +156,7 @@ static bool armature_undosys_step_encode(struct bContext *C, UndoStep *us_p)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
us->elems = MEM_callocN(sizeof(*us->elems) * objects_len, __func__);
|
||||
us->elems_len = objects_len;
|
||||
|
|
|
@ -741,9 +741,10 @@ static int pose_flip_names_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
const bool do_strip_numbers = RNA_boolean_get(op->ptr, "do_strip_numbers");
|
||||
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, OB_MODE_POSE, ob)
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, OB_MODE_POSE, ob)
|
||||
{
|
||||
bArmature *arm = ob->data;
|
||||
ListBase bones_names = {NULL};
|
||||
|
@ -1210,7 +1211,7 @@ static int pose_hide_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len;
|
||||
Object **objects = BKE_object_pose_array_get_unique(view_layer, &objects_len);
|
||||
Object **objects = BKE_object_pose_array_get_unique(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
bool changed_multi = false;
|
||||
|
||||
const int hide_select = !RNA_boolean_get(op->ptr, "unselected");
|
||||
|
@ -1278,7 +1279,7 @@ static int pose_reveal_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len;
|
||||
Object **objects = BKE_object_pose_array_get_unique(view_layer, &objects_len);
|
||||
Object **objects = BKE_object_pose_array_get_unique(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
bool changed_multi = false;
|
||||
const bool select = RNA_boolean_get(op->ptr, "select");
|
||||
void *select_p = POINTER_FROM_INT(select);
|
||||
|
@ -1327,7 +1328,8 @@ static int pose_flip_quats_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
bool changed_multi = false;
|
||||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, OB_MODE_POSE, ob_iter) {
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, OB_MODE_POSE, ob_iter) {
|
||||
bool changed = false;
|
||||
/* loop through all selected pchans, flipping and keying (as needed) */
|
||||
FOREACH_PCHAN_SELECTED_IN_OBJECT_BEGIN (ob_iter, pchan) {
|
||||
|
|
|
@ -144,7 +144,7 @@ void ED_pose_bone_select(Object *ob, bPoseChannel *pchan, bool select)
|
|||
/* called from editview.c, for mode-less pose selection */
|
||||
/* assumes scene obact and basact is still on old situation */
|
||||
bool ED_armature_pose_select_pick_with_buffer(
|
||||
ViewLayer *view_layer, Base *base, const unsigned int *buffer, short hits,
|
||||
ViewLayer *view_layer, View3D *v3d, Base *base, const unsigned int *buffer, short hits,
|
||||
bool extend, bool deselect, bool toggle, bool do_nearest)
|
||||
{
|
||||
Object *ob = base->object;
|
||||
|
@ -180,7 +180,7 @@ bool ED_armature_pose_select_pick_with_buffer(
|
|||
if (!extend && !deselect && !toggle) {
|
||||
{
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_object_pose_array_get_unique(view_layer, &objects_len);
|
||||
Object **objects = BKE_object_pose_array_get_unique(view_layer, v3d, &objects_len);
|
||||
ED_pose_deselect_all_multi(objects, objects_len, SEL_DESELECT, true);
|
||||
MEM_freeN(objects);
|
||||
}
|
||||
|
@ -683,7 +683,7 @@ static bool pose_select_same_group(bContext *C, bool extend)
|
|||
uint ob_index;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, &objects_len, OB_MODE_POSE);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len, OB_MODE_POSE);
|
||||
for (ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = BKE_object_pose_armature_get(objects[ob_index]);
|
||||
bArmature *arm = (ob) ? ob->data : NULL;
|
||||
|
@ -784,7 +784,7 @@ static bool pose_select_same_layer(bContext *C, bool extend)
|
|||
bool changed = false;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, &objects_len, OB_MODE_POSE);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len, OB_MODE_POSE);
|
||||
for (ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
ob->id.tag &= ~LIB_TAG_DOIT;
|
||||
|
@ -896,7 +896,7 @@ static bool pose_select_same_keyingset(bContext *C, ReportList *reports, bool ex
|
|||
}
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, &objects_len, OB_MODE_POSE);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len, OB_MODE_POSE);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = BKE_object_pose_armature_get(objects[ob_index]);
|
||||
bArmature *arm = (ob) ? ob->data : NULL;
|
||||
|
@ -1024,7 +1024,7 @@ static int pose_select_mirror_exec(bContext *C, wmOperator *op)
|
|||
const bool extend = RNA_boolean_get(op->ptr, "extend");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, &objects_len, OB_MODE_POSE);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len, OB_MODE_POSE);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
bArmature *arm = ob->data;
|
||||
|
|
|
@ -203,6 +203,7 @@ static int pose_slide_init(bContext *C, wmOperator *op, ePoseSlide_Modes mode)
|
|||
poseAnim_mapping_get(C, &pso->pfLinks);
|
||||
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(CTX_data_view_layer(C),
|
||||
CTX_wm_view3d(C),
|
||||
&pso->objects_len,
|
||||
OB_MODE_POSE);
|
||||
pso->ob_data_array = MEM_callocN(pso->objects_len * sizeof(tPoseSlideObject), "pose slide objects data");
|
||||
|
@ -1567,6 +1568,7 @@ static int pose_propagate_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
|
||||
ListBase pflinks = {NULL, NULL};
|
||||
tPChanFCurveLink *pfl;
|
||||
|
@ -1619,7 +1621,7 @@ static int pose_propagate_exec(bContext *C, wmOperator *op)
|
|||
BLI_freelistN(&modeData.sel_markers);
|
||||
|
||||
/* updates + notifiers */
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, OB_MODE_POSE, ob) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, v3d, OB_MODE_POSE, ob) {
|
||||
poseAnim_mapping_refresh(C, scene, ob);
|
||||
} FOREACH_OBJECT_IN_MODE_END;
|
||||
|
||||
|
|
|
@ -232,9 +232,10 @@ void POSE_OT_armature_apply(wmOperatorType *ot)
|
|||
static int pose_visual_transform_apply_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
Depsgraph *depsgraph = CTX_data_depsgraph(C);
|
||||
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, OB_MODE_POSE, ob)
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, v3d, OB_MODE_POSE, ob)
|
||||
{
|
||||
/* loop over all selected pchans
|
||||
*
|
||||
|
@ -779,7 +780,8 @@ static int pose_clear_transform_generic_exec(bContext *C, wmOperator *op,
|
|||
|
||||
/* only clear relevant transforms for selected bones */
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, OB_MODE_POSE, ob_iter)
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, OB_MODE_POSE, ob_iter)
|
||||
{
|
||||
Object *ob_eval = DEG_get_evaluated_object(CTX_data_depsgraph(C), ob_iter); // XXX: UGLY HACK (for autokey + clear transforms)
|
||||
ListBase dsources = {NULL, NULL};
|
||||
|
@ -935,11 +937,12 @@ void POSE_OT_transforms_clear(wmOperatorType *ot)
|
|||
static int pose_clear_user_transforms_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
float cframe = (float)CFRA;
|
||||
const bool only_select = RNA_boolean_get(op->ptr, "only_selected");
|
||||
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, OB_MODE_POSE, ob)
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, OB_MODE_POSE, ob)
|
||||
{
|
||||
if ((ob->adt) && (ob->adt->action)) {
|
||||
/* XXX: this is just like this to avoid contaminating anything else;
|
||||
|
|
|
@ -287,9 +287,10 @@ void poseAnim_mapping_reset(ListBase *pfLinks)
|
|||
void poseAnim_mapping_autoKeyframe(bContext *C, Scene *scene, ListBase *pfLinks, float cframe)
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
bool skip = true;
|
||||
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, OB_MODE_POSE, ob) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, v3d, OB_MODE_POSE, ob) {
|
||||
ob->id.tag &= ~LIB_TAG_DOIT;
|
||||
ob = poseAnim_object_get(ob);
|
||||
|
||||
|
@ -341,7 +342,7 @@ void poseAnim_mapping_autoKeyframe(bContext *C, Scene *scene, ListBase *pfLinks,
|
|||
* - only do this if keyframes should have been added
|
||||
* - do not calculate unless there are paths already to update...
|
||||
*/
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, OB_MODE_POSE, ob) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, v3d, OB_MODE_POSE, ob) {
|
||||
if (ob->id.tag & LIB_TAG_DOIT) {
|
||||
if (ob->pose->avs.path_bakeflag & MOTIONPATH_BAKE_HAS_PATHS) {
|
||||
//ED_pose_clear_paths(C, ob); // XXX for now, don't need to clear
|
||||
|
|
|
@ -1305,7 +1305,7 @@ static int separate_exec(bContext *C, wmOperator *op)
|
|||
WM_cursor_wait(1);
|
||||
|
||||
uint bases_len = 0;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &bases_len);
|
||||
for (uint b_index = 0; b_index < bases_len; b_index++) {
|
||||
Base *oldbase = bases[b_index];
|
||||
Base *newbase;
|
||||
|
@ -1431,7 +1431,7 @@ static int curve_split_exec(bContext *C, wmOperator *op)
|
|||
int ok = -1;
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -2394,7 +2394,7 @@ static int switch_direction_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
View3D *v3d = CTX_wm_view3d(C);
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -2952,7 +2952,7 @@ static int hide_exec(bContext *C, wmOperator *op)
|
|||
const bool invert = RNA_boolean_get(op->ptr, "unselected");
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -3041,7 +3041,7 @@ static int reveal_exec(bContext *C, wmOperator *op)
|
|||
bool changed_multi = false;
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
ListBase *editnurb = object_editcurve_get(obedit);
|
||||
|
@ -3501,7 +3501,7 @@ static int subdivide_exec(bContext *C, wmOperator *op)
|
|||
View3D *v3d = CTX_wm_view3d(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -3600,7 +3600,7 @@ bool ED_curve_pick_vert(
|
|||
data.mval_fl[1] = vc->mval[1];
|
||||
|
||||
uint bases_len;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(vc->view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(vc->view_layer, vc->v3d, &bases_len);
|
||||
for (uint base_index = 0; base_index < bases_len; base_index++) {
|
||||
Base *base = bases[base_index];
|
||||
data.is_changed = false;
|
||||
|
@ -3782,7 +3782,7 @@ static int set_handle_type_exec(bContext *C, wmOperator *op)
|
|||
const int handle_type = RNA_enum_get(op->ptr, "type");
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -3840,7 +3840,7 @@ static int curve_normals_make_consistent_exec(bContext *C, wmOperator *op)
|
|||
const bool calc_length = RNA_boolean_get(op->ptr, "calc_length");
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -4263,7 +4263,7 @@ static int make_segment_exec(bContext *C, wmOperator *op)
|
|||
} status = {0};
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -4573,7 +4573,7 @@ bool ED_curve_editnurb_select_pick(bContext *C, const int mval[2], bool extend,
|
|||
|
||||
if (!extend && !deselect && !toggle) {
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, vc.v3d, &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob_iter = objects[ob_index];
|
||||
|
||||
|
@ -4783,7 +4783,7 @@ static int spin_exec(bContext *C, wmOperator *op)
|
|||
unit_m4(viewmat);
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = (Curve *)obedit->data;
|
||||
|
@ -5393,7 +5393,7 @@ static int curve_extrude_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
View3D *v3d = CTX_wm_view3d(C);
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -5542,7 +5542,7 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op)
|
|||
bool changed_multi = false;
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -5622,7 +5622,7 @@ static int duplicate_exec(bContext *C, wmOperator *op)
|
|||
int ok = -1;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -6084,7 +6084,7 @@ static int curve_delete_exec(bContext *C, wmOperator *op)
|
|||
eCurveElem_Types type = RNA_enum_get(op->ptr, "type");
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
bool changed_multi = false;
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
|
@ -6188,7 +6188,7 @@ static int curve_dissolve_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
View3D *v3d = CTX_wm_view3d(C);
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = (Curve *)obedit->data;
|
||||
|
@ -6314,7 +6314,7 @@ static int curve_decimate_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = (Curve *)obedit->data;
|
||||
|
@ -6552,7 +6552,7 @@ static int clear_tilt_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
View3D *v3d = CTX_wm_view3d(C);
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
|
|
@ -796,7 +796,7 @@ static int curve_draw_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
ED_curve_deselect_all_multi(objects, objects_len);
|
||||
MEM_freeN(objects);
|
||||
}
|
||||
|
|
|
@ -429,7 +429,7 @@ static int de_select_first_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -461,7 +461,7 @@ static int de_select_last_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -497,7 +497,7 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
if (action == SEL_TOGGLE) {
|
||||
action = SEL_SELECT;
|
||||
|
@ -565,7 +565,7 @@ static int select_linked_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
View3D *v3d = CTX_wm_view3d(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -745,7 +745,7 @@ static int select_next_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -779,7 +779,7 @@ static int select_previous_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -879,7 +879,7 @@ static int curve_select_more_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
curve_select_more(obedit);
|
||||
|
@ -1076,7 +1076,7 @@ static int curve_select_less_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
curve_select_less(obedit);
|
||||
|
@ -1152,7 +1152,7 @@ static int curve_select_random_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -1271,7 +1271,7 @@ static int select_nth_exec(bContext *C, wmOperator *op)
|
|||
WM_operator_properties_checker_interval_from_op(op, &op_params);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Curve *cu = obedit->data;
|
||||
|
@ -1555,7 +1555,7 @@ static int curve_select_similar_exec(bContext *C, wmOperator *op)
|
|||
View3D *v3d = CTX_wm_view3d(C);
|
||||
int tot_nurbs_selected_all = 0;
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
|
|
@ -220,7 +220,7 @@ static bool curve_undosys_step_encode(struct bContext *C, UndoStep *us_p)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
us->elems = MEM_callocN(sizeof(*us->elems) * objects_len, __func__);
|
||||
us->elems_len = objects_len;
|
||||
|
|
|
@ -48,6 +48,7 @@ struct Mesh;
|
|||
struct Object;
|
||||
struct ReportList;
|
||||
struct Scene;
|
||||
struct View3D;
|
||||
struct ViewLayer;
|
||||
struct ViewContext;
|
||||
struct wmKeyConfig;
|
||||
|
@ -154,7 +155,7 @@ void ED_armature_edit_deselect_all_multi(struct Object **objects, uint objects_l
|
|||
void ED_armature_edit_deselect_all_visible_multi(struct Object **objects, uint objects_len);
|
||||
|
||||
bool ED_armature_pose_select_pick_with_buffer(
|
||||
struct ViewLayer *view_layer, struct Base *base, const unsigned int *buffer, short hits,
|
||||
struct ViewLayer *view_layer, struct View3D *v3d, struct Base *base, const unsigned int *buffer, short hits,
|
||||
bool extend, bool deselect, bool toggle, bool do_nearest);
|
||||
bool ED_armature_edit_select_pick(
|
||||
struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle);
|
||||
|
|
|
@ -46,6 +46,7 @@ struct ShaderFxData;
|
|||
struct Object;
|
||||
struct ReportList;
|
||||
struct Scene;
|
||||
struct View3D;
|
||||
struct ViewLayer;
|
||||
struct bConstraint;
|
||||
struct bContext;
|
||||
|
@ -111,8 +112,8 @@ void ED_object_parent_clear(struct Object *ob, const int type);
|
|||
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode);
|
||||
void ED_object_base_activate(struct bContext *C, struct Base *base);
|
||||
void ED_object_base_free_and_unlink(struct Main *bmain, struct Scene *scene, struct Object *ob);
|
||||
bool ED_object_base_deselect_all_ex(struct ViewLayer *view_layer, int action, bool *r_any_visible);
|
||||
bool ED_object_base_deselect_all(struct ViewLayer *view_layer, int action);
|
||||
bool ED_object_base_deselect_all_ex(struct ViewLayer *view_layer, struct View3D *v3d, int action, bool *r_any_visible);
|
||||
bool ED_object_base_deselect_all(struct ViewLayer *view_layer, struct View3D *v3d, int action);
|
||||
|
||||
/* single object duplicate, if (dupflag == 0), fully linked, else it uses the flags given */
|
||||
struct Base *ED_object_add_duplicate(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct Base *base, int dupflag);
|
||||
|
|
|
@ -41,6 +41,7 @@ struct ImageUser;
|
|||
struct Main;
|
||||
struct Object;
|
||||
struct Scene;
|
||||
struct View3D;
|
||||
struct ViewLayer;
|
||||
struct SpaceImage;
|
||||
struct bNode;
|
||||
|
|
|
@ -95,7 +95,7 @@ static int lattice_select_random_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Lattice *lt = ((Lattice *)obedit->data)->editlatt->latt;
|
||||
|
@ -201,7 +201,7 @@ static int lattice_select_mirror_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -271,7 +271,7 @@ static int lattice_select_more_less(bContext *C, const bool select)
|
|||
uint objects_len;
|
||||
bool changed = false;
|
||||
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Lattice *lt = ((Lattice *)obedit->data)->editlatt->latt;
|
||||
|
@ -387,7 +387,7 @@ static int lattice_select_all_exec(bContext *C, wmOperator *op)
|
|||
int action = RNA_enum_get(op->ptr, "action");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
if (action == SEL_TOGGLE) {
|
||||
action = SEL_SELECT;
|
||||
|
@ -467,7 +467,7 @@ static int lattice_select_ungrouped_exec(bContext *C, wmOperator *op)
|
|||
const bool is_extend = RNA_boolean_get(op->ptr, "extend");
|
||||
bool changed = false;
|
||||
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Lattice *lt = ((Lattice *)obedit->data)->editlatt->latt;
|
||||
|
@ -566,7 +566,7 @@ static BPoint *findnearestLattvert(ViewContext *vc, int sel, Base **r_base)
|
|||
data.mval_fl[1] = vc->mval[1];
|
||||
|
||||
uint bases_len;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(vc->view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(vc->view_layer, vc->v3d, &bases_len);
|
||||
for (uint base_index = 0; base_index < bases_len; base_index++) {
|
||||
Base *base = bases[base_index];
|
||||
data.is_changed = false;
|
||||
|
@ -600,7 +600,7 @@ bool ED_lattice_select_pick(bContext *C, const int mval[2], bool extend, bool de
|
|||
|
||||
if (!extend && !deselect && !toggle) {
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, vc.v3d, &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
ED_lattice_flags_set(ob, 0);
|
||||
|
|
|
@ -73,11 +73,12 @@ static bool make_regular_poll(bContext *C)
|
|||
static int make_regular_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
const bool is_editmode = CTX_data_edit_object(C) != NULL;
|
||||
|
||||
if (is_editmode) {
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
Lattice *lt = ob->data;
|
||||
|
@ -94,7 +95,7 @@ static int make_regular_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
MEM_freeN(objects);
|
||||
}
|
||||
else {
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, ob) {
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, v3d, ob) {
|
||||
if (ob->type != OB_LATTICE) {
|
||||
continue;
|
||||
}
|
||||
|
@ -218,7 +219,7 @@ static int lattice_flip_exec(bContext *C, wmOperator *op)
|
|||
bool changed = false;
|
||||
const eLattice_FlipAxes axis = RNA_enum_get(op->ptr, "axis");
|
||||
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Lattice *lt;
|
||||
|
|
|
@ -157,7 +157,7 @@ static bool lattice_undosys_step_encode(struct bContext *C, UndoStep *us_p)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
us->elems = MEM_callocN(sizeof(*us->elems) * objects_len, __func__);
|
||||
us->elems_len = objects_len;
|
||||
|
|
|
@ -245,7 +245,7 @@ static bool edbm_bevel_init(bContext *C, wmOperator *op, const bool is_modal)
|
|||
|
||||
{
|
||||
uint ob_store_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &ob_store_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &ob_store_len);
|
||||
opdata->ob_store = MEM_malloc_arrayN(ob_store_len, sizeof(*opdata->ob_store), __func__);
|
||||
for (uint ob_index = 0; ob_index < ob_store_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
|
|
@ -130,7 +130,7 @@ static int mesh_bisect_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
}
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -299,7 +299,7 @@ static int mesh_bisect_exec(bContext *C, wmOperator *op)
|
|||
/* -------------------------------------------------------------------- */
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(CTX_data_view_layer(C), &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(CTX_data_view_layer(C), CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
|
|
@ -296,7 +296,7 @@ static int edbm_extrude_repeat_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
|
||||
|
@ -407,7 +407,7 @@ static int edbm_extrude_region_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -462,7 +462,7 @@ static int edbm_extrude_context_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -512,7 +512,7 @@ static int edbm_extrude_verts_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -559,7 +559,7 @@ static int edbm_extrude_edges_exec(bContext *C, wmOperator *op)
|
|||
const bool use_normal_flip = RNA_boolean_get(op->ptr, "use_normal_flip");
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -606,7 +606,7 @@ static int edbm_extrude_faces_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -669,7 +669,7 @@ static int edbm_dupli_extrude_cursor_invoke(bContext *C, wmOperator *op, const w
|
|||
verts_len = 0;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, vc.v3d, &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
ED_view3d_viewcontext_init_object(&vc, obedit);
|
||||
|
|
|
@ -76,7 +76,7 @@ static int edbm_screw_exec(bContext *C, wmOperator *op)
|
|||
|
||||
uint objects_len = 0;
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
|
|
@ -85,7 +85,7 @@ static int edbm_spin_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
|
|
@ -134,7 +134,7 @@ static bool edbm_inset_init(bContext *C, wmOperator *op, const bool is_modal)
|
|||
|
||||
{
|
||||
uint ob_store_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &ob_store_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &ob_store_len);
|
||||
opdata->ob_store = MEM_malloc_arrayN(ob_store_len, sizeof(*opdata->ob_store), __func__);
|
||||
for (uint ob_index = 0; ob_index < ob_store_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
|
|
@ -187,7 +187,7 @@ static int edbm_intersect_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
uint isect_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -290,7 +290,7 @@ static int edbm_intersect_boolean_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
uint isect_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -686,7 +686,7 @@ static int edbm_face_split_by_edges_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
|
|
@ -359,7 +359,7 @@ static int loopcut_init(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
if (is_interactive) {
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
|
|
|
@ -614,7 +614,7 @@ static int edbm_shortest_path_pick_invoke(bContext *C, wmOperator *op, const wmE
|
|||
{
|
||||
int base_index = -1;
|
||||
uint bases_len = 0;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(vc.view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(vc.view_layer, vc.v3d, &bases_len);
|
||||
if (EDBM_unified_findnearest(&vc, bases, bases_len, &base_index, &eve, &eed, &efa)) {
|
||||
basact = bases[base_index];
|
||||
ED_view3d_viewcontext_init_object(&vc, basact->object);
|
||||
|
@ -744,7 +744,7 @@ static int edbm_shortest_path_select_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
|
|
@ -71,10 +71,10 @@ static void edbm_selectmode_ensure(Scene *scene, BMEditMesh *em, short selectmod
|
|||
}
|
||||
|
||||
/* Could make public, for now just keep here. */
|
||||
static void edbm_flag_disable_all_multi(ViewLayer *view_layer, const char hflag)
|
||||
static void edbm_flag_disable_all_multi(ViewLayer *view_layer, View3D *v3d, const char hflag)
|
||||
{
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob_iter = objects[ob_index];
|
||||
BMEditMesh *em_iter = BKE_editmesh_from_object(ob_iter);
|
||||
|
@ -106,7 +106,7 @@ static bool edbm_preselect_or_active(
|
|||
Object *obedit = NULL;
|
||||
{
|
||||
uint bases_len;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(view_layer, CTX_wm_view3d(C), &bases_len);
|
||||
if (object_index < bases_len) {
|
||||
base = bases[object_index];
|
||||
obedit = base->object;
|
||||
|
@ -191,7 +191,7 @@ static int edbm_polybuild_face_at_cursor_invoke(
|
|||
mul_m4_v3(vc.obedit->imat, center);
|
||||
|
||||
BMVert *v_new = BM_vert_create(bm, center, NULL, BM_CREATE_NOP);
|
||||
edbm_flag_disable_all_multi(vc.view_layer, BM_ELEM_SELECT);
|
||||
edbm_flag_disable_all_multi(vc.view_layer, vc.v3d, BM_ELEM_SELECT);
|
||||
BM_vert_select_set(bm, v_new, true);
|
||||
BM_select_history_store(bm, v_new);
|
||||
changed = true;
|
||||
|
@ -215,7 +215,7 @@ static int edbm_polybuild_face_at_cursor_invoke(
|
|||
// BMFace *f_new =
|
||||
BM_face_create_verts(bm, v_tri, 3, f_reference, BM_CREATE_NOP, true);
|
||||
|
||||
edbm_flag_disable_all_multi(vc.view_layer, BM_ELEM_SELECT);
|
||||
edbm_flag_disable_all_multi(vc.view_layer, vc.v3d, BM_ELEM_SELECT);
|
||||
BM_vert_select_set(bm, v_tri[2], true);
|
||||
BM_select_history_store(bm, v_tri[2]);
|
||||
changed = true;
|
||||
|
@ -267,7 +267,7 @@ static int edbm_polybuild_face_at_cursor_invoke(
|
|||
// BMFace *f_new =
|
||||
BM_face_create_verts(bm, v_quad, 4, f_reference, BM_CREATE_NOP, true);
|
||||
|
||||
edbm_flag_disable_all_multi(vc.view_layer, BM_ELEM_SELECT);
|
||||
edbm_flag_disable_all_multi(vc.view_layer, vc.v3d, BM_ELEM_SELECT);
|
||||
BM_vert_select_set(bm, v_quad[2], true);
|
||||
BM_select_history_store(bm, v_quad[2]);
|
||||
changed = true;
|
||||
|
@ -362,7 +362,7 @@ static int edbm_polybuild_split_at_cursor_invoke(
|
|||
BMVert *v_new = BM_edge_split(bm, e_act, e_act->v1, NULL, CLAMPIS(fac, 0.0f, 1.0f));
|
||||
copy_v3_v3(v_new->co, center);
|
||||
|
||||
edbm_flag_disable_all_multi(vc.view_layer, BM_ELEM_SELECT);
|
||||
edbm_flag_disable_all_multi(vc.view_layer, vc.v3d, BM_ELEM_SELECT);
|
||||
BM_vert_select_set(bm, v_new, true);
|
||||
BM_select_history_store(bm, v_new);
|
||||
changed = true;
|
||||
|
@ -464,7 +464,7 @@ static int edbm_polybuild_dissolve_at_cursor_invoke(
|
|||
}
|
||||
|
||||
if (changed) {
|
||||
edbm_flag_disable_all_multi(vc.view_layer, BM_ELEM_SELECT);
|
||||
edbm_flag_disable_all_multi(vc.view_layer, vc.v3d, BM_ELEM_SELECT);
|
||||
|
||||
EDBM_mesh_normals_update(em);
|
||||
EDBM_update_generic(em, true, true);
|
||||
|
|
|
@ -1011,7 +1011,7 @@ static int edbm_rip_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
const bool do_fill = RNA_boolean_get(op->ptr, "use_fill");
|
||||
|
||||
bool no_vertex_selected = true;
|
||||
|
|
|
@ -55,7 +55,7 @@ static int edbm_rip_edge_invoke(bContext *C, wmOperator *UNUSED(op), const wmEve
|
|||
RegionView3D *rv3d = CTX_wm_region_view3d(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
|
|
@ -1555,7 +1555,7 @@ static int edbm_loop_multiselect_exec(bContext *C, wmOperator *op)
|
|||
const bool is_ring = RNA_boolean_get(op->ptr, "ring");
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -1711,7 +1711,7 @@ static bool mouse_mesh_loop(bContext *C, const int mval[2], bool extend, bool de
|
|||
em_original->selectmode = SCE_SELECT_EDGE;
|
||||
|
||||
uint bases_len;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(vc.view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(vc.view_layer, vc.v3d, &bases_len);
|
||||
|
||||
{
|
||||
int base_index = -1;
|
||||
|
@ -1930,7 +1930,7 @@ static int edbm_select_all_exec(bContext *C, wmOperator *op)
|
|||
int action = RNA_enum_get(op->ptr, "action");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
if (action == SEL_TOGGLE) {
|
||||
action = SEL_SELECT;
|
||||
|
@ -1995,7 +1995,7 @@ static int edbm_faces_select_interior_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -2052,7 +2052,7 @@ bool EDBM_select_pick(bContext *C, const int mval[2], bool extend, bool deselect
|
|||
vc.mval[1] = mval[1];
|
||||
|
||||
uint bases_len = 0;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(vc.view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(vc.view_layer, vc.v3d, &bases_len);
|
||||
|
||||
bool ok = false;
|
||||
|
||||
|
@ -2463,7 +2463,7 @@ bool EDBM_selectmode_toggle(
|
|||
}
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob_iter = objects[ob_index];
|
||||
|
@ -2806,7 +2806,7 @@ static int edbm_select_linked_exec(bContext *C, wmOperator *op)
|
|||
#endif
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -3138,7 +3138,7 @@ static int edbm_select_linked_pick_invoke(bContext *C, wmOperator *op, const wmE
|
|||
em_setup_viewcontext(C, &vc);
|
||||
|
||||
uint bases_len;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(vc.view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode(vc.view_layer, vc.v3d, &bases_len);
|
||||
|
||||
{
|
||||
bool has_edges = false;
|
||||
|
@ -3270,7 +3270,7 @@ static int edbm_select_face_by_sides_exec(bContext *C, wmOperator *op)
|
|||
const bool extend = RNA_boolean_get(op->ptr, "extend");
|
||||
const int numverts = RNA_int_get(op->ptr, "number");
|
||||
const int type = RNA_enum_get(op->ptr, "type");
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -3359,7 +3359,7 @@ static int edbm_select_loose_exec(bContext *C, wmOperator *op)
|
|||
const bool extend = RNA_boolean_get(op->ptr, "extend");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -3453,7 +3453,7 @@ static int edbm_select_mirror_exec(bContext *C, wmOperator *op)
|
|||
int tot_mirr = 0, tot_fail = 0;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -3521,7 +3521,7 @@ static int edbm_select_more_exec(bContext *C, wmOperator *op)
|
|||
const bool use_face_step = RNA_boolean_get(op->ptr, "use_face_step");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -3572,7 +3572,7 @@ static int edbm_select_less_exec(bContext *C, wmOperator *op)
|
|||
const bool use_face_step = RNA_boolean_get(op->ptr, "use_face_step");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -3809,7 +3809,7 @@ static int edbm_select_nth_exec(bContext *C, wmOperator *op)
|
|||
bool found_active_elt = false;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -3883,7 +3883,7 @@ static int edbm_select_sharp_edges_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -3952,7 +3952,7 @@ static int edbm_select_linked_flat_faces_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
const float angle_limit_cos = cosf(RNA_float_get(op->ptr, "sharpness"));
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
|
@ -4058,7 +4058,7 @@ static int edbm_select_non_manifold_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -4163,7 +4163,7 @@ static int edbm_select_random_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -4270,7 +4270,7 @@ static int edbm_select_ungrouped_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -4387,7 +4387,7 @@ static int edbm_select_axis_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit_iter = objects[ob_index];
|
||||
BMEditMesh *em_iter = BKE_editmesh_from_object(obedit_iter);
|
||||
|
@ -4476,7 +4476,7 @@ static int edbm_region_to_loop_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -4701,7 +4701,7 @@ static int edbm_loop_to_region_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
|
|
@ -197,7 +197,7 @@ static int similar_face_select_exec(bContext *C, wmOperator *op)
|
|||
|
||||
int tot_faces_selected_all = 0;
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
@ -683,7 +683,7 @@ static int similar_edge_select_exec(bContext *C, wmOperator *op)
|
|||
|
||||
int tot_edges_selected_all = 0;
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
@ -1038,7 +1038,7 @@ static int similar_vert_select_exec(bContext *C, wmOperator *op)
|
|||
|
||||
int tot_verts_selected_all = 0;
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
|
|
@ -117,7 +117,7 @@ static int edbm_subdivide_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -254,7 +254,7 @@ static int edbm_subdivide_edge_ring_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
struct EdgeRingOpSubdProps op_props;
|
||||
|
||||
mesh_operator_edgering_props_get(op, &op_props);
|
||||
|
@ -312,7 +312,7 @@ static int edbm_unsubdivide_exec(bContext *C, wmOperator *op)
|
|||
const int iterations = RNA_int_get(op->ptr, "iterations");
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -428,7 +428,7 @@ static int edbm_delete_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
bool changed_multi = false;
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
|
@ -549,7 +549,7 @@ static int edbm_delete_loose_exec(bContext *C, wmOperator *op)
|
|||
int totelem_old[3];
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
EDBM_mesh_stats_multi(objects, objects_len, totelem_old, totelem_old_sel);
|
||||
|
||||
|
@ -649,7 +649,7 @@ static int edbm_collapse_edge_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -871,7 +871,7 @@ static int edbm_add_edge_face_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -978,7 +978,7 @@ static int edbm_mark_seam_exec(bContext *C, wmOperator *op)
|
|||
const bool clear = RNA_boolean_get(op->ptr, "clear");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -1051,7 +1051,7 @@ static int edbm_mark_sharp_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -1188,7 +1188,7 @@ static int edbm_vert_connect_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
uint failed_objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -1442,7 +1442,7 @@ static int edbm_vert_connect_path_exec(bContext *C, wmOperator *op)
|
|||
uint objects_len = 0;
|
||||
uint failed_selection_order_len = 0;
|
||||
uint failed_connect_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -1519,7 +1519,7 @@ static int edbm_vert_connect_concave_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -1569,7 +1569,7 @@ static int edbm_vert_connect_nonplaner_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
const float angle_limit = RNA_float_get(op->ptr, "angle_limit");
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -1627,7 +1627,7 @@ static int edbm_face_make_planar_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
const int repeat = RNA_int_get(op->ptr, "repeat");
|
||||
const float fac = RNA_float_get(op->ptr, "factor");
|
||||
|
@ -1682,7 +1682,7 @@ static int edbm_edge_split_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -1735,7 +1735,7 @@ static int edbm_duplicate_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -1809,7 +1809,7 @@ static int edbm_flip_normals_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -1868,7 +1868,7 @@ static int edbm_edge_rotate_selected_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -1986,7 +1986,7 @@ static int edbm_hide_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -2037,7 +2037,7 @@ static int edbm_reveal_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -2078,7 +2078,7 @@ static int edbm_normals_make_consistent_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -2139,7 +2139,7 @@ static int edbm_do_smooth_vertex_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Mesh *me = obedit->data;
|
||||
|
@ -2254,7 +2254,7 @@ static int edbm_do_smooth_laplacian_vertex_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -2377,7 +2377,7 @@ static int edbm_faces_shade_smooth_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -2419,7 +2419,7 @@ static int edbm_faces_shade_flat_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -2464,7 +2464,7 @@ static int edbm_rotate_uvs_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -2496,7 +2496,7 @@ static int edbm_reverse_uvs_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -2531,7 +2531,7 @@ static int edbm_rotate_colors_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
@ -2567,7 +2567,7 @@ static int edbm_reverse_colors_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
@ -2776,7 +2776,7 @@ static int edbm_merge_exec(bContext *C, wmOperator *op)
|
|||
View3D *v3d = CTX_wm_view3d(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
const int type = RNA_enum_get(op->ptr, "type");
|
||||
const bool uvs = RNA_boolean_get(op->ptr, "uvs");
|
||||
|
||||
|
@ -2924,7 +2924,7 @@ static int edbm_remove_doubles_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -3052,7 +3052,7 @@ static int edbm_shape_propagate_to_all_exec(bContext *C, wmOperator *op)
|
|||
int tot_selected_verts_objects = 0;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Mesh *me = obedit->data;
|
||||
|
@ -3147,7 +3147,7 @@ static int edbm_blend_from_shape_exec(bContext *C, wmOperator *op)
|
|||
|
||||
int tot_selected_verts_objects = 0;
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Mesh *me = obedit->data;
|
||||
|
@ -3292,7 +3292,7 @@ static int edbm_solidify_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -3978,7 +3978,7 @@ static int edbm_separate_exec(bContext *C, wmOperator *op)
|
|||
if (ED_operator_editmesh(C)) {
|
||||
uint bases_len = 0;
|
||||
uint empty_selection_len = 0;
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, &bases_len);
|
||||
Base **bases = BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &bases_len);
|
||||
for (uint bs_index = 0; bs_index < bases_len; bs_index++) {
|
||||
Base *base = bases[bs_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(base->object);
|
||||
|
@ -4122,7 +4122,7 @@ static int edbm_fill_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -4352,7 +4352,7 @@ static int edbm_fill_grid_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -4474,7 +4474,7 @@ static int edbm_fill_holes_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -4529,7 +4529,7 @@ static int edbm_beautify_fill_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
const float angle_max = M_PI;
|
||||
const float angle_limit = RNA_float_get(op->ptr, "angle_limit");
|
||||
|
@ -4612,7 +4612,7 @@ static int edbm_poke_face_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -4685,7 +4685,7 @@ static int edbm_quads_convert_to_tris_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -4758,7 +4758,7 @@ static int edbm_tris_convert_to_quads_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
bool is_face_pair;
|
||||
|
||||
|
@ -4888,7 +4888,7 @@ static int edbm_decimate_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -5091,7 +5091,7 @@ static int edbm_dissolve_verts_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -5146,7 +5146,7 @@ static int edbm_dissolve_edges_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -5200,7 +5200,7 @@ static int edbm_dissolve_faces_exec(bContext *C, wmOperator *op)
|
|||
const bool use_verts = RNA_boolean_get(op->ptr, "use_verts");
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -5307,7 +5307,7 @@ static int edbm_dissolve_limited_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -5401,7 +5401,7 @@ static int edbm_dissolve_degenerate_exec(bContext *C, wmOperator *op)
|
|||
int totelem_new[3] = {0, 0, 0};
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -5474,7 +5474,7 @@ static int edbm_delete_edgeloop_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -5547,7 +5547,7 @@ static int edbm_split_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -6099,7 +6099,7 @@ static int edbm_sort_elements_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
@ -6362,7 +6362,7 @@ static int edbm_bridge_edge_loops_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -6433,7 +6433,7 @@ static int edbm_wireframe_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -6521,7 +6521,7 @@ static int edbm_offset_edgeloop_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -6602,7 +6602,7 @@ static int edbm_convex_hull_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -6723,7 +6723,7 @@ static int mesh_symmetrize_exec(bContext *C, wmOperator *op)
|
|||
const float thresh = RNA_float_get(op->ptr, "threshold");
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -6805,7 +6805,7 @@ static int mesh_symmetry_snap_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -6942,7 +6942,7 @@ static int edbm_mark_freestyle_edge_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -7021,7 +7021,7 @@ static int edbm_mark_freestyle_face_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -8142,7 +8142,7 @@ static int edbm_set_normals_from_faces_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
|
|
@ -706,7 +706,7 @@ static bool mesh_undosys_step_encode(struct bContext *C, UndoStep *us_p)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
us->elems = MEM_callocN(sizeof(*us->elems) * objects_len, __func__);
|
||||
us->elems_len = objects_len;
|
||||
|
|
|
@ -163,7 +163,7 @@ static bool mball_undosys_step_encode(struct bContext *C, UndoStep *us_p)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
us->elems = MEM_callocN(sizeof(*us->elems) * objects_len, __func__);
|
||||
us->elems_len = objects_len;
|
||||
|
|
|
@ -132,7 +132,7 @@ static int mball_select_all_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
if (action == SEL_TOGGLE) {
|
||||
action = BKE_mball_is_any_selected_multi(objects, objects_len) ?
|
||||
|
@ -312,7 +312,7 @@ static int mball_select_similar_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
tot_mball_selected_all = BKE_mball_select_count_multi(objects, objects_len);
|
||||
|
||||
|
@ -429,7 +429,7 @@ static int select_random_metaelems_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
MetaBall *mb = (MetaBall *)obedit->data;
|
||||
|
@ -490,7 +490,7 @@ static int duplicate_metaelems_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
MetaBall *mb = (MetaBall *)obedit->data;
|
||||
|
@ -541,7 +541,7 @@ static int delete_metaelems_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
MetaBall *mb = (MetaBall *)obedit->data;
|
||||
|
@ -690,7 +690,7 @@ bool ED_mball_select_pick(bContext *C, const int mval[2], bool extend, bool dese
|
|||
&vc, buffer, MAXPICKBUF, &rect,
|
||||
VIEW3D_SELECT_PICK_NEAREST, VIEW3D_SELECT_FILTER_NOP);
|
||||
|
||||
FOREACH_BASE_IN_EDIT_MODE_BEGIN (vc.view_layer, base) {
|
||||
FOREACH_BASE_IN_EDIT_MODE_BEGIN (vc.view_layer, vc.v3d, base) {
|
||||
ED_view3d_viewcontext_init_object(&vc, base->object);
|
||||
MetaBall *mb = (MetaBall *)base->object->data;
|
||||
MetaElem *ml, *ml_act = NULL;
|
||||
|
@ -752,7 +752,7 @@ bool ED_mball_select_pick(bContext *C, const int mval[2], bool extend, bool dese
|
|||
if (ml_act) {
|
||||
if (!extend && !deselect && !toggle) {
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc.view_layer, vc.v3d, &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob_iter = objects[ob_index];
|
||||
|
||||
|
|
|
@ -682,6 +682,7 @@ static int editmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
Object *obact = OBACT(view_layer);
|
||||
|
||||
if (!is_mode_set) {
|
||||
|
@ -693,7 +694,7 @@ static int editmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
if (!is_mode_set) {
|
||||
ED_object_editmode_enter(C, EM_WAITCURSOR);
|
||||
if (obact->mode & mode_flag) {
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, ob)
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, v3d, ob)
|
||||
{
|
||||
if ((ob != obact) && (ob->type == obact->type)) {
|
||||
ED_object_editmode_enter_ex(bmain, scene, ob, EM_WAITCURSOR | EM_NO_CONTEXT);
|
||||
|
@ -805,7 +806,8 @@ static int posemode_exec(bContext *C, wmOperator *op)
|
|||
if (ok) {
|
||||
struct Main *bmain = CTX_data_main(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, ob)
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, v3d, ob)
|
||||
{
|
||||
if ((ob != obact) &&
|
||||
(ob->type == OB_ARMATURE) &&
|
||||
|
|
|
@ -109,7 +109,7 @@ static int object_rand_verts_exec(bContext *C, wmOperator *op)
|
|||
|
||||
bool changed_multi = false;
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, &objects_len, ob_mode);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len, ob_mode);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob_iter = objects[ob_index];
|
||||
|
||||
|
|
|
@ -138,11 +138,14 @@ void ED_object_base_activate(bContext *C, Base *base)
|
|||
DEG_id_tag_update(&CTX_data_scene(C)->id, DEG_TAG_SELECT_UPDATE);
|
||||
}
|
||||
|
||||
bool ED_object_base_deselect_all_ex(ViewLayer *view_layer, int action, bool *r_any_visible)
|
||||
bool ED_object_base_deselect_all_ex(ViewLayer *view_layer, View3D *v3d, int action, bool *r_any_visible)
|
||||
{
|
||||
if (action == SEL_TOGGLE) {
|
||||
action = SEL_SELECT;
|
||||
FOREACH_VISIBLE_BASE_BEGIN(view_layer, base) {
|
||||
FOREACH_VISIBLE_BASE_BEGIN(view_layer, v3d, base) {
|
||||
if (v3d && ((v3d->object_type_exclude_select & (1 << base->object->type)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
if ((base->flag & BASE_SELECTED) != 0) {
|
||||
action = SEL_DESELECT;
|
||||
break;
|
||||
|
@ -153,7 +156,10 @@ bool ED_object_base_deselect_all_ex(ViewLayer *view_layer, int action, bool *r_a
|
|||
|
||||
bool any_visible = false;
|
||||
bool changed = false;
|
||||
FOREACH_VISIBLE_BASE_BEGIN(view_layer, base) {
|
||||
FOREACH_VISIBLE_BASE_BEGIN(view_layer, v3d, base) {
|
||||
if (v3d && ((v3d->object_type_exclude_select & (1 << base->object->type)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
switch (action) {
|
||||
case SEL_SELECT:
|
||||
if ((base->flag & BASE_SELECTED) == 0) {
|
||||
|
@ -188,9 +194,9 @@ bool ED_object_base_deselect_all_ex(ViewLayer *view_layer, int action, bool *r_a
|
|||
}
|
||||
|
||||
|
||||
bool ED_object_base_deselect_all(ViewLayer *view_layer, int action)
|
||||
bool ED_object_base_deselect_all(ViewLayer *view_layer, View3D *v3d, int action)
|
||||
{
|
||||
return ED_object_base_deselect_all_ex(view_layer, action, NULL);
|
||||
return ED_object_base_deselect_all_ex(view_layer, v3d, action, NULL);
|
||||
}
|
||||
|
||||
/********************** Jump To Object Utilities **********************/
|
||||
|
@ -258,6 +264,7 @@ bool ED_object_jump_to_object(
|
|||
bContext *C, Object *ob, const bool UNUSED(reveal_hidden))
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
Base *base = BKE_view_layer_base_find(view_layer, ob);
|
||||
|
||||
if (base == NULL) {
|
||||
|
@ -269,7 +276,7 @@ bool ED_object_jump_to_object(
|
|||
if (view_layer->basact != base || !(base->flag & BASE_SELECTED)) {
|
||||
/* Select if not selected. */
|
||||
if (!(base->flag & BASE_SELECTED)) {
|
||||
ED_object_base_deselect_all(view_layer, SEL_DESELECT);
|
||||
ED_object_base_deselect_all(view_layer, v3d, SEL_DESELECT);
|
||||
|
||||
if (base->flag & BASE_VISIBLE) {
|
||||
ED_object_base_select(base, BA_SELECT);
|
||||
|
@ -388,13 +395,14 @@ static bool objects_selectable_poll(bContext *C)
|
|||
static int object_select_by_type_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
short obtype, extend;
|
||||
|
||||
obtype = RNA_enum_get(op->ptr, "type");
|
||||
extend = RNA_boolean_get(op->ptr, "extend");
|
||||
|
||||
if (extend == 0) {
|
||||
ED_object_base_deselect_all(view_layer, SEL_DESELECT);
|
||||
ED_object_base_deselect_all(view_layer, v3d, SEL_DESELECT);
|
||||
}
|
||||
|
||||
CTX_DATA_BEGIN (C, Base *, base, visible_bases)
|
||||
|
@ -610,6 +618,7 @@ static int object_select_linked_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
Object *ob;
|
||||
int nr = RNA_enum_get(op->ptr, "type");
|
||||
bool changed = false, extend;
|
||||
|
@ -617,7 +626,7 @@ static int object_select_linked_exec(bContext *C, wmOperator *op)
|
|||
extend = RNA_boolean_get(op->ptr, "extend");
|
||||
|
||||
if (extend == 0) {
|
||||
ED_object_base_deselect_all(view_layer, SEL_DESELECT);
|
||||
ED_object_base_deselect_all(view_layer, v3d, SEL_DESELECT);
|
||||
}
|
||||
|
||||
ob = OBACT(view_layer);
|
||||
|
@ -981,6 +990,7 @@ static int object_select_grouped_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
Object *ob;
|
||||
const int type = RNA_enum_get(op->ptr, "type");
|
||||
bool changed = false, extend;
|
||||
|
@ -988,7 +998,7 @@ static int object_select_grouped_exec(bContext *C, wmOperator *op)
|
|||
extend = RNA_boolean_get(op->ptr, "extend");
|
||||
|
||||
if (extend == 0) {
|
||||
changed = ED_object_base_deselect_all(view_layer, SEL_DESELECT);
|
||||
changed = ED_object_base_deselect_all(view_layer, v3d, SEL_DESELECT);
|
||||
}
|
||||
|
||||
ob = OBACT(view_layer);
|
||||
|
@ -1073,10 +1083,11 @@ void OBJECT_OT_select_grouped(wmOperatorType *ot)
|
|||
static int object_select_all_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
int action = RNA_enum_get(op->ptr, "action");
|
||||
bool any_visible = false;
|
||||
|
||||
bool changed = ED_object_base_deselect_all_ex(view_layer, action, &any_visible);
|
||||
bool changed = ED_object_base_deselect_all_ex(view_layer, v3d, action, &any_visible);
|
||||
|
||||
if (changed) {
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
|
|
@ -3126,7 +3126,7 @@ static int vertex_group_smooth_exec(bContext *C, wmOperator *op)
|
|||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
||||
|
|
|
@ -93,6 +93,7 @@ const char *screen_context_dir[] = {
|
|||
int ed_screen_context(const bContext *C, const char *member, bContextDataResult *result)
|
||||
{
|
||||
wmWindow *win = CTX_wm_window(C);
|
||||
View3D *v3d = CTX_wm_view3d(C); /* This may be NULL in a lot of cases. */
|
||||
bScreen *sc = CTX_wm_screen(C);
|
||||
ScrArea *sa = CTX_wm_area(C);
|
||||
Scene *scene = WM_window_get_active_scene(win);
|
||||
|
@ -109,7 +110,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
return 1;
|
||||
}
|
||||
else if (CTX_data_equals(member, "visible_objects")) {
|
||||
FOREACH_VISIBLE_OBJECT_BEGIN(view_layer, ob)
|
||||
FOREACH_VISIBLE_OBJECT_BEGIN(view_layer, v3d, ob)
|
||||
{
|
||||
CTX_data_id_list_add(result, &ob->id);
|
||||
}
|
||||
|
@ -119,6 +120,15 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
}
|
||||
else if (CTX_data_equals(member, "selectable_objects")) {
|
||||
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
|
||||
if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
|
||||
continue;
|
||||
}
|
||||
if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
if (v3d && ((v3d->object_type_exclude_select & (1 << base->object->type)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
if (((base->flag & BASE_VISIBLE) != 0) && ((base->flag & BASE_SELECTABLE) != 0)) {
|
||||
CTX_data_id_list_add(result, &base->object->id);
|
||||
}
|
||||
|
@ -127,7 +137,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
return 1;
|
||||
}
|
||||
else if (CTX_data_equals(member, "selected_objects")) {
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, ob)
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, v3d, ob)
|
||||
{
|
||||
CTX_data_id_list_add(result, &ob->id);
|
||||
}
|
||||
|
@ -136,7 +146,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
return 1;
|
||||
}
|
||||
else if (CTX_data_equals(member, "selected_editable_objects")) {
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, ob)
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer, v3d, ob)
|
||||
{
|
||||
if (0 == BKE_object_is_libdata(ob)) {
|
||||
CTX_data_id_list_add(result, &ob->id);
|
||||
|
@ -148,7 +158,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
}
|
||||
else if (CTX_data_equals(member, "editable_objects")) {
|
||||
/* Visible + Editable, but not necessarily selected */
|
||||
FOREACH_VISIBLE_OBJECT_BEGIN(view_layer, ob)
|
||||
FOREACH_VISIBLE_OBJECT_BEGIN(view_layer, v3d, ob)
|
||||
{
|
||||
if (0 == BKE_object_is_libdata(ob)) {
|
||||
CTX_data_id_list_add(result, &ob->id);
|
||||
|
@ -159,7 +169,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
return 1;
|
||||
}
|
||||
else if ( CTX_data_equals(member, "visible_bases")) {
|
||||
FOREACH_VISIBLE_BASE_BEGIN(view_layer, base)
|
||||
FOREACH_VISIBLE_BASE_BEGIN(view_layer, v3d, base)
|
||||
{
|
||||
CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
|
||||
}
|
||||
|
@ -169,6 +179,15 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
}
|
||||
else if (CTX_data_equals(member, "selectable_bases")) {
|
||||
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
|
||||
if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
|
||||
continue;
|
||||
}
|
||||
if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
if (v3d && ((v3d->object_type_exclude_select & (1 << base->object->type)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
if ((base->flag & BASE_VISIBLE) && (base->flag & BASE_SELECTABLE) != 0) {
|
||||
CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
|
||||
}
|
||||
|
@ -178,6 +197,12 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
}
|
||||
else if (CTX_data_equals(member, "selected_bases")) {
|
||||
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
|
||||
if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
|
||||
continue;
|
||||
}
|
||||
if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
if ((base->flag & BASE_SELECTED) != 0) {
|
||||
CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
|
||||
}
|
||||
|
@ -187,6 +212,12 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
}
|
||||
else if (CTX_data_equals(member, "selected_editable_bases")) {
|
||||
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
|
||||
if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
|
||||
continue;
|
||||
}
|
||||
if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
if ((base->flag & BASE_SELECTED) != 0) {
|
||||
if (0 == BKE_object_is_libdata(base->object)) {
|
||||
CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
|
||||
|
@ -199,6 +230,12 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
else if (CTX_data_equals(member, "editable_bases")) {
|
||||
/* Visible + Editable, but not necessarily selected */
|
||||
for (Base *base = view_layer->object_bases.first; base; base = base->next) {
|
||||
if (v3d && v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
|
||||
continue;
|
||||
}
|
||||
if (v3d && ((v3d->object_type_exclude_viewport & (1 << base->object->type)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
if ((base->flag & BASE_VISIBLE) != 0) {
|
||||
if (0 == BKE_object_is_libdata(base->object)) {
|
||||
CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base);
|
||||
|
@ -215,7 +252,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
|
||||
if (arm && arm->edbo) {
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint i = 0; i < objects_len; i++) {
|
||||
Object *ob = objects[i];
|
||||
arm = ob->data;
|
||||
|
@ -266,7 +303,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
|
||||
if (arm && arm->edbo) {
|
||||
uint objects_len;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint i = 0; i < objects_len; i++) {
|
||||
Object *ob = objects[i];
|
||||
arm = ob->data;
|
||||
|
@ -319,7 +356,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
} FOREACH_PCHAN_SELECTED_IN_OBJECT_END;
|
||||
}
|
||||
else if (obact->mode & OB_MODE_POSE) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, OB_MODE_POSE, ob_iter) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, OB_MODE_POSE, ob_iter) {
|
||||
FOREACH_PCHAN_VISIBLE_IN_OBJECT_BEGIN (ob_iter, pchan) {
|
||||
CTX_data_list_add(result, &ob_iter->id, &RNA_PoseBone, pchan);
|
||||
} FOREACH_PCHAN_VISIBLE_IN_OBJECT_END;
|
||||
|
@ -338,7 +375,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
|
|||
} FOREACH_PCHAN_SELECTED_IN_OBJECT_END;
|
||||
}
|
||||
else if (obact->mode & OB_MODE_POSE) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, OB_MODE_POSE, ob_iter) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer, v3d, OB_MODE_POSE, ob_iter) {
|
||||
FOREACH_PCHAN_SELECTED_IN_OBJECT_BEGIN (ob_iter, pchan) {
|
||||
CTX_data_list_add(result, &ob_iter->id, &RNA_PoseBone, pchan);
|
||||
} FOREACH_PCHAN_SELECTED_IN_OBJECT_END;
|
||||
|
|
|
@ -398,7 +398,7 @@ static void stats_update(Depsgraph *depsgraph, ViewLayer *view_layer)
|
|||
|
||||
if (obedit) {
|
||||
/* Edit Mode */
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, ob->mode, ob_iter)
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN(view_layer, ((View3D *)NULL), ob->mode, ob_iter)
|
||||
{
|
||||
stats_object_edit(ob_iter, &stats);
|
||||
}
|
||||
|
|
|
@ -2853,13 +2853,13 @@ static int viewselected_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
else if (obedit) {
|
||||
/* only selected */
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer_eval, obedit->mode, ob_eval_iter) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer_eval, v3d, obedit->mode, ob_eval_iter) {
|
||||
ok |= ED_view3d_minmax_verts(ob_eval_iter, min, max);
|
||||
}
|
||||
FOREACH_OBJECT_IN_MODE_END;
|
||||
}
|
||||
else if (ob_eval && (ob_eval->mode & OB_MODE_POSE)) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer_eval, ob_eval->mode, ob_eval_iter) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (view_layer_eval, v3d, ob_eval->mode, ob_eval_iter) {
|
||||
ok |= BKE_pose_minmax(ob_eval_iter, min, max, true, true);
|
||||
}
|
||||
FOREACH_OBJECT_IN_MODE_END;
|
||||
|
|
|
@ -107,12 +107,13 @@ static int gizmo_preselect_elem_test_select(
|
|||
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
if (((gz_ele->bases)) == NULL ||
|
||||
(gz_ele->bases[0] != view_layer->basact))
|
||||
{
|
||||
MEM_SAFE_FREE(gz_ele->bases);
|
||||
gz_ele->bases = BKE_view_layer_array_from_bases_in_edit_mode(
|
||||
view_layer, &gz_ele->bases_len);
|
||||
view_layer, v3d, &gz_ele->bases_len);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -298,12 +299,13 @@ static int gizmo_preselect_edgering_test_select(
|
|||
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
if (((gz_ring->bases)) == NULL ||
|
||||
(gz_ring->bases[0] != view_layer->basact))
|
||||
{
|
||||
MEM_SAFE_FREE(gz_ring->bases);
|
||||
gz_ring->bases = BKE_view_layer_array_from_bases_in_edit_mode(
|
||||
view_layer, &gz_ring->bases_len);
|
||||
view_layer, v3d, &gz_ring->bases_len);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -171,10 +171,12 @@ void VIEW3D_OT_select_box(struct wmOperatorType *ot);
|
|||
void VIEW3D_OT_select_lasso(struct wmOperatorType *ot);
|
||||
void VIEW3D_OT_select_menu(struct wmOperatorType *ot);
|
||||
|
||||
/* view3d_view.c */
|
||||
void VIEW3D_OT_smoothview(struct wmOperatorType *ot);
|
||||
void VIEW3D_OT_camera_to_view(struct wmOperatorType *ot);
|
||||
void VIEW3D_OT_camera_to_view_selected(struct wmOperatorType *ot);
|
||||
void VIEW3D_OT_object_as_camera(struct wmOperatorType *ot);
|
||||
void VIEW3D_OT_localview(struct wmOperatorType *ot);
|
||||
|
||||
bool ED_view3d_boundbox_clip_ex(const RegionView3D *rv3d, const struct BoundBox *bb, float obmat[4][4]);
|
||||
bool ED_view3d_boundbox_clip(RegionView3D *rv3d, const struct BoundBox *bb);
|
||||
|
|
|
@ -204,6 +204,7 @@ void view3d_operatortypes(void)
|
|||
WM_operatortype_append(VIEW3D_OT_camera_to_view);
|
||||
WM_operatortype_append(VIEW3D_OT_camera_to_view_selected);
|
||||
WM_operatortype_append(VIEW3D_OT_object_as_camera);
|
||||
WM_operatortype_append(VIEW3D_OT_localview);
|
||||
WM_operatortype_append(VIEW3D_OT_fly);
|
||||
WM_operatortype_append(VIEW3D_OT_walk);
|
||||
WM_operatortype_append(VIEW3D_OT_navigate);
|
||||
|
|
|
@ -456,7 +456,7 @@ static Base **do_pose_tag_select_op_prepare(ViewContext *vc, uint *r_bases_len)
|
|||
{
|
||||
Base **bases = NULL;
|
||||
BLI_array_declare(bases);
|
||||
FOREACH_BASE_IN_MODE_BEGIN (vc->view_layer, OB_MODE_POSE, base_iter) {
|
||||
FOREACH_BASE_IN_MODE_BEGIN (vc->view_layer, vc->v3d, OB_MODE_POSE, base_iter) {
|
||||
Object *ob_iter = base_iter->object;
|
||||
bArmature *arm = ob_iter->data;
|
||||
for (bPoseChannel *pchan = ob_iter->pose->chanbase.first; pchan; pchan = pchan->next) {
|
||||
|
@ -1001,7 +1001,7 @@ static void view3d_lasso_select(
|
|||
}
|
||||
else { /* Edit Mode */
|
||||
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (vc->view_layer, ob->mode, ob_iter) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (vc->view_layer, vc->v3d, ob->mode, ob_iter) {
|
||||
ED_view3d_viewcontext_init_object(vc, ob_iter);
|
||||
|
||||
switch (vc->obedit->type) {
|
||||
|
@ -1729,7 +1729,7 @@ static bool ed_object_select_pick(
|
|||
}
|
||||
}
|
||||
else if (ED_armature_pose_select_pick_with_buffer(
|
||||
view_layer, basact, buffer, hits, extend, deselect, toggle, do_nearest))
|
||||
view_layer, v3d, basact, buffer, hits, extend, deselect, toggle, do_nearest))
|
||||
{
|
||||
/* then bone is found */
|
||||
|
||||
|
@ -2252,7 +2252,7 @@ static int do_armature_box_select(
|
|||
VIEW3D_SELECT_ALL, VIEW3D_SELECT_FILTER_NOP);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc->view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(vc->view_layer, vc->v3d, &objects_len);
|
||||
|
||||
/* clear flag we use to detect point was affected */
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
|
@ -2531,7 +2531,7 @@ static int view3d_box_select_exec(bContext *C, wmOperator *op)
|
|||
|
||||
if (vc.obedit) {
|
||||
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (vc.view_layer, vc.obedit->mode, ob_iter) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (vc.view_layer, vc.v3d, vc.obedit->mode, ob_iter) {
|
||||
ED_view3d_viewcontext_init_object(&vc, ob_iter);
|
||||
|
||||
switch (vc.obedit->type) {
|
||||
|
@ -3264,7 +3264,7 @@ static int view3d_circle_select_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
view3d_operator_needs_opengl(C);
|
||||
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (vc.view_layer, obact->mode, ob_iter) {
|
||||
FOREACH_OBJECT_IN_MODE_BEGIN (vc.view_layer, vc.v3d, obact->mode, ob_iter) {
|
||||
ED_view3d_viewcontext_init_object(&vc, ob_iter);
|
||||
|
||||
obact = vc.obact;
|
||||
|
|
|
@ -90,7 +90,7 @@ static int snap_sel_to_grid_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
if (obedit) {
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
obedit = objects[ob_index];
|
||||
|
||||
|
@ -132,7 +132,7 @@ static int snap_sel_to_grid_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
else {
|
||||
struct KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, ANIM_KS_LOCATION_ID);
|
||||
|
||||
FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN(view_layer_eval, ob_eval)
|
||||
FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN(view_layer_eval, v3d, ob_eval)
|
||||
{
|
||||
Object *ob = DEG_get_original_object(ob_eval);
|
||||
if (ob->mode & OB_MODE_POSE) {
|
||||
|
@ -268,7 +268,7 @@ static int snap_selected_to_location(bContext *C, const float snap_target_global
|
|||
float snap_target_local[3];
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
obedit = objects[ob_index];
|
||||
|
||||
|
@ -624,7 +624,7 @@ static bool snap_curs_to_sel_ex(bContext *C, float cursor[3])
|
|||
int global_transverts_tot = 0;
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
obedit = objects[ob_index];
|
||||
|
||||
|
@ -687,7 +687,7 @@ static bool snap_curs_to_sel_ex(bContext *C, float cursor[3])
|
|||
}
|
||||
}
|
||||
else {
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer_eval, ob_eval)
|
||||
FOREACH_SELECTED_OBJECT_BEGIN(view_layer_eval, v3d, ob_eval)
|
||||
{
|
||||
copy_v3_v3(vec, ob_eval->obmat[3]);
|
||||
|
||||
|
|
|
@ -91,14 +91,9 @@ void ED_view3d_background_color_get(const Scene *scene, const View3D *v3d, float
|
|||
}
|
||||
}
|
||||
|
||||
View3DCursor *ED_view3d_cursor3d_get(Scene *scene, View3D *v3d)
|
||||
View3DCursor *ED_view3d_cursor3d_get(Scene *scene, View3D *UNUSED(v3d))
|
||||
{
|
||||
if (v3d && v3d->localvd) {
|
||||
return &v3d->cursor;
|
||||
}
|
||||
else {
|
||||
return &scene->cursor;
|
||||
}
|
||||
return &scene->cursor;
|
||||
}
|
||||
|
||||
void ED_view3d_cursor3d_calc_mat3(const Scene *scene, const View3D *v3d, float mat[3][3])
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "BKE_context.h"
|
||||
#include "BKE_object.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_layer.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_report.h"
|
||||
#include "BKE_scene.h"
|
||||
|
@ -60,6 +61,7 @@
|
|||
#include "WM_api.h"
|
||||
#include "WM_types.h"
|
||||
|
||||
#include "ED_object.h"
|
||||
#include "ED_screen.h"
|
||||
|
||||
#include "DRW_engine.h"
|
||||
|
@ -1105,6 +1107,312 @@ finally:
|
|||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name Local View Operators
|
||||
* \{ */
|
||||
|
||||
static unsigned int free_localbit(Main *bmain)
|
||||
{
|
||||
ScrArea *sa;
|
||||
bScreen *sc;
|
||||
|
||||
unsigned short local_view_bits = 0;
|
||||
|
||||
/* sometimes we loose a localview: when an area is closed */
|
||||
/* check all areas: which localviews are in use? */
|
||||
for (sc = bmain->screen.first; sc; sc = sc->id.next) {
|
||||
for (sa = sc->areabase.first; sa; sa = sa->next) {
|
||||
SpaceLink *sl = sa->spacedata.first;
|
||||
for (; sl; sl = sl->next) {
|
||||
if (sl->spacetype == SPACE_VIEW3D) {
|
||||
View3D *v3d = (View3D *) sl;
|
||||
if (v3d->localvd) {
|
||||
local_view_bits |= v3d->local_view_uuid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 16; i++) {
|
||||
if ((local_view_bits & (1 << i)) == 0) {
|
||||
return (1 << i);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool view3d_localview_init(
|
||||
const Depsgraph *depsgraph,
|
||||
wmWindowManager *wm,
|
||||
wmWindow *win,
|
||||
Main *bmain,
|
||||
ViewLayer *view_layer,
|
||||
ScrArea *sa,
|
||||
const int smooth_viewtx,
|
||||
ReportList *reports)
|
||||
{
|
||||
View3D *v3d = sa->spacedata.first;
|
||||
Base *base;
|
||||
float min[3], max[3], box[3], mid[3];
|
||||
float size = 0.0f;
|
||||
unsigned int local_view_bit;
|
||||
bool ok = false;
|
||||
|
||||
if (v3d->localvd) {
|
||||
return ok;
|
||||
}
|
||||
|
||||
INIT_MINMAX(min, max);
|
||||
|
||||
local_view_bit = free_localbit(bmain);
|
||||
|
||||
if (local_view_bit == 0) {
|
||||
/* TODO(dfelinto): We can kick one of the other 3D views out of local view
|
||||
specially if it is not being used. */
|
||||
BKE_report(reports, RPT_ERROR, "No more than 16 local views");
|
||||
ok = false;
|
||||
}
|
||||
else {
|
||||
Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer);
|
||||
if (obedit) {
|
||||
FOREACH_BASE_IN_EDIT_MODE_BEGIN(view_layer, v3d, base_iter) {
|
||||
BKE_object_minmax(base_iter->object, min, max, false);
|
||||
base_iter->local_view_bits |= local_view_bit;
|
||||
ok = true;
|
||||
} FOREACH_BASE_IN_EDIT_MODE_END;
|
||||
}
|
||||
else {
|
||||
for (base = FIRSTBASE(view_layer); base; base = base->next) {
|
||||
if (TESTBASE(v3d, base)) {
|
||||
BKE_object_minmax(base->object, min, max, false);
|
||||
base->local_view_bits |= local_view_bit;
|
||||
/* Technically we should leave for Depsgraph to handle this.
|
||||
But it is harmless to do it here, and it seems to be necessary. */
|
||||
base->object->base_local_view_bits = base->local_view_bits;
|
||||
ok = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub_v3_v3v3(box, max, min);
|
||||
size = max_fff(box[0], box[1], box[2]);
|
||||
}
|
||||
|
||||
if (ok == true) {
|
||||
ARegion *ar;
|
||||
|
||||
v3d->localvd = MEM_mallocN(sizeof(View3D), "localview");
|
||||
|
||||
memcpy(v3d->localvd, v3d, sizeof(View3D));
|
||||
|
||||
mid_v3_v3v3(mid, min, max);
|
||||
|
||||
for (ar = sa->regionbase.first; ar; ar = ar->next) {
|
||||
if (ar->regiontype == RGN_TYPE_WINDOW) {
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
bool ok_dist = true;
|
||||
|
||||
/* New view values. */
|
||||
Object *camera_old = NULL;
|
||||
float dist_new, ofs_new[3];
|
||||
|
||||
rv3d->localvd = MEM_mallocN(sizeof(RegionView3D), "localview region");
|
||||
memcpy(rv3d->localvd, rv3d, sizeof(RegionView3D));
|
||||
|
||||
negate_v3_v3(ofs_new, mid);
|
||||
|
||||
if (rv3d->persp == RV3D_CAMOB) {
|
||||
rv3d->persp = RV3D_PERSP;
|
||||
camera_old = v3d->camera;
|
||||
}
|
||||
|
||||
if (rv3d->persp == RV3D_ORTHO) {
|
||||
if (size < 0.0001f) {
|
||||
ok_dist = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (ok_dist) {
|
||||
dist_new = ED_view3d_radius_to_dist(v3d, ar, depsgraph, rv3d->persp, true, (size / 2) * VIEW3D_MARGIN);
|
||||
|
||||
if (rv3d->persp == RV3D_PERSP) {
|
||||
/* Don't zoom closer than the near clipping plane. */
|
||||
dist_new = max_ff(dist_new, v3d->near * 1.5f);
|
||||
}
|
||||
}
|
||||
|
||||
ED_view3d_smooth_view_ex(
|
||||
depsgraph,
|
||||
wm, win, sa, v3d, ar, smooth_viewtx,
|
||||
&(const V3D_SmoothParams) {
|
||||
.camera_old = camera_old,
|
||||
.ofs = ofs_new, .quat = rv3d->viewquat,
|
||||
.dist = ok_dist ? &dist_new : NULL, .lens = &v3d->lens});
|
||||
}
|
||||
}
|
||||
|
||||
v3d->local_view_uuid = local_view_bit;
|
||||
}
|
||||
|
||||
DEG_on_visible_update(bmain, false);
|
||||
return ok;
|
||||
}
|
||||
|
||||
static void restore_localviewdata(
|
||||
const Depsgraph *depsgraph,
|
||||
wmWindowManager *wm,
|
||||
wmWindow *win,
|
||||
Main *bmain,
|
||||
ScrArea *sa,
|
||||
const int smooth_viewtx)
|
||||
{
|
||||
const bool free = true;
|
||||
ARegion *ar;
|
||||
View3D *v3d = sa->spacedata.first;
|
||||
Object *camera_old, *camera_new;
|
||||
|
||||
if (v3d->localvd == NULL) return;
|
||||
|
||||
camera_old = v3d->camera;
|
||||
camera_new = v3d->localvd->camera;
|
||||
|
||||
v3d->local_view_uuid = 0;
|
||||
v3d->camera = v3d->localvd->camera;
|
||||
|
||||
if (free) {
|
||||
MEM_freeN(v3d->localvd);
|
||||
v3d->localvd = NULL;
|
||||
}
|
||||
|
||||
for (ar = sa->regionbase.first; ar; ar = ar->next) {
|
||||
if (ar->regiontype == RGN_TYPE_WINDOW) {
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
|
||||
if (rv3d->localvd) {
|
||||
Object *camera_old_rv3d, *camera_new_rv3d;
|
||||
|
||||
camera_old_rv3d = (rv3d->persp == RV3D_CAMOB) ? camera_old : NULL;
|
||||
camera_new_rv3d = (rv3d->localvd->persp == RV3D_CAMOB) ? camera_new : NULL;
|
||||
|
||||
rv3d->view = rv3d->localvd->view;
|
||||
rv3d->persp = rv3d->localvd->persp;
|
||||
rv3d->camzoom = rv3d->localvd->camzoom;
|
||||
|
||||
ED_view3d_smooth_view_ex(
|
||||
depsgraph,
|
||||
wm, win, sa,
|
||||
v3d, ar, smooth_viewtx,
|
||||
&(const V3D_SmoothParams) {
|
||||
.camera_old = camera_old_rv3d, .camera = camera_new_rv3d,
|
||||
.ofs = rv3d->localvd->ofs, .quat = rv3d->localvd->viewquat,
|
||||
.dist = &rv3d->localvd->dist});
|
||||
|
||||
if (free) {
|
||||
MEM_freeN(rv3d->localvd);
|
||||
rv3d->localvd = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
ED_view3d_shade_update(bmain, v3d, sa);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool view3d_localview_exit(
|
||||
const Depsgraph *depsgraph,
|
||||
wmWindowManager *wm,
|
||||
wmWindow *win,
|
||||
Main *bmain,
|
||||
ViewLayer *view_layer,
|
||||
ScrArea *sa,
|
||||
const int smooth_viewtx)
|
||||
{
|
||||
View3D *v3d = sa->spacedata.first;
|
||||
struct Base *base;
|
||||
unsigned int local_view_bit;
|
||||
|
||||
if (v3d->localvd) {
|
||||
|
||||
local_view_bit = v3d->local_view_uuid;
|
||||
|
||||
restore_localviewdata(depsgraph, wm, win, bmain, sa, smooth_viewtx);
|
||||
|
||||
Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer);
|
||||
for (base = FIRSTBASE(view_layer); base; base = base->next) {
|
||||
if (base->local_view_bits & local_view_bit) {
|
||||
base->local_view_bits &= ~local_view_bit;
|
||||
if (base->object != obedit) {
|
||||
ED_object_base_select(base, BA_SELECT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DEG_on_visible_update(bmain, false);
|
||||
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static int localview_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
const Depsgraph *depsgraph = CTX_data_depsgraph(C);
|
||||
const int smooth_viewtx = WM_operator_smooth_viewtx_get(op);
|
||||
wmWindowManager *wm = CTX_wm_manager(C);
|
||||
wmWindow *win = CTX_wm_window(C);
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
ScrArea *sa = CTX_wm_area(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
bool changed;
|
||||
|
||||
if (v3d->localvd) {
|
||||
changed = view3d_localview_exit(depsgraph, wm, win, bmain, view_layer, sa, smooth_viewtx);
|
||||
}
|
||||
else {
|
||||
changed = view3d_localview_init(depsgraph, wm, win, bmain, view_layer, sa, smooth_viewtx, op->reports);
|
||||
}
|
||||
|
||||
if (changed) {
|
||||
DEG_id_type_tag(bmain, ID_OB);
|
||||
ED_area_tag_redraw(sa);
|
||||
|
||||
/* Unselected objects become selected when exiting. */
|
||||
if (v3d->localvd == NULL) {
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene);
|
||||
}
|
||||
else {
|
||||
DEG_id_tag_update(&scene->id, DEG_TAG_BASE_FLAGS_UPDATE);
|
||||
}
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
else {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
}
|
||||
|
||||
void VIEW3D_OT_localview(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name = "Local View";
|
||||
ot->description = "Toggle display of selected object(s) separately and centered in view";
|
||||
ot->idname = "VIEW3D_OT_localview";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec = localview_exec;
|
||||
ot->flag = OPTYPE_UNDO; /* localview changes object layer bitflags */
|
||||
|
||||
ot->poll = ED_operator_view3d_active;
|
||||
}
|
||||
|
||||
/** \} */
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/** \name View Layer Utilities
|
||||
* \{ */
|
||||
|
|
|
@ -1213,7 +1213,7 @@ void initTransDataContainers_FromObjectData(TransInfo *t, Object *obact, Object
|
|||
bool free_objects = false;
|
||||
if (objects == NULL) {
|
||||
objects = BKE_view_layer_array_from_objects_in_mode(
|
||||
t->view_layer, &objects_len, {
|
||||
t->view_layer, t->view, &objects_len, {
|
||||
.object_mode = object_mode,
|
||||
.no_dup_data = true});
|
||||
free_objects = true;
|
||||
|
|
|
@ -165,10 +165,11 @@ static void gizmo2d_calc_bounds(const bContext *C, float *r_center, float *r_min
|
|||
if (sa->spacetype == SPACE_IMAGE) {
|
||||
SpaceImage *sima = sa->spacedata.first;
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
Image *ima = ED_space_image(sima);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
|
||||
view_layer, &objects_len);
|
||||
view_layer, v3d, &objects_len);
|
||||
if (!ED_uvedit_minmax_multi(CTX_data_scene(C), ima, objects, objects_len, r_min, r_max)) {
|
||||
zero_v2(r_min);
|
||||
zero_v2(r_max);
|
||||
|
|
|
@ -816,7 +816,7 @@ int ED_transform_calc_gizmo_stats(
|
|||
{ \
|
||||
invert_m4_m4(obedit->imat, obedit->obmat); \
|
||||
uint objects_len = 0; \
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(view_layer, &objects_len); \
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode(view_layer, CTX_wm_view3d(C), &objects_len); \
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) { \
|
||||
Object *ob_iter = objects[ob_index]; \
|
||||
const bool use_mat_local = (ob_iter != obedit);
|
||||
|
|
|
@ -994,7 +994,7 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec))
|
|||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
|
||||
t->view_layer, &objects_len);
|
||||
t->view_layer, t->view, &objects_len);
|
||||
|
||||
float dist_sq = FLT_MAX;
|
||||
if (ED_uvedit_nearest_uv_multi(t->scene, ima, objects, objects_len, co, &dist_sq, t->tsnap.snapPoint)) {
|
||||
|
|
|
@ -481,7 +481,7 @@ void ED_uvedit_draw_main(
|
|||
}
|
||||
else if (show_uvedit) {
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob_iter = objects[ob_index];
|
||||
draw_uvs(sima, scene, ob_iter, depsgraph);
|
||||
|
|
|
@ -1374,7 +1374,7 @@ static int uv_select_more_less(bContext *C, const bool select)
|
|||
ToolSettings *ts = scene->toolsettings;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -1537,7 +1537,7 @@ static void uv_weld_align(bContext *C, eUVWeldAlign tool)
|
|||
INIT_MINMAX2(min, max);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
if (tool == UV_ALIGN_AUTO) {
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
|
@ -1825,7 +1825,7 @@ static int uv_remove_doubles_to_selected(bContext *C, wmOperator *op)
|
|||
const bool synced_selection = (ts->uv_flag & UV_SYNC_SELECTION) != 0;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
bool *changed = MEM_callocN(sizeof(bool) * objects_len, "uv_remove_doubles_selected.changed");
|
||||
|
||||
|
@ -1971,7 +1971,7 @@ static int uv_remove_doubles_to_unselected(bContext *C, wmOperator *op)
|
|||
const bool synced_selection = (ts->uv_flag & UV_SYNC_SELECTION) != 0;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
/* Calculate max possible number of kdtree nodes. */
|
||||
int uv_maxlen = 0;
|
||||
|
@ -2254,7 +2254,7 @@ static int uv_select_all_exec(bContext *C, wmOperator *op)
|
|||
int action = RNA_enum_get(op->ptr, "action");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
uv_select_all_perform_multi(scene, ima, objects, objects_len, action);
|
||||
|
||||
|
@ -2585,7 +2585,7 @@ static int uv_mouse_select(bContext *C, const float co[2], bool extend, bool loo
|
|||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
int ret = uv_mouse_select_multi(C, objects, objects_len, co, extend, loop);
|
||||
MEM_freeN(objects);
|
||||
return ret;
|
||||
|
@ -2712,7 +2712,7 @@ static int uv_select_linked_internal(bContext *C, wmOperator *op, const wmEvent
|
|||
uvedit_pixel_to_float(sima, limit, 0.05f);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
if (pick) {
|
||||
float co[2];
|
||||
|
@ -2839,7 +2839,7 @@ static int uv_select_split_exec(bContext *C, wmOperator *op)
|
|||
bool changed_multi = false;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -3203,7 +3203,7 @@ static int uv_box_select_exec(bContext *C, wmOperator *op)
|
|||
bool changed_multi = false;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
if (SEL_OP_USE_PRE_DESELECT(sel_op)) {
|
||||
uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
|
||||
|
@ -3367,7 +3367,7 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op)
|
|||
bool changed_multi = false;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -3484,7 +3484,7 @@ static bool do_lasso_select_mesh_uv(
|
|||
BLI_lasso_boundbox(&rect, mcords, moves);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
if (SEL_OP_USE_PRE_DESELECT(sel_op)) {
|
||||
uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
|
||||
|
@ -3645,7 +3645,7 @@ static int uv_snap_cursor_exec(bContext *C, wmOperator *op)
|
|||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
|
||||
view_layer, &objects_len);
|
||||
view_layer, ((View3D *)NULL), &objects_len);
|
||||
changed = uv_snap_cursor_to_selection(scene, ima, objects, objects_len, sima);
|
||||
MEM_freeN(objects);
|
||||
break;
|
||||
|
@ -3843,7 +3843,7 @@ static int uv_snap_selection_exec(bContext *C, wmOperator *op)
|
|||
float offset[2] = {0};
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
if (target == 2) {
|
||||
float center[2];
|
||||
|
@ -3934,7 +3934,7 @@ static int uv_pin_exec(bContext *C, wmOperator *op)
|
|||
const bool synced_selection = (ts->uv_flag & UV_SYNC_SELECTION) != 0;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -4011,7 +4011,7 @@ static int uv_select_pinned_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
MLoopUV *luv;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
|
@ -4420,7 +4420,7 @@ static int uv_seams_from_islands_exec(bContext *C, wmOperator *op)
|
|||
const bool mark_sharp = RNA_boolean_get(op->ptr, "mark_sharp");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
@ -4564,7 +4564,7 @@ static int uv_mark_seam_exec(bContext *C, wmOperator *op)
|
|||
const bool synced_selection = (ts->uv_flag & UV_SYNC_SELECTION) != 0;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, ((View3D *)NULL), &objects_len);
|
||||
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *ob = objects[ob_index];
|
||||
|
|
|
@ -2241,8 +2241,9 @@ static int stitch_init_all(bContext *C, wmOperator *op)
|
|||
ssc->states = NULL;
|
||||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, v3d, &objects_len);
|
||||
|
||||
if (objects_len == 0) {
|
||||
MEM_freeN(objects);
|
||||
|
|
|
@ -617,7 +617,7 @@ static bool minimize_stretch_init(bContext *C, wmOperator *op)
|
|||
bool implicit = true;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
if (!uvedit_have_selection_multi(scene, objects, objects_len, implicit)) {
|
||||
MEM_freeN(objects);
|
||||
|
@ -866,7 +866,7 @@ static int pack_islands_exec(bContext *C, wmOperator *op)
|
|||
bool do_rotate = RNA_boolean_get(op->ptr, "rotate");
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
if (!uvedit_have_selection_multi(scene, objects, objects_len, true)) {
|
||||
MEM_freeN(objects);
|
||||
|
@ -921,7 +921,7 @@ static int average_islands_scale_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
ParamHandle *handle;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
if (!uvedit_have_selection_multi(scene, objects, objects_len, implicit)) {
|
||||
MEM_freeN(objects);
|
||||
|
@ -1436,7 +1436,7 @@ static int unwrap_exec(bContext *C, wmOperator *op)
|
|||
bool subsurf_error = use_subsurf;
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
if (!uvedit_have_selection_multi(scene, objects, objects_len, implicit)) {
|
||||
MEM_freeN(objects);
|
||||
|
@ -1591,7 +1591,7 @@ static int uv_from_view_exec(bContext *C, wmOperator *op)
|
|||
|
||||
/* Note: objects that aren't touched are set to NULL (to skip clipping). */
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, &objects_len);
|
||||
|
||||
if (use_orthographic) {
|
||||
/* Calculate average object position. */
|
||||
|
@ -1731,10 +1731,11 @@ void UV_OT_project_from_view(wmOperatorType *ot)
|
|||
static int reset_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
Mesh *me = (Mesh *)obedit->data;
|
||||
|
@ -1825,7 +1826,7 @@ static int sphere_project_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -1913,7 +1914,7 @@ static int cylinder_project_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
@ -2028,7 +2029,7 @@ static int cube_project_exec(bContext *C, wmOperator *op)
|
|||
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, &objects_len);
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, &objects_len);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
Object *obedit = objects[ob_index];
|
||||
BMEditMesh *em = BKE_editmesh_from_object(obedit);
|
||||
|
|
|
@ -37,7 +37,7 @@ extern "C" {
|
|||
typedef struct Base {
|
||||
struct Base *next, *prev;
|
||||
short flag;
|
||||
short pad;
|
||||
unsigned short local_view_bits;
|
||||
short sx, sy;
|
||||
struct Object *object;
|
||||
unsigned int lay DNA_DEPRECATED;
|
||||
|
|
|
@ -245,7 +245,7 @@ typedef struct Object {
|
|||
|
||||
/* Depsgraph */
|
||||
short base_flag; /* used by depsgraph, flushed from base */
|
||||
short pad8;
|
||||
unsigned short base_local_view_bits; /* used by viewport, synced from base */
|
||||
|
||||
/** Collision mask settings */
|
||||
unsigned short col_group, col_mask;
|
||||
|
|
|
@ -1806,28 +1806,34 @@ extern const char *RE_engine_id_CYCLES;
|
|||
|
||||
/* deprecate this! */
|
||||
#define TESTBASE(v3d, base) ( \
|
||||
(((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) && \
|
||||
(((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0) && \
|
||||
(((base)->flag & BASE_SELECTED) != 0) && \
|
||||
(((base)->flag & BASE_VISIBLE) != 0))
|
||||
#define TESTBASELIB(v3d, base) ( \
|
||||
(((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) && \
|
||||
(((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0) && \
|
||||
(((base)->flag & BASE_SELECTED) != 0) && \
|
||||
((base)->object->id.lib == NULL) && \
|
||||
(((base)->flag & BASE_VISIBLE) != 0))
|
||||
#define TESTBASELIB_BGMODE(v3d, base) ( \
|
||||
((v3d == NULL) || ((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) && \
|
||||
((v3d == NULL) || (((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0)) && \
|
||||
(((base)->flag & BASE_SELECTED) != 0) && \
|
||||
((base)->object->id.lib == NULL) && \
|
||||
(((base)->flag & BASE_VISIBLE) != 0))
|
||||
#define BASE_EDITABLE_BGMODE(v3d, base) ( \
|
||||
((v3d == NULL) || ((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) && \
|
||||
((v3d == NULL) || (((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0)) && \
|
||||
((base)->object->id.lib == NULL) && \
|
||||
(((base)->flag & BASE_VISIBLE) != 0))
|
||||
#define BASE_SELECTABLE(v3d, base) ( \
|
||||
(((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) && \
|
||||
(((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0) && \
|
||||
(((1 << (base)->object->type) & (v3d)->object_type_exclude_select) == 0) && \
|
||||
(((base)->flag & BASE_SELECTABLE) != 0))
|
||||
#define BASE_VISIBLE(v3d, base) ( \
|
||||
(((v3d)->localvd == NULL) || ((v3d)->local_view_uuid & (base)->local_view_bits)) && \
|
||||
(((1 << (base)->object->type) & (v3d)->object_type_exclude_viewport) == 0) && \
|
||||
(((base)->flag & BASE_VISIBLE) != 0))
|
||||
|
||||
|
|
|
@ -232,7 +232,8 @@ typedef struct View3D {
|
|||
|
||||
char ob_centre_bone[64]; /* optional string for armature bone to define center, MAXBONENAME */
|
||||
|
||||
unsigned int lay DNA_DEPRECATED;
|
||||
unsigned short local_view_uuid;
|
||||
short _pad6;
|
||||
int layact DNA_DEPRECATED;
|
||||
|
||||
short ob_centre_cursor; /* optional bool for 3d cursor to define center */
|
||||
|
|
|
@ -134,6 +134,7 @@ static bool rna_Object_select_get(Object *ob, bContext *C, ReportList *reports)
|
|||
static bool rna_Object_visible_get(Object *ob, bContext *C, ReportList *reports)
|
||||
{
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
Base *base = BKE_view_layer_base_find(view_layer, ob);
|
||||
|
||||
if (!base) {
|
||||
|
@ -141,6 +142,10 @@ static bool rna_Object_visible_get(Object *ob, bContext *C, ReportList *reports)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (v3d->localvd && ((base->local_view_bits & v3d->local_view_uuid) == 0)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return ((base->flag & BASE_VISIBLE) != 0);
|
||||
}
|
||||
|
||||
|
@ -503,7 +508,7 @@ void RNA_api_object(StructRNA *srna)
|
|||
RNA_def_function_return(func, parm);
|
||||
|
||||
func = RNA_def_function(srna, "visible_get", "rna_Object_visible_get");
|
||||
RNA_def_function_ui_description(func, "Get the object visibility for the active view layer");
|
||||
RNA_def_function_ui_description(func, "Get the object visibility for the active view layer and viewport");
|
||||
RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_REPORTS);
|
||||
parm = RNA_def_boolean(func, "result", 0, "", "Object visible");
|
||||
RNA_def_function_return(func, parm);
|
||||
|
|
Loading…
Reference in New Issue