Remove tons of OBACT

There are now only referenced in:
* drawobject.c
* particle_edit.c
* space_image.c (a single case to be handled on workspace branch)
* rigidbody_constraint.c (to be handled in the following commit)
This commit is contained in:
Dalai Felinto
2017-03-02 15:03:02 +01:00
parent 561d11c5e6
commit aa845eed1e
33 changed files with 129 additions and 103 deletions

View File

@@ -38,10 +38,10 @@ extern "C" {
struct BaseLegacy; struct BaseLegacy;
struct EvaluationContext; struct EvaluationContext;
struct Scene; struct Scene;
struct SceneLayer;
struct Object; struct Object;
struct BoundBox; struct BoundBox;
struct View3D; struct View3D;
struct SceneLayer;
struct SoftBody; struct SoftBody;
struct BulletSoftBody; struct BulletSoftBody;
struct MovieClip; struct MovieClip;
@@ -102,9 +102,9 @@ void BKE_object_lod_add(struct Object *ob);
void BKE_object_lod_sort(struct Object *ob); void BKE_object_lod_sort(struct Object *ob);
bool BKE_object_lod_remove(struct Object *ob, int level); bool BKE_object_lod_remove(struct Object *ob, int level);
void BKE_object_lod_update(struct Object *ob, const float camera_position[3]); void BKE_object_lod_update(struct Object *ob, const float camera_position[3]);
bool BKE_object_lod_is_usable(struct Object *ob, struct Scene *scene); bool BKE_object_lod_is_usable(struct Object *ob, struct SceneLayer *sl);
struct Object *BKE_object_lod_meshob_get(struct Object *ob, struct Scene *scene); struct Object *BKE_object_lod_meshob_get(struct Object *ob, struct SceneLayer *sl);
struct Object *BKE_object_lod_matob_get(struct Object *ob, struct Scene *scene); struct Object *BKE_object_lod_matob_get(struct Object *ob, struct SceneLayer *sl);
struct Object *BKE_object_copy_ex(struct Main *bmain, struct Object *ob, bool copy_caches); struct Object *BKE_object_copy_ex(struct Main *bmain, struct Object *ob, bool copy_caches);
struct Object *BKE_object_copy(struct Main *bmain, struct Object *ob); struct Object *BKE_object_copy(struct Main *bmain, struct Object *ob);

View File

@@ -801,9 +801,9 @@ static LodLevel *lod_level_select(Object *ob, const float camera_position[3])
return current; return current;
} }
bool BKE_object_lod_is_usable(Object *ob, Scene *scene) bool BKE_object_lod_is_usable(Object *ob, SceneLayer *sl)
{ {
bool active = (scene) ? ob == OBACT : false; bool active = (sl) ? ob == OBACT_NEW : false;
return (ob->mode == OB_MODE_OBJECT || !active); return (ob->mode == OB_MODE_OBJECT || !active);
} }
@@ -817,11 +817,11 @@ void BKE_object_lod_update(Object *ob, const float camera_position[3])
} }
} }
static Object *lod_ob_get(Object *ob, Scene *scene, int flag) static Object *lod_ob_get(Object *ob, SceneLayer *sl, int flag)
{ {
LodLevel *current = ob->currentlod; LodLevel *current = ob->currentlod;
if (!current || !BKE_object_lod_is_usable(ob, scene)) if (!current || !BKE_object_lod_is_usable(ob, sl))
return ob; return ob;
while (current->prev && (!(current->flags & flag) || !current->source || current->source->type != OB_MESH)) { while (current->prev && (!(current->flags & flag) || !current->source || current->source->type != OB_MESH)) {
@@ -831,14 +831,14 @@ static Object *lod_ob_get(Object *ob, Scene *scene, int flag)
return current->source; return current->source;
} }
struct Object *BKE_object_lod_meshob_get(Object *ob, Scene *scene) struct Object *BKE_object_lod_meshob_get(Object *ob, SceneLayer *sl)
{ {
return lod_ob_get(ob, scene, OB_LOD_USE_MESH); return lod_ob_get(ob, sl, OB_LOD_USE_MESH);
} }
struct Object *BKE_object_lod_matob_get(Object *ob, Scene *scene) struct Object *BKE_object_lod_matob_get(Object *ob, SceneLayer *sl)
{ {
return lod_ob_get(ob, scene, OB_LOD_USE_MAT); return lod_ob_get(ob, sl, OB_LOD_USE_MAT);
} }
#endif /* WITH_GAMEENGINE */ #endif /* WITH_GAMEENGINE */

View File

@@ -589,9 +589,9 @@ void DRW_draw_background(void)
/* **************************** 3D Cursor ******************************** */ /* **************************** 3D Cursor ******************************** */
static bool is_cursor_visible(Scene *scene) static bool is_cursor_visible(Scene *scene, SceneLayer *sl)
{ {
Object *ob = OBACT; Object *ob = OBACT_NEW;
/* don't draw cursor in paint modes, but with a few exceptions */ /* don't draw cursor in paint modes, but with a few exceptions */
if (ob && ob->mode & OB_MODE_ALL_PAINT) { if (ob && ob->mode & OB_MODE_ALL_PAINT) {
@@ -625,13 +625,14 @@ void DRW_draw_cursor(void)
View3D *v3d = CTX_wm_view3d(C); View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d = CTX_wm_region_view3d(C); RegionView3D *rv3d = CTX_wm_region_view3d(C);
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
SceneLayer *sl = CTX_data_scene_layer(C);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glDepthMask(GL_FALSE); glDepthMask(GL_FALSE);
glDisable(GL_DEPTH_TEST); glDisable(GL_DEPTH_TEST);
glLineWidth(1.0f); glLineWidth(1.0f);
if (is_cursor_visible(scene)) { if (is_cursor_visible(scene, sl)) {
float *co = ED_view3d_cursor3d_get(scene, v3d); float *co = ED_view3d_cursor3d_get(scene, v3d);
unsigned char crosshair_color[3]; unsigned char crosshair_color[3];

View File

@@ -132,11 +132,11 @@ static void animedit_get_yscale_factor(bAnimContext *ac)
/* Note: there's a similar function in key.c (BKE_key_from_object) */ /* Note: there's a similar function in key.c (BKE_key_from_object) */
static Key *actedit_get_shapekeys(bAnimContext *ac) static Key *actedit_get_shapekeys(bAnimContext *ac)
{ {
Scene *scene = ac->scene; SceneLayer *sl = ac->scene_layer;
Object *ob; Object *ob;
Key *key; Key *key;
ob = OBACT; ob = OBACT_NEW;
if (ob == NULL) if (ob == NULL)
return NULL; return NULL;

View File

@@ -248,7 +248,7 @@ void armature_select_mirrored(struct bArmature *arm);
void armature_tag_unselect(struct bArmature *arm); void armature_tag_unselect(struct bArmature *arm);
void *get_nearest_bone(struct bContext *C, short findunsel, int x, int y); void *get_nearest_bone(struct bContext *C, short findunsel, int x, int y);
void *get_bone_from_selectbuffer(struct Scene *scene, struct BaseLegacy *base, unsigned int *buffer, short hits, short findunsel, bool do_nearest); void *get_bone_from_selectbuffer(struct Scene *scene, struct Base *base, unsigned int *buffer, short hits, short findunsel, bool do_nearest);
int bone_looper(struct Object *ob, struct Bone *bone, void *data, int bone_looper(struct Object *ob, struct Bone *bone, void *data,
int (*bone_func)(struct Object *, struct Bone *, void *)); int (*bone_func)(struct Object *, struct Bone *, void *));

View File

@@ -74,7 +74,7 @@ Bone *get_indexed_bone(Object *ob, int index)
/* See if there are any selected bones in this buffer */ /* See if there are any selected bones in this buffer */
/* only bones from base are checked on */ /* only bones from base are checked on */
void *get_bone_from_selectbuffer(Scene *scene, BaseLegacy *base, unsigned int *buffer, short hits, short findunsel, bool do_nearest) void *get_bone_from_selectbuffer(Scene *scene, Base *base, unsigned int *buffer, short hits, short findunsel, bool do_nearest)
{ {
Object *obedit = scene->obedit; // XXX get from context Object *obedit = scene->obedit; // XXX get from context
Bone *bone; Bone *bone;
@@ -178,7 +178,7 @@ void *get_nearest_bone(bContext *C, short findunsel, int x, int y)
hits = view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect, true); hits = view3d_opengl_select(&vc, buffer, MAXPICKBUF, &rect, true);
if (hits > 0) if (hits > 0)
return get_bone_from_selectbuffer(vc.scene, vc.scene->basact, buffer, hits, findunsel, true); return get_bone_from_selectbuffer(vc.scene, vc.sl->basact, buffer, hits, findunsel, true);
return NULL; return NULL;
} }

View File

@@ -132,7 +132,7 @@ void ED_pose_bone_select(Object *ob, bPoseChannel *pchan, bool select)
/* called from editview.c, for mode-less pose selection */ /* called from editview.c, for mode-less pose selection */
/* assumes scene obact and basact is still on old situation */ /* assumes scene obact and basact is still on old situation */
int ED_do_pose_selectbuffer(Scene *scene, BaseLegacy *base, unsigned int *buffer, short hits, int ED_do_pose_selectbuffer(Scene *scene, SceneLayer *sl, Base *base, unsigned int *buffer, short hits,
bool extend, bool deselect, bool toggle, bool do_nearest) bool extend, bool deselect, bool toggle, bool do_nearest)
{ {
Object *ob = base->object; Object *ob = base->object;
@@ -144,7 +144,7 @@ int ED_do_pose_selectbuffer(Scene *scene, BaseLegacy *base, unsigned int *buffer
/* if the bone cannot be affected, don't do anything */ /* if the bone cannot be affected, don't do anything */
if ((nearBone) && !(nearBone->flag & BONE_UNSELECTABLE)) { if ((nearBone) && !(nearBone->flag & BONE_UNSELECTABLE)) {
Object *ob_act = OBACT; Object *ob_act = OBACT_NEW;
bArmature *arm = ob->data; bArmature *arm = ob->data;
/* since we do unified select, we don't shift+select a bone if the /* since we do unified select, we don't shift+select a bone if the

View File

@@ -47,6 +47,7 @@ struct Object;
struct Base; struct Base;
struct ReportList; struct ReportList;
struct Scene; struct Scene;
struct SceneLayer;
struct ViewContext; struct ViewContext;
struct wmKeyConfig; struct wmKeyConfig;
struct wmOperator; struct wmOperator;
@@ -137,7 +138,7 @@ void ED_armature_ebone_listbase_temp_clear(struct ListBase *lb);
void ED_armature_deselect_all(struct Object *obedit); void ED_armature_deselect_all(struct Object *obedit);
void ED_armature_deselect_all_visible(struct Object *obedit); void ED_armature_deselect_all_visible(struct Object *obedit);
int ED_do_pose_selectbuffer(struct Scene *scene, struct BaseLegacy *base, unsigned int *buffer, int ED_do_pose_selectbuffer(struct Scene *scene, struct SceneLayer *sl, struct Base *base, unsigned int *buffer,
short hits, bool extend, bool deselect, bool toggle, bool do_nearest); short hits, bool extend, bool deselect, bool toggle, bool do_nearest);
bool ED_armature_select_pick(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle); bool ED_armature_select_pick(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle);
int join_armature_exec(struct bContext *C, struct wmOperator *op); int join_armature_exec(struct bContext *C, struct wmOperator *op);

View File

@@ -39,6 +39,7 @@ struct ToolSettings;
struct wmWindowManager; struct wmWindowManager;
struct ARegion; struct ARegion;
struct Scene; struct Scene;
struct SceneLayer;
/* image_edit.c, exported for transform */ /* image_edit.c, exported for transform */
struct Image *ED_space_image(struct SpaceImage *sima); struct Image *ED_space_image(struct SpaceImage *sima);
@@ -74,7 +75,7 @@ bool ED_space_image_show_uvedit(struct SpaceImage *sima, struct Object *obedit);
bool ED_space_image_paint_curve(const struct bContext *C); bool ED_space_image_paint_curve(const struct bContext *C);
bool ED_space_image_check_show_maskedit(struct Scene *scene, struct SpaceImage *sima); bool ED_space_image_check_show_maskedit(struct SceneLayer *sl, struct SpaceImage *sima);
int ED_space_image_maskedit_poll(struct bContext *C); int ED_space_image_maskedit_poll(struct bContext *C);
int ED_space_image_maskedit_mask_poll(struct bContext *C); int ED_space_image_maskedit_mask_poll(struct bContext *C);

View File

@@ -589,6 +589,7 @@ static int test_bake_internal(bContext *C, ReportList *reports)
static void init_bake_internal(BakeRender *bkr, bContext *C) static void init_bake_internal(BakeRender *bkr, bContext *C)
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
SceneLayer *sl = CTX_data_scene_layer(C);
bScreen *sc = CTX_wm_screen(C); bScreen *sc = CTX_wm_screen(C);
/* get editmode results */ /* get editmode results */
@@ -597,7 +598,7 @@ static void init_bake_internal(BakeRender *bkr, bContext *C)
bkr->sa = sc ? BKE_screen_find_big_area(sc, SPACE_IMAGE, 10) : NULL; /* can be NULL */ bkr->sa = sc ? BKE_screen_find_big_area(sc, SPACE_IMAGE, 10) : NULL; /* can be NULL */
bkr->main = CTX_data_main(C); bkr->main = CTX_data_main(C);
bkr->scene = scene; bkr->scene = scene;
bkr->actob = (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL; bkr->actob = (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT_NEW : NULL;
bkr->re = RE_NewRender("_Bake View_"); bkr->re = RE_NewRender("_Bake View_");
if (scene->r.bake_mode == RE_BAKE_AO) { if (scene->r.bake_mode == RE_BAKE_AO) {
@@ -810,6 +811,7 @@ static int bake_image_exec(bContext *C, wmOperator *op)
{ {
Main *bmain = CTX_data_main(C); Main *bmain = CTX_data_main(C);
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
SceneLayer *sl = CTX_data_scene_layer(C);
int result = OPERATOR_CANCELLED; int result = OPERATOR_CANCELLED;
if (is_multires_bake(scene)) { if (is_multires_bake(scene)) {
@@ -829,7 +831,7 @@ static int bake_image_exec(bContext *C, wmOperator *op)
RE_test_break_cb(bkr.re, NULL, thread_break); RE_test_break_cb(bkr.re, NULL, thread_break);
G.is_break = false; /* BKE_blender_test_break uses this global */ G.is_break = false; /* BKE_blender_test_break uses this global */
RE_Database_Baking(bkr.re, bmain, scene, scene->lay, scene->r.bake_mode, (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL); RE_Database_Baking(bkr.re, bmain, scene, scene->lay, scene->r.bake_mode, (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT_NEW : NULL);
/* baking itself is threaded, cannot use test_break in threads */ /* baking itself is threaded, cannot use test_break in threads */
BLI_init_threads(&threads, do_bake_render, 1); BLI_init_threads(&threads, do_bake_render, 1);

View File

@@ -649,17 +649,17 @@ static void copy_texture_space(Object *to, Object *ob)
} }
/* UNUSED, keep in case we want to copy functionality for use elsewhere */ /* UNUSED, keep in case we want to copy functionality for use elsewhere */
static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event) static void copy_attr(Main *bmain, Scene *scene, SceneLayer *sl, View3D *v3d, short event)
{ {
Object *ob; Object *ob;
BaseLegacy *base; Base *base;
Curve *cu, *cu1; Curve *cu, *cu1;
Nurb *nu; Nurb *nu;
bool do_depgraph_update = false; bool do_depgraph_update = false;
if (ID_IS_LINKED_DATABLOCK(scene)) return; if (ID_IS_LINKED_DATABLOCK(scene)) return;
if (!(ob = OBACT)) return; if (!(ob = OBACT_NEW)) return;
if (scene->obedit) { // XXX get from context if (scene->obedit) { // XXX get from context
/* obedit_copymenu(); */ /* obedit_copymenu(); */
@@ -679,9 +679,9 @@ static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event)
return; return;
} }
for (base = FIRSTBASE; base; base = base->next) { for (base = FIRSTBASE_NEW; base; base = base->next) {
if (base != BASACT) { if (base != BASACT_NEW) {
if (TESTBASELIB(v3d, base)) { if (TESTBASELIB_NEW(base)) {
DAG_id_tag_update(&base->object->id, OB_RECALC_DATA); DAG_id_tag_update(&base->object->id, OB_RECALC_DATA);
if (event == 1) { /* loc */ if (event == 1) { /* loc */
@@ -900,13 +900,13 @@ static void copy_attr(Main *bmain, Scene *scene, View3D *v3d, short event)
DAG_relations_tag_update(bmain); DAG_relations_tag_update(bmain);
} }
static void UNUSED_FUNCTION(copy_attr_menu) (Main *bmain, Scene *scene, View3D *v3d) static void UNUSED_FUNCTION(copy_attr_menu) (Main *bmain, Scene *scene, SceneLayer *sl, View3D *v3d)
{ {
Object *ob; Object *ob;
short event; short event;
char str[512]; char str[512];
if (!(ob = OBACT)) return; if (!(ob = OBACT_NEW)) return;
if (scene->obedit) { /* XXX get from context */ if (scene->obedit) { /* XXX get from context */
/* if (ob->type == OB_MESH) */ /* if (ob->type == OB_MESH) */
@@ -954,7 +954,7 @@ static void UNUSED_FUNCTION(copy_attr_menu) (Main *bmain, Scene *scene, View3D *
event = pupmenu(str); event = pupmenu(str);
if (event <= 0) return; if (event <= 0) return;
copy_attr(bmain, scene, v3d, event); copy_attr(bmain, scene, sl, v3d, event);
} }
/* ******************* force field toggle operator ***************** */ /* ******************* force field toggle operator ***************** */

View File

@@ -572,8 +572,8 @@ int ED_operator_mask(bContext *C)
case SPACE_IMAGE: case SPACE_IMAGE:
{ {
SpaceImage *sima = sa->spacedata.first; SpaceImage *sima = sa->spacedata.first;
Scene *scene = CTX_data_scene(C); SceneLayer *sl = CTX_data_scene_layer(C);
return ED_space_image_check_show_maskedit(scene, sima); return ED_space_image_check_show_maskedit(sl, sima);
} }
} }
} }

View File

@@ -765,7 +765,8 @@ static PaintOperation *texture_paint_init(bContext *C, wmOperator *op, const flo
/* initialize from context */ /* initialize from context */
if (CTX_wm_region_view3d(C)) { if (CTX_wm_region_view3d(C)) {
Object *ob = OBACT; SceneLayer *sl = CTX_data_scene_layer(C);
Object *ob = OBACT_NEW;
bool uvs, mat, tex, stencil; bool uvs, mat, tex, stencil;
if (!BKE_paint_proj_mesh_data_check(scene, ob, &uvs, &mat, &tex, &stencil)) { if (!BKE_paint_proj_mesh_data_check(scene, ob, &uvs, &mat, &tex, &stencil)) {
BKE_paint_data_warning(op->reports, uvs, mat, tex, stencil); BKE_paint_data_warning(op->reports, uvs, mat, tex, stencil);

View File

@@ -5305,11 +5305,12 @@ static int texture_paint_camera_project_exec(bContext *C, wmOperator *op)
{ {
Image *image = BLI_findlink(&CTX_data_main(C)->image, RNA_enum_get(op->ptr, "image")); Image *image = BLI_findlink(&CTX_data_main(C)->image, RNA_enum_get(op->ptr, "image"));
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
SceneLayer *sl = CTX_data_scene_layer(C);
ProjPaintState ps = {NULL}; ProjPaintState ps = {NULL};
int orig_brush_size; int orig_brush_size;
IDProperty *idgroup; IDProperty *idgroup;
IDProperty *view_data = NULL; IDProperty *view_data = NULL;
Object *ob = OBACT; Object *ob = OBACT_NEW;
bool uvs, mat, tex; bool uvs, mat, tex;
if (ob == NULL || ob->type != OB_MESH) { if (ob == NULL || ob->type != OB_MESH) {

View File

@@ -442,7 +442,8 @@ void paint_sample_color(bContext *C, ARegion *ar, int x, int y, bool texpaint_pr
if (CTX_wm_view3d(C) && texpaint_proj) { if (CTX_wm_view3d(C) && texpaint_proj) {
/* first try getting a colour directly from the mesh faces if possible */ /* first try getting a colour directly from the mesh faces if possible */
Object *ob = OBACT; SceneLayer *sl = CTX_data_scene_layer(C);
Object *ob = OBACT_NEW;
bool sample_success = false; bool sample_success = false;
ImagePaintSettings *imapaint = &scene->toolsettings->imapaint; ImagePaintSettings *imapaint = &scene->toolsettings->imapaint;
bool use_material = (imapaint->mode == IMAGEPAINT_MODE_MATERIAL); bool use_material = (imapaint->mode == IMAGEPAINT_MODE_MATERIAL);

View File

@@ -374,10 +374,10 @@ bool ED_space_image_show_uvedit(SpaceImage *sima, Object *obedit)
} }
/* matches clip function */ /* matches clip function */
bool ED_space_image_check_show_maskedit(Scene *scene, SpaceImage *sima) bool ED_space_image_check_show_maskedit(SceneLayer *sl, SpaceImage *sima)
{ {
/* check editmode - this is reserved for UV editing */ /* check editmode - this is reserved for UV editing */
Object *ob = OBACT; Object *ob = OBACT_NEW;
if (ob && ob->mode & OB_MODE_EDIT && ED_space_image_show_uvedit(sima, ob)) { if (ob && ob->mode & OB_MODE_EDIT && ED_space_image_show_uvedit(sima, ob)) {
return false; return false;
} }
@@ -390,8 +390,8 @@ int ED_space_image_maskedit_poll(bContext *C)
SpaceImage *sima = CTX_wm_space_image(C); SpaceImage *sima = CTX_wm_space_image(C);
if (sima) { if (sima) {
Scene *scene = CTX_data_scene(C); SceneLayer *sl = CTX_data_scene_layer(C);
return ED_space_image_check_show_maskedit(scene, sima); return ED_space_image_check_show_maskedit(sl, sima);
} }
return false; return false;

View File

@@ -792,6 +792,7 @@ static int image_view_selected_exec(bContext *C, wmOperator *UNUSED(op))
SpaceImage *sima; SpaceImage *sima;
ARegion *ar; ARegion *ar;
Scene *scene; Scene *scene;
SceneLayer *sl;
Object *obedit; Object *obedit;
Image *ima; Image *ima;
@@ -799,6 +800,7 @@ static int image_view_selected_exec(bContext *C, wmOperator *UNUSED(op))
sima = CTX_wm_space_image(C); sima = CTX_wm_space_image(C);
ar = CTX_wm_region(C); ar = CTX_wm_region(C);
scene = CTX_data_scene(C); scene = CTX_data_scene(C);
sl = CTX_data_scene_layer(C);
obedit = CTX_data_edit_object(C); obedit = CTX_data_edit_object(C);
ima = ED_space_image(sima); ima = ED_space_image(sima);
@@ -810,7 +812,7 @@ static int image_view_selected_exec(bContext *C, wmOperator *UNUSED(op))
return OPERATOR_CANCELLED; return OPERATOR_CANCELLED;
} }
} }
else if (ED_space_image_check_show_maskedit(scene, sima)) { else if (ED_space_image_check_show_maskedit(sl, sima)) {
if (!ED_mask_selected_minmax(C, min, max)) { if (!ED_mask_selected_minmax(C, min, max)) {
return OPERATOR_CANCELLED; return OPERATOR_CANCELLED;
} }

View File

@@ -45,6 +45,7 @@
#include "BKE_colortools.h" #include "BKE_colortools.h"
#include "BKE_context.h" #include "BKE_context.h"
#include "BKE_image.h" #include "BKE_image.h"
#include "BKE_layer.h"
#include "BKE_library.h" #include "BKE_library.h"
#include "BKE_scene.h" #include "BKE_scene.h"
#include "BKE_screen.h" #include "BKE_screen.h"
@@ -535,6 +536,7 @@ static void image_listener(bScreen *sc, ScrArea *sa, wmNotifier *wmn)
case ND_TRANSFORM: case ND_TRANSFORM:
case ND_MODIFIER: case ND_MODIFIER:
{ {
TODO_LAYER_CONTEXT; /* need to use OBACT_NEW */
Object *ob = OBACT; Object *ob = OBACT;
if (ob && (ob == wmn->reference) && (ob->mode & OB_MODE_EDIT)) { if (ob && (ob == wmn->reference) && (ob->mode & OB_MODE_EDIT)) {
if (sima->lock && (sima->flag & SI_DRAWSHADOW)) { if (sima->lock && (sima->flag & SI_DRAWSHADOW)) {

View File

@@ -777,7 +777,7 @@ static DMDrawOption wpaint__setSolidDrawOptions_facemask(void *userData, int ind
return DM_DRAW_OPTION_NORMAL; return DM_DRAW_OPTION_NORMAL;
} }
static void draw_mesh_text(Scene *scene, Object *ob, int glsl) static void draw_mesh_text(Scene *scene, SceneLayer *sl, Object *ob, int glsl)
{ {
Mesh *me = ob->data; Mesh *me = ob->data;
DerivedMesh *ddm; DerivedMesh *ddm;
@@ -803,7 +803,7 @@ static void draw_mesh_text(Scene *scene, Object *ob, int glsl)
/* don't draw when editing */ /* don't draw when editing */
if (ob->mode & OB_MODE_EDIT) if (ob->mode & OB_MODE_EDIT)
return; return;
else if (ob == OBACT) else if (ob == OBACT_NEW)
if (BKE_paint_select_elem_test(ob)) if (BKE_paint_select_elem_test(ob))
return; return;
@@ -947,7 +947,7 @@ static int compareDrawOptionsEm(void *userData, int cur_index, int next_index)
return 1; return 1;
} }
static void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d, static void draw_mesh_textured_old(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d,
Object *ob, DerivedMesh *dm, const int draw_flags) Object *ob, DerivedMesh *dm, const int draw_flags)
{ {
Mesh *me = ob->data; Mesh *me = ob->data;
@@ -984,7 +984,7 @@ static void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d
dm_draw_flag = DM_DRAW_USE_ACTIVE_UV; dm_draw_flag = DM_DRAW_USE_ACTIVE_UV;
} }
if (ob == OBACT) { if (ob == OBACT_NEW) {
if (ob->mode & OB_MODE_WEIGHT_PAINT) { if (ob->mode & OB_MODE_WEIGHT_PAINT) {
dm_draw_flag |= DM_DRAW_USE_COLORS | DM_DRAW_ALWAYS_SMOOTH | DM_DRAW_SKIP_HIDDEN; dm_draw_flag |= DM_DRAW_USE_COLORS | DM_DRAW_ALWAYS_SMOOTH | DM_DRAW_SKIP_HIDDEN;
} }
@@ -1040,7 +1040,7 @@ static void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d
/* draw game engine text hack */ /* draw game engine text hack */
if (rv3d->rflag & RV3D_IS_GAME_ENGINE) { if (rv3d->rflag & RV3D_IS_GAME_ENGINE) {
if (BKE_bproperty_object_get(ob, "Text")) { if (BKE_bproperty_object_get(ob, "Text")) {
draw_mesh_text(scene, ob, 0); draw_mesh_text(scene, sl, ob, 0);
} }
} }
@@ -1174,7 +1174,7 @@ static bool tex_mat_set_face_editmesh_cb(void *userData, int index)
return !BM_elem_flag_test(efa, BM_ELEM_HIDDEN); return !BM_elem_flag_test(efa, BM_ELEM_HIDDEN);
} }
void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, void draw_mesh_textured(Scene *scene, SceneLayer *sl, View3D *v3d, RegionView3D *rv3d,
Object *ob, DerivedMesh *dm, const int draw_flags) Object *ob, DerivedMesh *dm, const int draw_flags)
{ {
/* if not cycles, or preview-modifiers, or drawing matcaps */ /* if not cycles, or preview-modifiers, or drawing matcaps */
@@ -1183,7 +1183,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d,
(BKE_scene_use_new_shading_nodes(scene) == false) || (BKE_scene_use_new_shading_nodes(scene) == false) ||
((ob->mode & OB_MODE_TEXTURE_PAINT) && ELEM(v3d->drawtype, OB_TEXTURE, OB_SOLID))) ((ob->mode & OB_MODE_TEXTURE_PAINT) && ELEM(v3d->drawtype, OB_TEXTURE, OB_SOLID)))
{ {
draw_mesh_textured_old(scene, v3d, rv3d, ob, dm, draw_flags); draw_mesh_textured_old(scene, sl, v3d, rv3d, ob, dm, draw_flags);
return; return;
} }
else if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) { else if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) {

View File

@@ -3797,7 +3797,7 @@ static DMDrawOption draw_em_fancy__setGLSLFaceOpts(void *userData, int index)
} }
} }
static void draw_em_fancy(Scene *scene, ARegion *ar, View3D *v3d, static void draw_em_fancy(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d,
Object *ob, BMEditMesh *em, DerivedMesh *cageDM, DerivedMesh *finalDM, const char dt) Object *ob, BMEditMesh *em, DerivedMesh *cageDM, DerivedMesh *finalDM, const char dt)
{ {
@@ -3845,7 +3845,7 @@ static void draw_em_fancy(Scene *scene, ARegion *ar, View3D *v3d,
glFrontFace(GL_CCW); glFrontFace(GL_CCW);
} }
else { else {
draw_mesh_textured(scene, v3d, rv3d, ob, finalDM, 0); draw_mesh_textured(scene, sl, v3d, rv3d, ob, finalDM, 0);
} }
} }
else { else {
@@ -4203,11 +4203,11 @@ static bool object_is_halo(Scene *scene, Object *ob)
return (ma && (ma->material_type == MA_TYPE_HALO) && !BKE_scene_use_new_shading_nodes(scene)); return (ma && (ma->material_type == MA_TYPE_HALO) && !BKE_scene_use_new_shading_nodes(scene));
} }
static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base, static void draw_mesh_fancy(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, RegionView3D *rv3d, Base *base,
const char dt, const unsigned char ob_wire_col[4], const short dflag) const char dt, const unsigned char ob_wire_col[4], const short dflag)
{ {
#ifdef WITH_GAMEENGINE #ifdef WITH_GAMEENGINE
Object *ob = (rv3d->rflag & RV3D_IS_GAME_ENGINE) ? BKE_object_lod_meshob_get(base->object, scene) : base->object; Object *ob = (rv3d->rflag & RV3D_IS_GAME_ENGINE) ? BKE_object_lod_meshob_get(base->object, sl) : base->object;
#else #else
Object *ob = base->object; Object *ob = base->object;
#endif #endif
@@ -4314,7 +4314,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D
draw_mesh_face_select(rv3d, me, dm, false); draw_mesh_face_select(rv3d, me, dm, false);
} }
else { else {
draw_mesh_textured(scene, v3d, rv3d, ob, dm, draw_flags); draw_mesh_textured(scene, sl, v3d, rv3d, ob, dm, draw_flags);
} }
if (draw_loose && !(draw_flags & DRAW_FACE_SELECT)) { if (draw_loose && !(draw_flags & DRAW_FACE_SELECT)) {
@@ -4468,7 +4468,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D
} }
/* returns true if nothing was drawn, for detecting to draw an object center */ /* returns true if nothing was drawn, for detecting to draw an object center */
static bool draw_mesh_object(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base, static bool draw_mesh_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base,
const char dt, const unsigned char ob_wire_col[4], const short dflag) const char dt, const unsigned char ob_wire_col[4], const short dflag)
{ {
Object *ob = base->object; Object *ob = base->object;
@@ -4528,7 +4528,7 @@ static bool draw_mesh_object(Scene *scene, ARegion *ar, View3D *v3d, RegionView3
} }
} }
draw_em_fancy(scene, ar, v3d, ob, em, cageDM, finalDM, dt); draw_em_fancy(scene, sl, ar, v3d, ob, em, cageDM, finalDM, dt);
if (use_material) { if (use_material) {
GPU_end_object_materials(); GPU_end_object_materials();
@@ -4550,7 +4550,7 @@ static bool draw_mesh_object(Scene *scene, ARegion *ar, View3D *v3d, RegionView3
} }
} }
draw_mesh_fancy(scene, ar, v3d, rv3d, base, dt, ob_wire_col, dflag); draw_mesh_fancy(scene, sl, ar, v3d, rv3d, base, dt, ob_wire_col, dflag);
GPU_end_object_materials(); GPU_end_object_materials();
@@ -4612,18 +4612,18 @@ static void make_color_variations(const unsigned char base_ubyte[4], float low[4
high[3] = base[3]; high[3] = base[3];
} }
static void draw_mesh_fancy_new(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base, static void draw_mesh_fancy_new(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, RegionView3D *rv3d, Base *base,
const char dt, const unsigned char ob_wire_col[4], const short dflag, const bool other_obedit) const char dt, const unsigned char ob_wire_col[4], const short dflag, const bool other_obedit)
{ {
if (dflag & (DRAW_PICKING | DRAW_CONSTCOLOR)) { if (dflag & (DRAW_PICKING | DRAW_CONSTCOLOR)) {
/* too complicated! use existing methods */ /* too complicated! use existing methods */
/* TODO: move this into a separate depth pre-pass */ /* TODO: move this into a separate depth pre-pass */
draw_mesh_fancy(scene, ar, v3d, rv3d, base, dt, ob_wire_col, dflag); draw_mesh_fancy(scene, sl, ar, v3d, rv3d, base, dt, ob_wire_col, dflag);
return; return;
} }
#ifdef WITH_GAMEENGINE #ifdef WITH_GAMEENGINE
Object *ob = (rv3d->rflag & RV3D_IS_GAME_ENGINE) ? BKE_object_lod_meshob_get(base->object, scene) : base->object; Object *ob = (rv3d->rflag & RV3D_IS_GAME_ENGINE) ? BKE_object_lod_meshob_get(base->object, sl) : base->object;
#else #else
Object *ob = base->object; Object *ob = base->object;
#endif #endif
@@ -4789,7 +4789,7 @@ static void draw_mesh_fancy_new(Scene *scene, ARegion *ar, View3D *v3d, RegionVi
draw_mesh_face_select(rv3d, me, dm, false); draw_mesh_face_select(rv3d, me, dm, false);
} }
else { else {
draw_mesh_textured(scene, v3d, rv3d, ob, dm, draw_flags); draw_mesh_textured(scene, sl, v3d, rv3d, ob, dm, draw_flags);
} }
if (draw_loose && !(draw_flags & DRAW_FACE_SELECT)) { if (draw_loose && !(draw_flags & DRAW_FACE_SELECT)) {
@@ -4931,7 +4931,7 @@ static void draw_mesh_fancy_new(Scene *scene, ARegion *ar, View3D *v3d, RegionVi
dm->release(dm); dm->release(dm);
} }
static bool draw_mesh_object_new(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base, static bool draw_mesh_object_new(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, RegionView3D *rv3d, BaseLegacy *base,
const char dt, const unsigned char ob_wire_col[4], const short dflag) const char dt, const unsigned char ob_wire_col[4], const short dflag)
{ {
Object *ob = base->object; Object *ob = base->object;
@@ -5017,7 +5017,7 @@ static bool draw_mesh_object_new(Scene *scene, ARegion *ar, View3D *v3d, RegionV
const bool other_obedit = obedit && (obedit != ob); const bool other_obedit = obedit && (obedit != ob);
draw_mesh_fancy_new(scene, ar, v3d, rv3d, base, dt, ob_wire_col, dflag, other_obedit); draw_mesh_fancy_new(scene, sl, ar, v3d, rv3d, base, dt, ob_wire_col, dflag, other_obedit);
GPU_end_object_materials(); GPU_end_object_materials();
@@ -8434,10 +8434,10 @@ void draw_object(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d, Base *b
switch (ob->type) { switch (ob->type) {
case OB_MESH: case OB_MESH:
if (IS_VIEWPORT_LEGACY(v3d)) { if (IS_VIEWPORT_LEGACY(v3d)) {
empty_object = draw_mesh_object(scene, ar, v3d, rv3d, base, dt, ob_wire_col, dflag); empty_object = draw_mesh_object(scene, sl, ar, v3d, rv3d, base, dt, ob_wire_col, dflag);
} }
else { else {
empty_object = draw_mesh_object_new(scene, ar, v3d, rv3d, base, dt, ob_wire_col, dflag); empty_object = draw_mesh_object_new(scene, sl, ar, v3d, rv3d, base, dt, ob_wire_col, dflag);
} }
if ((dflag & DRAW_CONSTCOLOR) == 0) { if ((dflag & DRAW_CONSTCOLOR) == 0) {
/* mesh draws wire itself */ /* mesh draws wire itself */

View File

@@ -786,8 +786,8 @@ static void do_view3d_vgroup_buttons(bContext *C, void *UNUSED(arg), int event)
static int view3d_panel_vgroup_poll(const bContext *C, PanelType *UNUSED(pt)) static int view3d_panel_vgroup_poll(const bContext *C, PanelType *UNUSED(pt))
{ {
Scene *scene = CTX_data_scene(C); SceneLayer *sl = CTX_data_scene_layer(C);
Object *ob = OBACT; Object *ob = OBACT_NEW;
if (ob && (BKE_object_is_in_editmode_vgroup(ob) || if (ob && (BKE_object_is_in_editmode_vgroup(ob) ||
BKE_object_is_in_wpaint_select_vert(ob))) BKE_object_is_in_wpaint_select_vert(ob)))
{ {
@@ -1106,9 +1106,9 @@ static void v3d_editmetaball_buts(uiLayout *layout, Object *ob)
static void do_view3d_region_buttons(bContext *C, void *UNUSED(index), int event) static void do_view3d_region_buttons(bContext *C, void *UNUSED(index), int event)
{ {
Scene *scene = CTX_data_scene(C); SceneLayer *sl = CTX_data_scene_layer(C);
View3D *v3d = CTX_wm_view3d(C); View3D *v3d = CTX_wm_view3d(C);
Object *ob = OBACT; Object *ob = OBACT_NEW;
switch (event) { switch (event) {

View File

@@ -1505,9 +1505,9 @@ static void view3d_draw_grid(const bContext *C, ARegion *ar)
glDisable(GL_DEPTH_TEST); glDisable(GL_DEPTH_TEST);
} }
static bool is_cursor_visible(Scene *scene) static bool is_cursor_visible(Scene *scene, SceneLayer *sl)
{ {
Object *ob = OBACT; Object *ob = OBACT_NEW;
/* don't draw cursor in paint modes, but with a few exceptions */ /* don't draw cursor in paint modes, but with a few exceptions */
if (ob && ob->mode & OB_MODE_ALL_PAINT) { if (ob && ob->mode & OB_MODE_ALL_PAINT) {
@@ -2394,9 +2394,9 @@ void view3d_main_region_draw(const bContext *C, ARegion *ar)
* meanwhile it should keep the old viewport working. * meanwhile it should keep the old viewport working.
*/ */
void VP_legacy_drawcursor(Scene *scene, ARegion *ar, View3D *v3d) void VP_legacy_drawcursor(Scene *scene, SceneLayer *sl, ARegion *ar, View3D *v3d)
{ {
if (is_cursor_visible(scene)) { if (is_cursor_visible(scene, sl)) {
drawcursor(scene, ar, v3d); drawcursor(scene, ar, v3d);
} }
} }

View File

@@ -2384,6 +2384,7 @@ static void view3d_main_region_draw_info(const bContext *C, Scene *scene,
ARegion *ar, View3D *v3d, ARegion *ar, View3D *v3d,
const char *grid_unit, bool render_border) const char *grid_unit, bool render_border)
{ {
SceneLayer *sl = CTX_data_scene_layer(C);
wmWindowManager *wm = CTX_wm_manager(C); wmWindowManager *wm = CTX_wm_manager(C);
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
rcti rect; rcti rect;
@@ -2404,7 +2405,7 @@ static void view3d_main_region_draw_info(const bContext *C, Scene *scene,
} }
if ((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) { if ((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) {
VP_legacy_drawcursor(scene, ar, v3d); /* 3D cursor */ VP_legacy_drawcursor(scene, sl, ar, v3d); /* 3D cursor */
if (U.uiflag & USER_SHOW_ROTVIEWICON) if (U.uiflag & USER_SHOW_ROTVIEWICON)
VP_legacy_draw_view_axis(rv3d, &rect); VP_legacy_draw_view_axis(rv3d, &rect);
@@ -2412,7 +2413,6 @@ static void view3d_main_region_draw_info(const bContext *C, Scene *scene,
draw_view_icon(rv3d, &rect); draw_view_icon(rv3d, &rect);
if (U.uiflag & USER_DRAWVIEWINFO) { if (U.uiflag & USER_DRAWVIEWINFO) {
SceneLayer *sl = CTX_data_scene_layer(C);
Object *ob = OBACT_NEW; Object *ob = OBACT_NEW;
VP_legacy_draw_selected_name(scene, ob, &rect); VP_legacy_draw_selected_name(scene, ob, &rect);
} }

View File

@@ -619,7 +619,8 @@ static bool view3d_orbit_calc_center(bContext *C, float r_dyn_ofs[3])
bool is_set = false; bool is_set = false;
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
Object *ob_act = OBACT; SceneLayer *sl = CTX_data_scene_layer(C);
Object *ob_act = OBACT_NEW;
if (ob_act && (ob_act->mode & OB_MODE_ALL_PAINT) && if (ob_act && (ob_act->mode & OB_MODE_ALL_PAINT) &&
/* with weight-paint + pose-mode, fall through to using calculateTransformCenter */ /* with weight-paint + pose-mode, fall through to using calculateTransformCenter */
@@ -656,14 +657,13 @@ static bool view3d_orbit_calc_center(bContext *C, float r_dyn_ofs[3])
} }
else if (ob_act == NULL || ob_act->mode == OB_MODE_OBJECT) { else if (ob_act == NULL || ob_act->mode == OB_MODE_OBJECT) {
/* object mode use boundbox centers */ /* object mode use boundbox centers */
View3D *v3d = CTX_wm_view3d(C); Base *base;
BaseLegacy *base;
unsigned int tot = 0; unsigned int tot = 0;
float select_center[3]; float select_center[3];
zero_v3(select_center); zero_v3(select_center);
for (base = FIRSTBASE; base; base = base->next) { for (base = FIRSTBASE_NEW; base; base = base->next) {
if (TESTBASE(v3d, base)) { if (TESTBASE_NEW(base)) {
/* use the boundbox if we can */ /* use the boundbox if we can */
Object *ob = base->object; Object *ob = base->object;
@@ -3027,9 +3027,10 @@ static int viewselected_exec(bContext *C, wmOperator *op)
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
View3D *v3d = CTX_wm_view3d(C); View3D *v3d = CTX_wm_view3d(C);
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
SceneLayer *sl = CTX_data_scene_layer(C);
bGPdata *gpd = CTX_data_gpencil_data(C); bGPdata *gpd = CTX_data_gpencil_data(C);
const bool is_gp_edit = ((gpd) && (gpd->flag & GP_DATA_STROKE_EDITMODE)); const bool is_gp_edit = ((gpd) && (gpd->flag & GP_DATA_STROKE_EDITMODE));
Object *ob = OBACT; Object *ob = OBACT_NEW;
Object *obedit = CTX_data_edit_object(C); Object *obedit = CTX_data_edit_object(C);
float min[3], max[3]; float min[3], max[3];
bool ok = false, ok_dist = true; bool ok = false, ok_dist = true;
@@ -3048,9 +3049,9 @@ static int viewselected_exec(bContext *C, wmOperator *op)
if (ob && (ob->mode & OB_MODE_WEIGHT_PAINT)) { if (ob && (ob->mode & OB_MODE_WEIGHT_PAINT)) {
/* hard-coded exception, we look for the one selected armature */ /* hard-coded exception, we look for the one selected armature */
/* this is weak code this way, we should make a generic active/selection callback interface once... */ /* this is weak code this way, we should make a generic active/selection callback interface once... */
BaseLegacy *base; Base *base;
for (base = scene->base.first; base; base = base->next) { for (base = scene->base.first; base; base = base->next) {
if (TESTBASELIB(v3d, base)) { if (TESTBASELIB_NEW(base)) {
if (base->object->type == OB_ARMATURE) if (base->object->type == OB_ARMATURE)
if (base->object->mode & OB_MODE_POSE) if (base->object->mode & OB_MODE_POSE)
break; break;
@@ -3859,6 +3860,7 @@ static int viewnumpad_exec(bContext *C, wmOperator *op)
ARegion *ar; ARegion *ar;
RegionView3D *rv3d; RegionView3D *rv3d;
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
SceneLayer *sl = CTX_data_scene_layer(C);
static int perspo = RV3D_PERSP; static int perspo = RV3D_PERSP;
int viewnum, nextperspo; int viewnum, nextperspo;
bool align_active; bool align_active;
@@ -3893,7 +3895,7 @@ static int viewnumpad_exec(bContext *C, wmOperator *op)
/* lastview - */ /* lastview - */
if (rv3d->persp != RV3D_CAMOB) { if (rv3d->persp != RV3D_CAMOB) {
Object *ob = OBACT; Object *ob = OBACT_NEW;
if (!rv3d->smooth_timer) { if (!rv3d->smooth_timer) {
/* store settings of current view before allowing overwriting with camera view /* store settings of current view before allowing overwriting with camera view

View File

@@ -186,7 +186,7 @@ bool draw_armature(Scene *scene, struct SceneLayer *sl, View3D *v3d, ARegion *ar
const bool is_outline); const bool is_outline);
/* drawmesh.c */ /* drawmesh.c */
void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, void draw_mesh_textured(Scene *scene, struct SceneLayer *sl, View3D *v3d, RegionView3D *rv3d,
struct Object *ob, struct DerivedMesh *dm, const int draw_flags); struct Object *ob, struct DerivedMesh *dm, const int draw_flags);
void draw_mesh_face_select( void draw_mesh_face_select(
struct RegionView3D *rv3d, struct Mesh *me, struct DerivedMesh *dm, struct RegionView3D *rv3d, struct Mesh *me, struct DerivedMesh *dm,
@@ -330,7 +330,7 @@ extern bool view3d_camera_border_hack_test;
#define IS_VIEWPORT_LEGACY(v3d) ((v3d->tmp_compat_flag & V3D_NEW_VIEWPORT) == 0) #define IS_VIEWPORT_LEGACY(v3d) ((v3d->tmp_compat_flag & V3D_NEW_VIEWPORT) == 0)
/* temporary for legacy viewport to work */ /* temporary for legacy viewport to work */
void VP_legacy_drawcursor(Scene *scene, ARegion *ar, View3D *v3d); void VP_legacy_drawcursor(Scene *scene, struct SceneLayer *sl, ARegion *ar, View3D *v3d);
void VP_legacy_draw_view_axis(RegionView3D *rv3d, rcti *rect); void VP_legacy_draw_view_axis(RegionView3D *rv3d, rcti *rect);
void VP_legacy_draw_viewport_name(ARegion *ar, View3D *v3d, rcti *rect); void VP_legacy_draw_viewport_name(ARegion *ar, View3D *v3d, rcti *rect);
void VP_legacy_draw_selected_name(Scene *scene, Object *ob, rcti *rect); void VP_legacy_draw_selected_name(Scene *scene, Object *ob, rcti *rect);

View File

@@ -1511,7 +1511,7 @@ static bool ed_object_select_pick(
} }
} }
} }
else if (ED_do_pose_selectbuffer(scene, basact, buffer, hits, extend, deselect, toggle, do_nearest)) { else if (ED_do_pose_selectbuffer(scene, sl, basact, buffer, hits, extend, deselect, toggle, do_nearest)) {
/* then bone is found */ /* then bone is found */
/* we make the armature selected: /* we make the armature selected:

View File

@@ -50,6 +50,7 @@ struct Object;
struct View3D; struct View3D;
struct ScrArea; struct ScrArea;
struct Scene; struct Scene;
struct SceneLayer;
struct bConstraint; struct bConstraint;
struct wmKeyMap; struct wmKeyMap;
struct wmKeyConfig; struct wmKeyConfig;
@@ -650,7 +651,7 @@ bool transdata_check_local_islands(TransInfo *t, short around);
int count_set_pose_transflags(int *out_mode, short around, struct Object *ob); int count_set_pose_transflags(int *out_mode, short around, struct Object *ob);
/* auto-keying stuff used by special_aftertrans_update */ /* auto-keying stuff used by special_aftertrans_update */
void autokeyframe_ob_cb_func(struct bContext *C, struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode); void autokeyframe_ob_cb_func(struct bContext *C, struct Scene *scene, struct SceneLayer *sl, struct View3D *v3d, struct Object *ob, int tmode);
void autokeyframe_pose_cb_func(struct bContext *C, struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode, short targetless_ik); void autokeyframe_pose_cb_func(struct bContext *C, struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode, short targetless_ik);
/*********************** Constraints *****************************/ /*********************** Constraints *****************************/

View File

@@ -286,13 +286,13 @@ static void set_prop_dist(TransInfo *t, const bool with_dist)
static void createTransTexspace(TransInfo *t) static void createTransTexspace(TransInfo *t)
{ {
Scene *scene = t->scene; SceneLayer *sl = t->sl;
TransData *td; TransData *td;
Object *ob; Object *ob;
ID *id; ID *id;
short *texflag; short *texflag;
ob = OBACT; ob = OBACT_NEW;
if (ob == NULL) { // Shouldn't logically happen, but still... if (ob == NULL) { // Shouldn't logically happen, but still...
t->total = 0; t->total = 0;
@@ -1917,7 +1917,8 @@ static void createTransParticleVerts(bContext *C, TransInfo *t)
void flushTransParticles(TransInfo *t) void flushTransParticles(TransInfo *t)
{ {
Scene *scene = t->scene; Scene *scene = t->scene;
Object *ob = OBACT; SceneLayer *sl = t->sl;
Object *ob = OBACT_NEW;
PTCacheEdit *edit = PE_get_current(scene, ob); PTCacheEdit *edit = PE_get_current(scene, ob);
ParticleSystem *psys = edit->psys; ParticleSystem *psys = edit->psys;
ParticleSystemModifierData *psmd = NULL; ParticleSystemModifierData *psmd = NULL;
@@ -1957,7 +1958,7 @@ void flushTransParticles(TransInfo *t)
point->flag |= PEP_EDIT_RECALC; point->flag |= PEP_EDIT_RECALC;
} }
PE_update_object(scene, OBACT, 1); PE_update_object(scene, OBACT_NEW, 1);
} }
/* ********************* mesh ****************** */ /* ********************* mesh ****************** */
@@ -5523,7 +5524,7 @@ static void clear_trans_object_base_flags(TransInfo *t)
* tmode: should be a transform mode * tmode: should be a transform mode
*/ */
// NOTE: context may not always be available, so must check before using it as it's a luxury for a few cases // NOTE: context may not always be available, so must check before using it as it's a luxury for a few cases
void autokeyframe_ob_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob, int tmode) void autokeyframe_ob_cb_func(bContext *C, Scene *scene, SceneLayer *sl, View3D *v3d, Object *ob, int tmode)
{ {
ID *id = &ob->id; ID *id = &ob->id;
FCurve *fcu; FCurve *fcu;
@@ -5572,7 +5573,7 @@ void autokeyframe_ob_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob,
} }
else if (ELEM(tmode, TFM_ROTATION, TFM_TRACKBALL)) { else if (ELEM(tmode, TFM_ROTATION, TFM_TRACKBALL)) {
if (v3d->around == V3D_AROUND_ACTIVE) { if (v3d->around == V3D_AROUND_ACTIVE) {
if (ob != OBACT) if (ob != OBACT_NEW)
do_loc = true; do_loc = true;
} }
else if (v3d->around == V3D_AROUND_CURSOR) else if (v3d->around == V3D_AROUND_CURSOR)
@@ -5583,7 +5584,7 @@ void autokeyframe_ob_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob,
} }
else if (tmode == TFM_RESIZE) { else if (tmode == TFM_RESIZE) {
if (v3d->around == V3D_AROUND_ACTIVE) { if (v3d->around == V3D_AROUND_ACTIVE) {
if (ob != OBACT) if (ob != OBACT_NEW)
do_loc = true; do_loc = true;
} }
else if (v3d->around == V3D_AROUND_CURSOR) else if (v3d->around == V3D_AROUND_CURSOR)
@@ -6346,7 +6347,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
/* Set autokey if necessary */ /* Set autokey if necessary */
if (!canceled) { if (!canceled) {
autokeyframe_ob_cb_func(C, t->scene, (View3D *)t->view, ob, t->mode); autokeyframe_ob_cb_func(C, t->scene, t->sl, (View3D *)t->view, ob, t->mode);
} }
/* restore rigid body transform */ /* restore rigid body transform */

View File

@@ -927,7 +927,7 @@ static void recalcData_objects(TransInfo *t)
// TODO: autokeyframe calls need some setting to specify to add samples (FPoints) instead of keyframes? // TODO: autokeyframe calls need some setting to specify to add samples (FPoints) instead of keyframes?
if ((t->animtimer) && IS_AUTOKEY_ON(t->scene)) { if ((t->animtimer) && IS_AUTOKEY_ON(t->scene)) {
animrecord_check_state(t->scene, &ob->id, t->animtimer); animrecord_check_state(t->scene, &ob->id, t->animtimer);
autokeyframe_ob_cb_func(t->context, t->scene, (View3D *)t->view, ob, t->mode); autokeyframe_ob_cb_func(t->context, t->scene, t->sl, (View3D *)t->view, ob, t->mode);
} }
/* sets recalc flags fully, instead of flushing existing ones /* sets recalc flags fully, instead of flushing existing ones

View File

@@ -1990,6 +1990,9 @@ extern const char *RE_engine_id_CYCLES;
((base)->lay & (v3d ? v3d->lay : scene->lay)) && \ ((base)->lay & (v3d ? v3d->lay : scene->lay)) && \
((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0) ((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0)
#define TESTBASE_NEW(base) ( \
(((base)->flag & BASE_SELECTED) != 0) && \
(((base)->flag & BASE_VISIBLED) != 0))
#define TESTBASELIB_NEW(base) ( \ #define TESTBASELIB_NEW(base) ( \
(((base)->flag & BASE_SELECTED) != 0) && \ (((base)->flag & BASE_SELECTED) != 0) && \
((base)->object->id.lib == NULL) && \ ((base)->object->id.lib == NULL) && \

View File

@@ -255,6 +255,7 @@ EnumPropertyItem rna_enum_file_sort_items[] = {
#include "BKE_colortools.h" #include "BKE_colortools.h"
#include "BKE_context.h" #include "BKE_context.h"
#include "BKE_depsgraph.h" #include "BKE_depsgraph.h"
#include "BKE_layer.h"
#include "BKE_nla.h" #include "BKE_nla.h"
#include "BKE_paint.h" #include "BKE_paint.h"
#include "BKE_scene.h" #include "BKE_scene.h"
@@ -817,7 +818,11 @@ static int rna_SpaceImageEditor_show_maskedit_get(PointerRNA *ptr)
{ {
SpaceImage *sima = (SpaceImage *)(ptr->data); SpaceImage *sima = (SpaceImage *)(ptr->data);
bScreen *sc = (bScreen *)ptr->id.data; bScreen *sc = (bScreen *)ptr->id.data;
return ED_space_image_check_show_maskedit(sc->scene, sima);
TODO_LAYER_CONTEXT; /* get SceneLayer from context/window/workspace instead */
SceneLayer *sl = BKE_scene_layer_context_active(sc->scene);
return ED_space_image_check_show_maskedit(sl, sima);
} }
static void rna_SpaceImageEditor_image_set(PointerRNA *ptr, PointerRNA value) static void rna_SpaceImageEditor_image_set(PointerRNA *ptr, PointerRNA value)

View File

@@ -79,7 +79,8 @@ static void shader_get_from_context(const bContext *C, bNodeTreeType *UNUSED(tre
{ {
SpaceNode *snode = CTX_wm_space_node(C); SpaceNode *snode = CTX_wm_space_node(C);
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
Object *ob = OBACT; SceneLayer *sl = CTX_data_scene_layer(C);
Object *ob = OBACT_NEW;
if ((snode->shaderfrom == SNODE_SHADER_OBJECT) || if ((snode->shaderfrom == SNODE_SHADER_OBJECT) ||
(BKE_scene_use_new_shading_nodes(scene) == false)) (BKE_scene_use_new_shading_nodes(scene) == false))

View File

@@ -62,7 +62,8 @@ static void texture_get_from_context(const bContext *C, bNodeTreeType *UNUSED(tr
{ {
SpaceNode *snode = CTX_wm_space_node(C); SpaceNode *snode = CTX_wm_space_node(C);
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
Object *ob = OBACT; SceneLayer *sl = CTX_data_scene_layer(C);
Object *ob = OBACT_NEW;
Tex *tx = NULL; Tex *tx = NULL;
if (snode->texfrom == SNODE_TEX_OBJECT) { if (snode->texfrom == SNODE_TEX_OBJECT) {