[Bf-blender-cvs] [10754500b0] render-layers: Add BASE_SELECTABLED flag
Dalai Felinto
noreply at git.blender.org
Mon Jan 16 18:01:51 CET 2017
Commit: 10754500b0a15a49892ba8f9a0f1431acfe30853
Author: Dalai Felinto
Date: Mon Jan 16 13:16:22 2017 +0100
Branches: render-layers
https://developer.blender.org/rB10754500b0a15a49892ba8f9a0f1431acfe30853
Add BASE_SELECTABLED flag
===================================================================
M source/blender/blenkernel/intern/layer.c
M source/blender/editors/object/object_select.c
M source/blender/makesdna/DNA_layer_types.h
===================================================================
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 7b0ebf38a7..59c35d3f4c 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -178,8 +178,10 @@ void BKE_scene_layer_base_deselect_all(SceneLayer *sl)
void BKE_scene_layer_base_select(struct SceneLayer *sl, ObjectBase *selbase)
{
- selbase->flag |= BASE_SELECTED;
sl->basact = selbase;
+ if ((selbase->flag & BASE_SELECTABLED) != 0) {
+ selbase->flag |= BASE_SELECTED;
+ }
}
static void scene_layer_object_base_unref(SceneLayer* sl, ObjectBase *base)
@@ -206,12 +208,13 @@ static void layer_collection_base_flag_recalculate(LayerCollection *lc, bool *is
for (LinkData *link = lc->object_bases.first; link; link = link->next) {
ObjectBase *base = link->data;
- if (!*is_visible) {
+ if (!(*is_visible)) {
base->flag &= ~BASE_VISIBLED;
}
- if (!*is_selectable) {
+ if (!(*is_selectable)) {
base->flag &= ~BASE_SELECTED;
+ base->flag &= ~BASE_SELECTABLED;
}
}
@@ -227,7 +230,7 @@ void BKE_scene_layer_base_flag_recalculate(SceneLayer *sl)
{
/* tranverse the entire tree and update ObjectBase flags */
for (ObjectBase *base = sl->object_bases.first; base; base = base->next) {
- base->flag |= BASE_VISIBLED;
+ base->flag |= BASE_VISIBLED + BASE_SELECTABLED;
}
for (LayerCollection *lc = sl->layer_collections.first; lc; lc = lc->next) {
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c
index f6f101b98c..80b1a226eb 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -123,8 +123,9 @@ void ED_object_base_select(ObjectBase *base, short mode)
{
if (base) {
if (mode == BA_SELECT) {
- if (!(base->object->restrictflag & OB_RESTRICT_SELECT))
+ if ((base->flag & BASE_SELECTABLED) != 0) {
base->flag |= BASE_SELECTED;
+ }
}
else if (mode == BA_DESELECT) {
base->flag &= ~BASE_SELECTED;
diff --git a/source/blender/makesdna/DNA_layer_types.h b/source/blender/makesdna/DNA_layer_types.h
index 40750d7ba4..208f0167c1 100644
--- a/source/blender/makesdna/DNA_layer_types.h
+++ b/source/blender/makesdna/DNA_layer_types.h
@@ -81,6 +81,7 @@ typedef struct SceneCollection {
enum {
BASE_SELECTED = (1 << 0),
BASE_VISIBLED = (1 << 1),
+ BASE_SELECTABLED = (1 << 2),
};
/* LayerCollection->flag */
More information about the Bf-blender-cvs
mailing list