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:
authorDalai Felinto <dfelinto@gmail.com>2017-04-26 11:40:41 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-04-26 11:42:40 +0300
commitf88e6763d64f7f79e13680082f30e06aea11fab0 (patch)
treed6e586a513f8c3a2cb37c251091374ccc601d81d /source/blender/depsgraph/intern
parent3dc6528cd45aa840e4a7782669f01e84671d0247 (diff)
Depsgraph and selection: Flush selcol on Depsgraph
Selection code needs to iterate over DEG_OBJECT_ITER otherwise we won't get modifiers, dupli objects, ... Also make selection respect selectability flag. Review by: Sergey Sharybin
Diffstat (limited to 'source/blender/depsgraph/intern')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc13
-rw-r--r--source/blender/depsgraph/intern/depsgraph_query.cc1
2 files changed, 9 insertions, 5 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc
index 3f9febc1228..db71dad5e5f 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc
@@ -43,6 +43,7 @@ extern "C" {
#include "BLI_utildefines.h"
#include "DNA_node_types.h"
+#include "DNA_layer_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
@@ -80,12 +81,14 @@ void DepsgraphNodeBuilder::build_scene(Main *bmain, Scene *scene)
}
/* scene objects */
- FOREACH_SCENE_OBJECT(scene, ob)
- {
- /* object itself */
- build_object(scene, ob);
+ int selection_color = 1;
+ for (SceneLayer *sl = (SceneLayer *)scene->render_layers.first; sl; sl = sl->next) {
+ for (Base *base = (Base *)sl->object_bases.first; base; base = base->next) {
+ /* object itself */
+ build_object(scene, base->object);
+ base->selcol = selection_color++;
+ }
}
- FOREACH_SCENE_OBJECT_END
/* rigidbody */
if (scene->rigidbody_world) {
diff --git a/source/blender/depsgraph/intern/depsgraph_query.cc b/source/blender/depsgraph/intern/depsgraph_query.cc
index 6193fd3d7cf..eff1a44be01 100644
--- a/source/blender/depsgraph/intern/depsgraph_query.cc
+++ b/source/blender/depsgraph/intern/depsgraph_query.cc
@@ -137,6 +137,7 @@ void DAG_objects_iterator_next(Iterator *iter)
/* Flushing depsgraph data. */
ob->base_flag = (base->flag | BASE_FROM_SET) & data->flag;
ob->base_collection_properties = base->collection_properties;
+ ob->base_selection_color = base->selcol;
data->base = base;
return;
}