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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-01-08 20:19:12 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-01-08 20:50:44 +0300
commitae2af4692009fe2c3fc97783f6d69aaa7cac5123 (patch)
tree897af6264bd392b92712a4c2e5077be9384297af /source/blender/blenkernel
parent54985ab5f569f4623695c693dedda7c000e1e73f (diff)
Fix inconsistent naming and behavior for base visible/selected/editable.
Fixes T60251.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_layer.h32
-rw-r--r--source/blender/blenkernel/intern/layer.c138
-rw-r--r--source/blender/blenkernel/intern/object.c6
3 files changed, 16 insertions, 160 deletions
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 9ac0c56d93f..746733e4e0e 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -156,10 +156,6 @@ struct ObjectsInModeIteratorData {
struct Base *base_active;
};
-void BKE_view_layer_renderable_objects_iterator_begin(BLI_Iterator *iter, void *data_in);
-void BKE_view_layer_renderable_objects_iterator_next(BLI_Iterator *iter);
-void BKE_view_layer_renderable_objects_iterator_end(BLI_Iterator *iter);
-
void BKE_view_layer_bases_in_mode_iterator_begin(BLI_Iterator *iter, void *data_in);
void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter);
void BKE_view_layer_bases_in_mode_iterator_end(BLI_Iterator *iter);
@@ -320,34 +316,6 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter);
ITER_END; \
} ((void)0)
-struct ObjectsRenderableIteratorData {
- struct Scene *scene;
- struct Base base_temp;
- struct Scene scene_temp;
-
- struct {
- struct ViewLayer *view_layer;
- struct Base *base;
- struct Scene *set;
- } iter;
-};
-
-#define FOREACH_OBJECT_RENDERABLE_BEGIN(scene_, _instance) \
-{ \
- struct ObjectsRenderableIteratorData data_ = { \
- .scene = (scene_), \
- }; \
- ITER_BEGIN(BKE_view_layer_renderable_objects_iterator_begin, \
- BKE_view_layer_renderable_objects_iterator_next, \
- BKE_view_layer_renderable_objects_iterator_end, \
- &data_, Object *, _instance)
-
-
-#define FOREACH_OBJECT_RENDERABLE_END \
- ITER_END; \
-} ((void)0)
-
-
/* layer_utils.c */
struct ObjectsInModeParams {
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 28833383029..304702ce475 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -1071,29 +1071,9 @@ typedef struct LayerObjectBaseIteratorData {
Base *base;
} LayerObjectBaseIteratorData;
-static bool object_bases_iterator_is_valid_ex(View3D *v3d, Base *base, const int flag)
+static bool object_bases_iterator_is_valid(View3D *v3d, Base *base, const int flag)
{
- if (v3d != NULL) {
- BLI_assert(v3d->spacetype == SPACE_VIEW3D);
- 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));
+ return BASE_VISIBLE(v3d, base) && ((base->flag & flag) == flag);
}
static void object_bases_iterator_begin(BLI_Iterator *iter, void *data_in_v, const int flag)
@@ -1116,7 +1096,7 @@ static void object_bases_iterator_begin(BLI_Iterator *iter, void *data_in_v, con
data->v3d = v3d;
data->base = base;
- if (object_bases_iterator_is_valid_ex(v3d, base, flag) == false) {
+ if (object_bases_iterator_is_valid(v3d, base, flag) == false) {
object_bases_iterator_next(iter, flag);
}
else {
@@ -1130,7 +1110,7 @@ static void object_bases_iterator_next(BLI_Iterator *iter, const int flag)
Base *base = data->base->next;
while (base) {
- if (object_bases_iterator_is_valid_ex(data->v3d, base, flag)) {
+ if (object_bases_iterator_is_valid(data->v3d, base, flag)) {
iter->current = base;
data->base = base;
return;
@@ -1197,12 +1177,12 @@ void BKE_view_layer_selected_objects_iterator_end(BLI_Iterator *iter)
void BKE_view_layer_visible_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
{
- objects_iterator_begin(iter, data_in, BASE_VISIBLE);
+ objects_iterator_begin(iter, data_in, 0);
}
void BKE_view_layer_visible_objects_iterator_next(BLI_Iterator *iter)
{
- objects_iterator_next(iter, BASE_VISIBLE);
+ objects_iterator_next(iter, 0);
}
void BKE_view_layer_visible_objects_iterator_end(BLI_Iterator *iter)
@@ -1273,12 +1253,12 @@ void BKE_view_layer_selected_bases_iterator_end(BLI_Iterator *iter)
void BKE_view_layer_visible_bases_iterator_begin(BLI_Iterator *iter, void *data_in)
{
- object_bases_iterator_begin(iter, data_in, BASE_VISIBLE);
+ object_bases_iterator_begin(iter, data_in, 0);
}
void BKE_view_layer_visible_bases_iterator_next(BLI_Iterator *iter)
{
- object_bases_iterator_next(iter, BASE_VISIBLE);
+ object_bases_iterator_next(iter, 0);
}
void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter)
@@ -1289,103 +1269,14 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter)
/** \} */
/* -------------------------------------------------------------------- */
-/** \name BKE_view_layer_renderable_objects_iterator
- * \{ */
-
-void BKE_view_layer_renderable_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
-{
- struct ObjectsRenderableIteratorData *data = data_in;
-
- /* Tag objects to prevent going over the same object twice. */
- for (Scene *scene = data->scene; scene; scene = scene->set) {
- for (ViewLayer *view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) {
- for (Base *base = view_layer->object_bases.first; base; base = base->next) {
- base->object->id.flag |= LIB_TAG_DOIT;
- }
- }
- }
-
- ViewLayer *view_layer = data->scene->view_layers.first;
- data->iter.view_layer = view_layer;
-
- data->base_temp.next = view_layer->object_bases.first;
- data->iter.base = &data->base_temp;
-
- data->iter.set = NULL;
-
- iter->data = data_in;
- BKE_view_layer_renderable_objects_iterator_next(iter);
-}
-
-void BKE_view_layer_renderable_objects_iterator_next(BLI_Iterator *iter)
-{
- /* Set it early in case we need to exit and we are running from within a loop. */
- iter->skip = true;
-
- struct ObjectsRenderableIteratorData *data = iter->data;
- Base *base = data->iter.base->next;
-
- /* There is still a base in the current scene layer. */
- if (base != NULL) {
- Object *ob = base->object;
-
- /* We need to set the iter.base even if the rest fail otherwise
- * we keep checking the exactly same base over and over again. */
- data->iter.base = base;
-
- if (ob->id.flag & LIB_TAG_DOIT) {
- ob->id.flag &= ~LIB_TAG_DOIT;
-
- if ((base->flag & BASE_VISIBLE) != 0) {
- iter->skip = false;
- iter->current = ob;
- }
- }
- return;
- }
-
- /* Time to go to the next scene layer. */
- if (data->iter.set == NULL) {
- while ((data->iter.view_layer = data->iter.view_layer->next)) {
- ViewLayer *view_layer = data->iter.view_layer;
- if (view_layer->flag & VIEW_LAYER_RENDER) {
- data->base_temp.next = view_layer->object_bases.first;
- data->iter.base = &data->base_temp;
- return;
- }
- }
-
- /* Setup the "set" for the next iteration. */
- data->scene_temp.set = data->scene;
- data->iter.set = &data->scene_temp;
- return;
- }
-
- /* Look for an object in the next set. */
- while ((data->iter.set = data->iter.set->set)) {
- ViewLayer *view_layer = BKE_view_layer_default_render(data->iter.set);
- data->base_temp.next = view_layer->object_bases.first;
- data->iter.base = &data->base_temp;
- return;
- }
-
- iter->valid = false;
-}
-
-void BKE_view_layer_renderable_objects_iterator_end(BLI_Iterator *UNUSED(iter))
-{
- /* Do nothing - iter->data was static allocated, we can't free it. */
-}
-
-/** \} */
-
-/* -------------------------------------------------------------------- */
/** \name BKE_view_layer_bases_in_mode_iterator
* \{ */
static bool base_is_in_mode(struct ObjectsInModeIteratorData *data, Base *base)
{
- return (base->object->type == data->object_type) && (base->object->mode & data->object_mode) != 0;
+ return BASE_VISIBLE(data->v3d, base) &&
+ (base->object->type == data->object_type) &&
+ (base->object->mode & data->object_mode) != 0;
}
void BKE_view_layer_bases_in_mode_iterator_begin(BLI_Iterator *iter, void *data_in)
@@ -1406,7 +1297,7 @@ void BKE_view_layer_bases_in_mode_iterator_begin(BLI_Iterator *iter, void *data_
data->object_type = base->object->type;
}
- if (object_bases_iterator_is_valid(data->v3d, base) == false || !base_is_in_mode(data, base)) {
+ if (!base_is_in_mode(data, base)) {
BKE_view_layer_bases_in_mode_iterator_next(iter);
}
}
@@ -1428,10 +1319,7 @@ void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter)
}
while (base) {
- if ((base != data->base_active) &&
- base_is_in_mode(data, base) &&
- object_bases_iterator_is_valid(data->v3d, base))
- {
+ if ((base != data->base_active) && base_is_in_mode(data, base)) {
iter->current = base;
return;
}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 8ce43049265..78e22c203ab 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -3670,8 +3670,8 @@ LinkNode *BKE_object_relational_superset(struct ViewLayer *view_layer, eObjectSe
obrel_list_add(&links, ob);
}
else {
- if ((objectSet == OB_SET_SELECTED && TESTBASELIB_BGMODE(((View3D *)NULL), base)) ||
- (objectSet == OB_SET_VISIBLE && BASE_EDITABLE_BGMODE(((View3D *)NULL), base)))
+ if ((objectSet == OB_SET_SELECTED && BASE_SELECTED_EDITABLE(((View3D *)NULL), base)) ||
+ (objectSet == OB_SET_VISIBLE && BASE_EDITABLE(((View3D *)NULL), base)))
{
Object *ob = base->object;
@@ -3701,7 +3701,7 @@ LinkNode *BKE_object_relational_superset(struct ViewLayer *view_layer, eObjectSe
if (includeFilter & (OB_REL_CHILDREN | OB_REL_CHILDREN_RECURSIVE)) {
Base *local_base;
for (local_base = view_layer->object_bases.first; local_base; local_base = local_base->next) {
- if (BASE_EDITABLE_BGMODE(((View3D *)NULL), local_base)) {
+ if (BASE_EDITABLE(((View3D *)NULL), local_base)) {
Object *child = local_base->object;
if (obrel_list_test(child)) {