Use better workaround ofr getting scene layer for Derivedmesh's mask

This replaces access to the first scene layer (which was wrong) with a linear
lookup of scene layer by it's active index.

This seems to be a better temporary solution to have things working for until
we've got proper workspace, depsgraph and it's per-layer storage in place.
This commit is contained in:
Sergey Sharybin 2017-04-18 14:55:31 +02:00
parent 363ea3a1ce
commit 1129fd1c51
3 changed files with 5 additions and 3 deletions

View File

@ -58,7 +58,7 @@ struct SceneCollection;
struct SceneLayer;
struct SceneLayer *BKE_scene_layer_render_active(const struct Scene *scene);
struct SceneLayer *BKE_scene_layer_context_active(struct Scene *scene);
struct SceneLayer *BKE_scene_layer_context_active(const struct Scene *scene);
struct SceneLayer *BKE_scene_layer_add(struct Scene *scene, const char *name);
bool BKE_scene_layer_remove(struct Main *bmain, struct Scene *scene, struct SceneLayer *sl);

View File

@ -54,6 +54,7 @@
#include "BKE_cdderivedmesh.h"
#include "BKE_editmesh.h"
#include "BKE_key.h"
#include "BKE_layer.h"
#include "BKE_library.h"
#include "BKE_material.h"
#include "BKE_modifier.h"
@ -2677,7 +2678,8 @@ static void editbmesh_build_data(Scene *scene, Object *obedit, BMEditMesh *em, C
static CustomDataMask object_get_datamask(const Scene *scene, Object *ob, bool *r_need_mapping)
{
SceneLayer *sl = scene->render_layers.first; /* XXX TODO pass SceneLayer to this function */
/* TODO(sergey): Avoid this linear list lookup. */
SceneLayer *sl = BKE_scene_layer_context_active(scene);
Object *actob = sl->basact ? sl->basact->object : NULL;
CustomDataMask mask = ob->customdata_mask;

View File

@ -78,7 +78,7 @@ SceneLayer *BKE_scene_layer_render_active(const Scene *scene)
* Returns the SceneLayer to be used for drawing, outliner, and
* other context related areas.
*/
SceneLayer *BKE_scene_layer_context_active(Scene *scene)
SceneLayer *BKE_scene_layer_context_active(const Scene *scene)
{
/* waiting for workspace to get the layer from context*/
TODO_LAYER_CONTEXT;