forked from bartvdbraak/blender
Farewell Scene->basact
This commit is contained in:
parent
09d26cab0b
commit
c35f1d05ea
@ -63,6 +63,7 @@ struct BVHTreeRay;
|
||||
struct BVHTreeRayHit;
|
||||
struct EdgeHash;
|
||||
struct EvaluationContext;
|
||||
struct SceneLayer;
|
||||
|
||||
#define PARTICLE_COLLISION_MAX_COLLISIONS 10
|
||||
|
||||
@ -296,7 +297,7 @@ void psys_set_current_num(Object *ob, int index);
|
||||
|
||||
struct LatticeDeformData *psys_create_lattice_deform_data(struct ParticleSimulationData *sim);
|
||||
|
||||
bool psys_in_edit_mode(struct Scene *scene, struct ParticleSystem *psys);
|
||||
bool psys_in_edit_mode(struct SceneLayer *scene_layer, struct ParticleSystem *psys);
|
||||
bool psys_check_enabled(struct Object *ob, struct ParticleSystem *psys, const bool use_render_params);
|
||||
bool psys_check_edited(struct ParticleSystem *psys);
|
||||
|
||||
|
@ -106,10 +106,8 @@ int BKE_scene_base_iter_next(
|
||||
const struct EvaluationContext *eval_ctx, struct SceneBaseIter *iter,
|
||||
struct Scene **scene, int val, struct BaseLegacy **base, struct Object **ob);
|
||||
|
||||
void BKE_scene_base_flag_to_objects(struct SceneLayer *sl);
|
||||
void BKE_scene_base_flag_to_objects(struct SceneLayer *scene_layer);
|
||||
void BKE_scene_base_flag_from_objects(struct Scene *scene);
|
||||
void BKE_scene_base_flag_sync_from_base(struct BaseLegacy *base);
|
||||
void BKE_scene_base_flag_sync_from_object(struct BaseLegacy *base);
|
||||
void BKE_scene_object_base_flag_sync_from_base(struct Base *base);
|
||||
void BKE_scene_object_base_flag_sync_from_object(struct Base *base);
|
||||
|
||||
|
@ -252,7 +252,7 @@ struct LatticeDeformData *psys_create_lattice_deform_data(ParticleSimulationData
|
||||
{
|
||||
struct LatticeDeformData *lattice_deform_data = NULL;
|
||||
|
||||
if (psys_in_edit_mode(sim->scene, sim->psys) == 0) {
|
||||
if (psys_in_edit_mode(sim->eval_ctx->scene_layer, sim->psys) == 0) {
|
||||
Object *lattice = NULL;
|
||||
ModifierData *md = (ModifierData *)psys_get_modifier(sim->ob, sim->psys);
|
||||
int mode = G.is_rendering ? eModifierMode_Render : eModifierMode_Realtime;
|
||||
@ -288,10 +288,16 @@ void psys_enable_all(Object *ob)
|
||||
for (; psys; psys = psys->next)
|
||||
psys->flag &= ~PSYS_DISABLED;
|
||||
}
|
||||
bool psys_in_edit_mode(Scene *scene, ParticleSystem *psys)
|
||||
|
||||
bool psys_in_edit_mode(SceneLayer *scene_layer, ParticleSystem *psys)
|
||||
{
|
||||
return (scene->basact && (scene->basact->object->mode & OB_MODE_PARTICLE_EDIT) && psys == psys_get_current((scene->basact)->object) && (psys->edit || psys->pointcache->edit) && !psys->renderdata);
|
||||
return (scene_layer->basact &&
|
||||
(scene_layer->basact->object->mode & OB_MODE_PARTICLE_EDIT) &&
|
||||
psys == psys_get_current((scene_layer->basact)->object) &&
|
||||
(psys->edit || psys->pointcache->edit) &&
|
||||
!psys->renderdata);
|
||||
}
|
||||
|
||||
bool psys_check_enabled(Object *ob, ParticleSystem *psys, const bool use_render_params)
|
||||
{
|
||||
ParticleSystemModifierData *psmd;
|
||||
@ -2091,7 +2097,7 @@ static bool psys_thread_context_init_path(
|
||||
psys_thread_context_init(ctx, sim);
|
||||
|
||||
/*---start figuring out what is actually wanted---*/
|
||||
if (psys_in_edit_mode(scene, psys)) {
|
||||
if (psys_in_edit_mode(sim->eval_ctx->scene_layer, psys)) {
|
||||
ParticleEditSettings *pset = &scene->toolsettings->particle;
|
||||
|
||||
if ((psys->renderdata == 0 && use_render_params == 0) && (psys->edit == NULL || pset->flag & PE_DRAW_PART) == 0)
|
||||
@ -2180,7 +2186,7 @@ static void psys_thread_create_path(ParticleTask *task, struct ChildParticle *cp
|
||||
ParticleSystem *psys = ctx->sim.psys;
|
||||
ParticleSettings *part = psys->part;
|
||||
ParticleCacheKey **cache = psys->childcache;
|
||||
ParticleCacheKey **pcache = psys_in_edit_mode(ctx->sim.scene, psys) && psys->edit ? psys->edit->pathcache : psys->pathcache;
|
||||
ParticleCacheKey **pcache = psys_in_edit_mode(ctx->sim.eval_ctx->scene_layer, psys) && psys->edit ? psys->edit->pathcache : psys->pathcache;
|
||||
ParticleCacheKey *child, *key[4];
|
||||
ParticleTexture ptex;
|
||||
float *cpa_fuv = 0, *par_rot = 0, rot[4];
|
||||
@ -2589,7 +2595,7 @@ void psys_cache_paths(ParticleSimulationData *sim, float cfra, const bool use_re
|
||||
if ((psys->flag & PSYS_HAIR_DONE || psys->flag & PSYS_KEYED || psys->pointcache) == 0)
|
||||
return;
|
||||
|
||||
if (psys_in_edit_mode(sim->scene, psys))
|
||||
if (psys_in_edit_mode(sim->eval_ctx->scene_layer, psys))
|
||||
if (psys->renderdata == 0 && (psys->edit == NULL || pset->flag & PE_DRAW_PART) == 0)
|
||||
return;
|
||||
|
||||
@ -3772,7 +3778,7 @@ void psys_get_particle_on_path(ParticleSimulationData *sim, int p, ParticleKey *
|
||||
pind.bspline = (psys->part->flag & PART_HAIR_BSPLINE);
|
||||
/* pind.dm disabled in editmode means we don't get effectors taken into
|
||||
* account when subdividing for instance */
|
||||
pind.dm = psys_in_edit_mode(sim->scene, psys) ? NULL : psys->hair_out_dm;
|
||||
pind.dm = psys_in_edit_mode(sim->eval_ctx->scene_layer, psys) ? NULL : psys->hair_out_dm;
|
||||
init_particle_interpolation(sim->ob, psys, pa, &pind);
|
||||
do_particle_interpolation(psys, p, pa, t, &pind, state);
|
||||
|
||||
|
@ -90,6 +90,8 @@
|
||||
#include "BKE_scene.h"
|
||||
#include "BKE_bvhutils.h"
|
||||
|
||||
#include "DEG_depsgraph.h"
|
||||
|
||||
#include "PIL_time.h"
|
||||
|
||||
#include "RE_shader_ext.h"
|
||||
@ -2931,7 +2933,7 @@ static void psys_update_path_cache(ParticleSimulationData *sim, float cfra, cons
|
||||
skip = 1; /* draw visualization */
|
||||
else if (psys->pointcache->flag & PTCACHE_BAKING)
|
||||
skip = 1; /* no need to cache paths while baking dynamics */
|
||||
else if (psys_in_edit_mode(sim->scene, psys)) {
|
||||
else if (psys_in_edit_mode(sim->eval_ctx->scene_layer, psys)) {
|
||||
if ((pset->flag & PE_DRAW_PART)==0)
|
||||
skip = 1;
|
||||
else if (part->childtype==0 && (psys->flag & PSYS_HAIR_DYNAMICS && psys->pointcache->flag & PTCACHE_BAKED)==0)
|
||||
|
@ -579,7 +579,6 @@ void BKE_scene_free_ex(Scene *sce, const bool do_id_user)
|
||||
/* check all sequences */
|
||||
BKE_sequencer_clear_scene_in_allseqs(G.main, sce);
|
||||
|
||||
sce->basact = NULL;
|
||||
BKE_sequencer_editing_free(sce);
|
||||
|
||||
BKE_keyingsets_free(&sce->keyingsets);
|
||||
@ -1832,9 +1831,9 @@ bool BKE_scene_uses_blender_eevee(const Scene *scene)
|
||||
return BKE_viewrender_uses_blender_eevee(&scene->view_render);
|
||||
}
|
||||
|
||||
void BKE_scene_base_flag_to_objects(SceneLayer *sl)
|
||||
void BKE_scene_base_flag_to_objects(SceneLayer *scene_layer)
|
||||
{
|
||||
Base *base = sl->object_bases.first;
|
||||
Base *base = scene_layer->object_bases.first;
|
||||
|
||||
while (base) {
|
||||
BKE_scene_object_base_flag_sync_from_base(base);
|
||||
@ -1842,16 +1841,6 @@ void BKE_scene_base_flag_to_objects(SceneLayer *sl)
|
||||
}
|
||||
}
|
||||
|
||||
void BKE_scene_base_flag_sync_from_base(BaseLegacy *base)
|
||||
{
|
||||
BKE_scene_object_base_flag_sync_from_base(base);
|
||||
}
|
||||
|
||||
void BKE_scene_base_flag_sync_from_object(BaseLegacy *base)
|
||||
{
|
||||
BKE_scene_object_base_flag_sync_from_object(base);
|
||||
}
|
||||
|
||||
void BKE_scene_object_base_flag_sync_from_base(Base *base)
|
||||
{
|
||||
Object *ob = base->object;
|
||||
|
@ -10155,7 +10155,7 @@ static void give_base_to_objects(
|
||||
* but it will miss objects from non-instanciated groups... */
|
||||
if (base->flag & BASE_SELECTABLED) {
|
||||
base->flag |= BASE_SELECTED;
|
||||
BKE_scene_base_flag_sync_from_base(base);
|
||||
BKE_scene_object_base_flag_sync_from_base(base);
|
||||
}
|
||||
/* Do NOT make base active here! screws up GUI stuff, if you want it do it on src/ level. */
|
||||
}
|
||||
@ -10308,7 +10308,7 @@ static void link_object_postprocess(ID *id, Scene *scene, SceneLayer *scene_laye
|
||||
if (flag & FILE_AUTOSELECT) {
|
||||
if (base->flag & BASE_SELECTABLED) {
|
||||
base->flag |= BASE_SELECTED;
|
||||
BKE_scene_base_flag_sync_from_base(base);
|
||||
BKE_scene_object_base_flag_sync_from_base(base);
|
||||
}
|
||||
/* do NOT make base active here! screws up GUI stuff, if you want it do it on src/ level */
|
||||
}
|
||||
|
@ -403,7 +403,7 @@ int join_armature_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
|
||||
/* Free the old object data */
|
||||
ED_base_object_free_and_unlink(bmain, scene, base->object);
|
||||
ED_object_base_free_and_unlink(bmain, scene, base->object);
|
||||
}
|
||||
}
|
||||
CTX_DATA_END;
|
||||
|
@ -6123,7 +6123,7 @@ int join_curve_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
}
|
||||
|
||||
ED_base_object_free_and_unlink(bmain, scene, base->object);
|
||||
ED_object_base_free_and_unlink(bmain, scene, base->object);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1669,14 +1669,19 @@ void ED_gpencil_draw_view2d(const bContext *C, bool onlyv2d)
|
||||
/* draw grease-pencil sketches to specified 3d-view assuming that matrices are already set correctly
|
||||
* Note: this gets called twice - first time with only3d=true to draw 3d-strokes,
|
||||
* second time with only3d=false for screen-aligned strokes */
|
||||
void ED_gpencil_draw_view3d(wmWindowManager *wm, Scene *scene, View3D *v3d, ARegion *ar, bool only3d)
|
||||
void ED_gpencil_draw_view3d(wmWindowManager *wm,
|
||||
Scene *scene,
|
||||
SceneLayer *scene_layer,
|
||||
View3D *v3d,
|
||||
ARegion *ar,
|
||||
bool only3d)
|
||||
{
|
||||
int dflag = 0;
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
int offsx, offsy, winx, winy;
|
||||
|
||||
/* check that we have grease-pencil stuff to draw */
|
||||
bGPdata *gpd = ED_gpencil_data_get_active_v3d(scene, v3d);
|
||||
bGPdata *gpd = ED_gpencil_data_get_active_v3d(scene, scene_layer);
|
||||
if (gpd == NULL) return;
|
||||
|
||||
/* when rendering to the offscreen buffer we don't want to
|
||||
|
@ -204,15 +204,15 @@ bGPdata *ED_gpencil_data_get_active(const bContext *C)
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
// XXX: this should be removed... We really shouldn't duplicate logic like this!
|
||||
bGPdata *ED_gpencil_data_get_active_v3d(Scene *scene, View3D *v3d)
|
||||
bGPdata *ED_gpencil_data_get_active_v3d(Scene *scene, SceneLayer *scene_layer)
|
||||
{
|
||||
BaseLegacy *base = scene->basact;
|
||||
Base *base = scene_layer->basact;
|
||||
bGPdata *gpd = NULL;
|
||||
/* We have to make sure active object is actually visible and selected, else we must use default scene gpd,
|
||||
* to be consistent with ED_gpencil_data_get_active's behavior.
|
||||
*/
|
||||
|
||||
if (base && TESTBASE(v3d, base)) {
|
||||
if (base && TESTBASE_NEW(base)) {
|
||||
gpd = base->object->gpd;
|
||||
}
|
||||
return gpd ? gpd : scene->gpd;
|
||||
|
@ -48,6 +48,8 @@ struct bGPDpalettecolor;
|
||||
struct bAnimContext;
|
||||
struct KeyframeEditData;
|
||||
struct PointerRNA;
|
||||
struct Scene;
|
||||
struct SceneLayer;
|
||||
struct wmWindowManager;
|
||||
struct wmKeyConfig;
|
||||
|
||||
@ -113,7 +115,7 @@ struct bGPdata *ED_gpencil_data_get_active_direct(struct ID *screen_id, struct S
|
||||
struct ScrArea *sa, struct Object *ob);
|
||||
|
||||
/* 3D View */
|
||||
struct bGPdata *ED_gpencil_data_get_active_v3d(struct Scene *scene, struct View3D *v3d);
|
||||
struct bGPdata *ED_gpencil_data_get_active_v3d(struct Scene *scene, struct SceneLayer *scene_layer);
|
||||
|
||||
bool ED_gpencil_has_keyframe_v3d(struct Scene *scene, struct Object *ob, int cfra);
|
||||
|
||||
@ -147,7 +149,12 @@ void ED_gpencil_strokes_copybuf_free(void);
|
||||
|
||||
void ED_gpencil_draw_2dimage(const struct bContext *C);
|
||||
void ED_gpencil_draw_view2d(const struct bContext *C, bool onlyv2d);
|
||||
void ED_gpencil_draw_view3d(struct wmWindowManager *wm, struct Scene *scene, struct View3D *v3d, struct ARegion *ar, bool only3d);
|
||||
void ED_gpencil_draw_view3d(struct wmWindowManager *wm,
|
||||
struct Scene *scene,
|
||||
struct SceneLayer *scene_layer,
|
||||
struct View3D *v3d,
|
||||
struct ARegion *ar,
|
||||
bool only3d);
|
||||
void ED_gpencil_draw_ex(struct Scene *scene, struct bGPdata *gpd, int winx, int winy,
|
||||
const int cfra, const char spacetype);
|
||||
void ED_gp_draw_interpolation(struct tGPDinterpolate *tgpi, const int type);
|
||||
|
@ -105,18 +105,9 @@ void ED_keymap_proportional_maskmode(struct wmKeyConfig *keyconf, struct wmKeyMa
|
||||
void ED_keymap_proportional_editmode(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap,
|
||||
const bool do_connected);
|
||||
|
||||
/* send your own notifier for select! */
|
||||
void ED_base_object_select(struct BaseLegacy *base, short mode);
|
||||
/* includes notifier */
|
||||
void ED_base_object_activate(struct bContext *C, struct BaseLegacy *base);
|
||||
|
||||
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode);
|
||||
void ED_object_base_activate(struct bContext *C, struct Base *base);
|
||||
|
||||
void ED_base_object_free_and_unlink(struct Main *bmain, struct Scene *scene, struct Object *ob);
|
||||
|
||||
void ED_base_object_sync_from_base(struct BaseLegacy *base, struct Object *ob);
|
||||
void ED_base_object_sync_from_object(struct BaseLegacy *base, struct Object *ob);
|
||||
void ED_object_base_free_and_unlink(struct Main *bmain, struct Scene *scene, struct Object *ob);
|
||||
|
||||
/* single object duplicate, if (dupflag == 0), fully linked, else it uses the flags given */
|
||||
struct Base *ED_object_add_duplicate(struct Main *bmain, struct Scene *scene, struct SceneLayer *sl, struct Base *base, int dupflag);
|
||||
|
@ -526,7 +526,7 @@ int join_mesh_exec(bContext *C, wmOperator *op)
|
||||
|
||||
/* free base, now that data is merged */
|
||||
if (base->object != ob) {
|
||||
ED_base_object_free_and_unlink(bmain, scene, base->object);
|
||||
ED_object_base_free_and_unlink(bmain, scene, base->object);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1204,7 +1204,7 @@ static void object_delete_check_glsl_update(Object *ob)
|
||||
|
||||
/* remove base from a specific scene */
|
||||
/* note: now unlinks constraints as well */
|
||||
void ED_base_object_free_and_unlink(Main *bmain, Scene *scene, Object *ob)
|
||||
void ED_object_base_free_and_unlink(Main *bmain, Scene *scene, Object *ob)
|
||||
{
|
||||
if (BKE_library_ID_is_indirectly_used(bmain, ob) &&
|
||||
ID_REAL_USERS(ob) <= 1 && ID_EXTRA_USERS(ob) == 0)
|
||||
@ -1272,7 +1272,7 @@ static int object_delete_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
|
||||
/* remove from current scene only */
|
||||
ED_base_object_free_and_unlink(bmain, scene, ob);
|
||||
ED_object_base_free_and_unlink(bmain, scene, ob);
|
||||
changed = true;
|
||||
|
||||
if (use_global) {
|
||||
@ -1285,7 +1285,7 @@ static int object_delete_exec(bContext *C, wmOperator *op)
|
||||
ob->id.name + 2, scene_iter->id.name + 2);
|
||||
break;
|
||||
}
|
||||
ED_base_object_free_and_unlink(bmain, scene_iter, ob);
|
||||
ED_object_base_free_and_unlink(bmain, scene_iter, ob);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2013,7 +2013,7 @@ static int convert_exec(bContext *C, wmOperator *op)
|
||||
if (BKE_mball_is_basis(ob_mball) ||
|
||||
((ob_basis = BKE_mball_basis_find(scene, ob_mball)) && (ob_basis->flag & OB_DONE)))
|
||||
{
|
||||
ED_base_object_free_and_unlink(bmain, scene, ob_mball);
|
||||
ED_object_base_free_and_unlink(bmain, scene, ob_mball);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -89,44 +89,6 @@
|
||||
/* Note: send a NC_SCENE|ND_OB_SELECT notifier yourself! (or
|
||||
* or a NC_SCENE|ND_OB_VISIBLE in case of visibility toggling */
|
||||
|
||||
void ED_base_object_select(BaseLegacy *base, short mode)
|
||||
{
|
||||
if (base) {
|
||||
if (mode == BA_SELECT) {
|
||||
if (!(base->object->restrictflag & OB_RESTRICT_SELECT))
|
||||
base->flag_legacy |= SELECT;
|
||||
}
|
||||
else if (mode == BA_DESELECT) {
|
||||
base->flag_legacy &= ~SELECT;
|
||||
}
|
||||
BKE_scene_base_flag_sync_from_base(base);
|
||||
}
|
||||
}
|
||||
|
||||
/* also to set active NULL */
|
||||
void ED_base_object_activate(bContext *C, BaseLegacy *base)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
||||
/* sets scene->basact */
|
||||
BASACT = base;
|
||||
|
||||
if (base) {
|
||||
#ifdef USE_WORKSPACE_MODE
|
||||
WorkSpace *workspace = CTX_wm_workspace(C);
|
||||
|
||||
BKE_workspace_object_mode_set(workspace, base->object->mode);
|
||||
#endif
|
||||
|
||||
/* XXX old signals, remember to handle notifiers now! */
|
||||
// select_actionchannel_by_name(base->object->action, "Object", 1);
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene);
|
||||
}
|
||||
else
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, NULL);
|
||||
}
|
||||
|
||||
void ED_object_base_select(Base *base, eObjectSelect_Mode mode)
|
||||
{
|
||||
if (mode == BA_INVERT) {
|
||||
@ -147,16 +109,24 @@ void ED_object_base_select(Base *base, eObjectSelect_Mode mode)
|
||||
/* Never happens. */
|
||||
break;
|
||||
}
|
||||
BKE_scene_object_base_flag_sync_from_base(base);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change active base, it includes the notifier
|
||||
*/
|
||||
void ED_object_base_activate(bContext *C, Base *base)
|
||||
{
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
sl->basact = base;
|
||||
SceneLayer *scene_layer = CTX_data_scene_layer(C);
|
||||
scene_layer->basact = base;
|
||||
|
||||
if (base) {
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, sl);
|
||||
#ifdef USE_WORKSPACE_MODE
|
||||
WorkSpace *workspace = CTX_wm_workspace(C);
|
||||
BKE_workspace_object_mode_set(workspace, base->object->mode);
|
||||
#endif
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene_layer);
|
||||
}
|
||||
else {
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, NULL);
|
||||
@ -659,7 +629,7 @@ static bool select_grouped_object_hooks(bContext *C, Object *ob)
|
||||
if (hmd->object && !(hmd->object->flag & SELECT)) {
|
||||
base = BKE_scene_layer_base_find(sl, hmd->object);
|
||||
if (base && (BASE_SELECTABLE_NEW(base))) {
|
||||
ED_base_object_select(base, BA_SELECT);
|
||||
ED_object_base_select(base, BA_SELECT);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
@ -54,6 +54,7 @@
|
||||
#include "DNA_linestyle_types.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_layer.h"
|
||||
#include "BKE_linestyle.h"
|
||||
#include "BKE_material.h"
|
||||
#include "BKE_modifier.h"
|
||||
@ -324,6 +325,7 @@ static void buttons_texture_users_from_context(ListBase *users, const bContext *
|
||||
Material *ma = NULL;
|
||||
Lamp *la = NULL;
|
||||
World *wrld = NULL;
|
||||
WorkSpace *workspace = NULL;
|
||||
FreestyleLineStyle *linestyle = NULL;
|
||||
Brush *brush = NULL;
|
||||
ID *pinid = sbuts->pinid;
|
||||
@ -345,17 +347,25 @@ static void buttons_texture_users_from_context(ListBase *users, const bContext *
|
||||
brush = (Brush *)pinid;
|
||||
else if (GS(pinid->name) == ID_LS)
|
||||
linestyle = (FreestyleLineStyle *)pinid;
|
||||
else if (GS(pinid->name) == ID_WS)
|
||||
workspace = (WorkSpace *)workspace;
|
||||
}
|
||||
|
||||
if (!scene)
|
||||
scene = CTX_data_scene(C);
|
||||
|
||||
if (!pinid || GS(pinid->name) == ID_SCE) {
|
||||
ob = (scene->basact) ? scene->basact->object : NULL;
|
||||
wrld = scene->world;
|
||||
brush = BKE_paint_brush(BKE_paint_get_active_from_context(C));
|
||||
linestyle = BKE_linestyle_active_from_scene(scene);
|
||||
}
|
||||
else if (!pinid || GS(pinid->name) == ID_WS) {
|
||||
if (!workspace) {
|
||||
workspace = CTX_wm_workspace(C);
|
||||
}
|
||||
SceneLayer *scene_layer = BKE_scene_layer_from_workspace_get(scene, workspace);
|
||||
ob = OBACT_NEW(scene_layer);
|
||||
}
|
||||
|
||||
if (ob && ob->type == OB_LAMP && !la)
|
||||
la = ob->data;
|
||||
|
@ -424,7 +424,7 @@ static void object_delete_cb(
|
||||
if (scene->obedit == ob)
|
||||
ED_object_editmode_exit(C, EM_FREEDATA | EM_FREEUNDO | EM_WAITCURSOR | EM_DO_UNDO);
|
||||
|
||||
ED_base_object_free_and_unlink(CTX_data_main(C), scene, ob);
|
||||
ED_object_base_free_and_unlink(CTX_data_main(C), scene, ob);
|
||||
/* leave for ED_outliner_id_unref to handle */
|
||||
#if 0
|
||||
te->directdata = NULL;
|
||||
@ -928,7 +928,7 @@ static Base *outline_delete_hierarchy(bContext *C, ReportList *reports, Scene *s
|
||||
base->object->id.name + 2, scene->id.name + 2);
|
||||
return base_next;
|
||||
}
|
||||
ED_base_object_free_and_unlink(CTX_data_main(C), scene, base->object);
|
||||
ED_object_base_free_and_unlink(CTX_data_main(C), scene, base->object);
|
||||
return base_next;
|
||||
}
|
||||
|
||||
|
@ -5941,7 +5941,7 @@ static void draw_new_particle_system(
|
||||
if (pars == NULL) return;
|
||||
|
||||
/* don't draw normal paths in edit mode */
|
||||
if (psys_in_edit_mode(scene, psys) && (pset->flag & PE_DRAW_PART) == 0)
|
||||
if (psys_in_edit_mode(eval_ctx->scene_layer, psys) && (pset->flag & PE_DRAW_PART) == 0)
|
||||
return;
|
||||
|
||||
if (part->draw_as == PART_DRAW_REND)
|
||||
|
@ -2048,7 +2048,7 @@ void ED_view3d_draw_offscreen(
|
||||
|
||||
if (v3d->flag2 & V3D_SHOW_GPENCIL) {
|
||||
/* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */
|
||||
ED_gpencil_draw_view3d(NULL, scene, v3d, ar, false);
|
||||
ED_gpencil_draw_view3d(NULL, scene, scene_layer, v3d, ar, false);
|
||||
}
|
||||
|
||||
/* freeing the images again here could be done after the operator runs, leaving for now */
|
||||
|
@ -1182,7 +1182,7 @@ void ED_view3d_draw_depth_gpencil(
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
if (v3d->flag2 & V3D_SHOW_GPENCIL) {
|
||||
ED_gpencil_draw_view3d(NULL, scene, v3d, ar, true);
|
||||
ED_gpencil_draw_view3d(NULL, scene, eval_ctx->scene_layer, v3d, ar, true);
|
||||
}
|
||||
|
||||
v3d->zbuf = zbuf;
|
||||
@ -1502,7 +1502,7 @@ static void view3d_draw_objects(
|
||||
const char **grid_unit,
|
||||
const bool do_bgpic, const bool draw_offscreen, GPUFX *fx)
|
||||
{
|
||||
SceneLayer *sl = C ? CTX_data_scene_layer(C) : BKE_scene_layer_from_scene_get(scene);
|
||||
SceneLayer *scene_layer = C ? CTX_data_scene_layer(C) : BKE_scene_layer_from_scene_get(scene);
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
Base *base;
|
||||
const bool do_camera_frame = !draw_offscreen;
|
||||
@ -1561,10 +1561,10 @@ static void view3d_draw_objects(
|
||||
for (SETLOOPER(scene->set, sce_iter, base)) {
|
||||
if ((base->flag & BASE_VISIBLED) != 0) {
|
||||
UI_ThemeColorBlend(TH_WIRE, TH_BACK, 0.6f);
|
||||
draw_object(eval_ctx, scene, sl, ar, v3d, base, dflag);
|
||||
draw_object(eval_ctx, scene, scene_layer, ar, v3d, base, dflag);
|
||||
|
||||
if (base->object->transflag & OB_DUPLI) {
|
||||
draw_dupli_objects_color(eval_ctx, scene, sl, ar, v3d, base, dflag, TH_UNDEFINED);
|
||||
draw_dupli_objects_color(eval_ctx, scene, scene_layer, ar, v3d, base, dflag, TH_UNDEFINED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1573,14 +1573,14 @@ static void view3d_draw_objects(
|
||||
}
|
||||
|
||||
if (draw_offscreen) {
|
||||
for (base = sl->object_bases.first; base; base = base->next) {
|
||||
for (base = scene_layer->object_bases.first; base; base = base->next) {
|
||||
if ((base->flag & BASE_VISIBLED) != 0) {
|
||||
/* dupli drawing */
|
||||
if (base->object->transflag & OB_DUPLI) {
|
||||
draw_dupli_objects(eval_ctx, scene, sl, ar, v3d, base);
|
||||
draw_dupli_objects(eval_ctx, scene, scene_layer, ar, v3d, base);
|
||||
}
|
||||
|
||||
draw_object(eval_ctx, scene, sl, ar, v3d, base, 0);
|
||||
draw_object(eval_ctx, scene, scene_layer, ar, v3d, base, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1588,18 +1588,18 @@ static void view3d_draw_objects(
|
||||
unsigned int lay_used = 0;
|
||||
|
||||
/* then draw not selected and the duplis, but skip editmode object */
|
||||
for (base = sl->object_bases.first; base; base = base->next) {
|
||||
for (base = scene_layer->object_bases.first; base; base = base->next) {
|
||||
lay_used |= base->lay;
|
||||
|
||||
if ((base->flag & BASE_VISIBLED) != 0) {
|
||||
|
||||
/* dupli drawing */
|
||||
if (base->object->transflag & OB_DUPLI) {
|
||||
draw_dupli_objects(eval_ctx, scene, sl, ar, v3d, base);
|
||||
draw_dupli_objects(eval_ctx, scene, scene_layer, ar, v3d, base);
|
||||
}
|
||||
if ((base->flag & BASE_SELECTED) == 0) {
|
||||
if (base->object != scene->obedit)
|
||||
draw_object(eval_ctx, scene, sl, ar, v3d, base, 0);
|
||||
draw_object(eval_ctx, scene, scene_layer, ar, v3d, base, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1608,10 +1608,10 @@ static void view3d_draw_objects(
|
||||
v3d->lay_used = lay_used & ((1 << 20) - 1);
|
||||
|
||||
/* draw selected and editmode */
|
||||
for (base = sl->object_bases.first; base; base = base->next) {
|
||||
for (base = scene_layer->object_bases.first; base; base = base->next) {
|
||||
if ((base->flag & BASE_VISIBLED) != 0) {
|
||||
if (base->object == scene->obedit || (base->flag & BASE_SELECTED)) {
|
||||
draw_object(eval_ctx, scene, sl, ar, v3d, base, 0);
|
||||
draw_object(eval_ctx, scene, scene_layer, ar, v3d, base, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1628,12 +1628,12 @@ static void view3d_draw_objects(
|
||||
|
||||
/* must be before xray draw which clears the depth buffer */
|
||||
if (v3d->zbuf) glDisable(GL_DEPTH_TEST);
|
||||
ED_gpencil_draw_view3d(wm, scene, v3d, ar, true);
|
||||
ED_gpencil_draw_view3d(wm, scene, scene_layer, v3d, ar, true);
|
||||
if (v3d->zbuf) glEnable(GL_DEPTH_TEST);
|
||||
}
|
||||
|
||||
/* transp and X-ray afterdraw stuff */
|
||||
if (v3d->afterdraw_transp.first) view3d_draw_transp(eval_ctx, scene, sl, ar, v3d);
|
||||
if (v3d->afterdraw_transp.first) view3d_draw_transp(eval_ctx, scene, scene_layer, ar, v3d);
|
||||
|
||||
/* always do that here to cleanup depth buffers if none needed */
|
||||
if (fx) {
|
||||
@ -1641,8 +1641,8 @@ static void view3d_draw_objects(
|
||||
GPU_fx_compositor_setup_XRay_pass(fx, do_composite_xray);
|
||||
}
|
||||
|
||||
if (v3d->afterdraw_xray.first) view3d_draw_xray(eval_ctx, scene, sl, ar, v3d, &xrayclear);
|
||||
if (v3d->afterdraw_xraytransp.first) view3d_draw_xraytransp(eval_ctx, scene, sl, ar, v3d, xrayclear);
|
||||
if (v3d->afterdraw_xray.first) view3d_draw_xray(eval_ctx, scene, scene_layer, ar, v3d, &xrayclear);
|
||||
if (v3d->afterdraw_xraytransp.first) view3d_draw_xraytransp(eval_ctx, scene, scene_layer, ar, v3d, xrayclear);
|
||||
|
||||
if (fx && do_composite_xray) {
|
||||
GPU_fx_compositor_XRay_resolve(fx);
|
||||
@ -2041,7 +2041,7 @@ static void view3d_main_region_draw_info(const bContext *C, Scene *scene,
|
||||
ARegion *ar, View3D *v3d,
|
||||
const char *grid_unit, bool render_border)
|
||||
{
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
SceneLayer *scene_layer = CTX_data_scene_layer(C);
|
||||
wmWindowManager *wm = CTX_wm_manager(C);
|
||||
RegionView3D *rv3d = ar->regiondata;
|
||||
rcti rect;
|
||||
@ -2058,11 +2058,11 @@ static void view3d_main_region_draw_info(const bContext *C, Scene *scene,
|
||||
|
||||
if (v3d->flag2 & V3D_SHOW_GPENCIL) {
|
||||
/* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */
|
||||
ED_gpencil_draw_view3d(wm, scene, v3d, ar, false);
|
||||
ED_gpencil_draw_view3d(wm, scene, scene_layer, v3d, ar, false);
|
||||
}
|
||||
|
||||
if ((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) {
|
||||
VP_legacy_drawcursor(scene, sl, ar, v3d); /* 3D cursor */
|
||||
VP_legacy_drawcursor(scene, scene_layer, ar, v3d); /* 3D cursor */
|
||||
|
||||
if (U.uiflag & USER_SHOW_ROTVIEWICON)
|
||||
VP_legacy_draw_view_axis(rv3d, &rect);
|
||||
@ -2070,7 +2070,7 @@ static void view3d_main_region_draw_info(const bContext *C, Scene *scene,
|
||||
draw_view_icon(rv3d, &rect);
|
||||
|
||||
if (U.uiflag & USER_DRAWVIEWINFO) {
|
||||
Object *ob = OBACT_NEW(sl);
|
||||
Object *ob = OBACT_NEW(scene_layer);
|
||||
VP_legacy_draw_selected_name(scene, ob, &rect);
|
||||
}
|
||||
}
|
||||
|
@ -1551,7 +1551,7 @@ static bool ed_object_select_pick(
|
||||
/* we make the armature selected:
|
||||
* not-selected active object in posemode won't work well for tools */
|
||||
basact->flag |= BASE_SELECTED;
|
||||
BKE_scene_base_flag_sync_from_base(basact);
|
||||
BKE_scene_object_base_flag_sync_from_base(basact);
|
||||
|
||||
retval = true;
|
||||
WM_event_add_notifier(C, NC_OBJECT | ND_BONE_SELECT, basact->object);
|
||||
|
@ -1615,7 +1615,7 @@ typedef struct Scene {
|
||||
struct Scene *set;
|
||||
|
||||
ListBase base DNA_DEPRECATED;
|
||||
struct BaseLegacy *basact; /* active base */
|
||||
struct Base *basact DNA_DEPRECATED; /* active base */
|
||||
struct Object *obedit; /* name replaces old G.obedit */
|
||||
|
||||
float cursor[3]; /* 3d cursor location */
|
||||
@ -1911,12 +1911,7 @@ extern const char *RE_engine_id_CYCLES;
|
||||
#define MINAFRAME -1048574
|
||||
#define MINAFRAMEF -1048574.0f
|
||||
|
||||
/* depricate this! */
|
||||
#define TESTBASE(v3d, base) ( \
|
||||
((base)->flag_legacy & SELECT) && \
|
||||
((base)->lay & v3d->lay) && \
|
||||
(((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0))
|
||||
|
||||
/* deprecate this! */
|
||||
#define TESTBASE_NEW(base) ( \
|
||||
(((base)->flag & BASE_SELECTED) != 0) && \
|
||||
(((base)->flag & BASE_VISIBLED) != 0))
|
||||
@ -1936,11 +1931,6 @@ extern const char *RE_engine_id_CYCLES;
|
||||
#define BASE_VISIBLE_NEW(base) ( \
|
||||
((base)->flag & BASE_VISIBLED) != 0)
|
||||
|
||||
#define FIRSTBASE scene->base.first
|
||||
#define LASTBASE scene->base.last
|
||||
#define BASACT (scene->basact)
|
||||
#define OBACT (BASACT ? BASACT->object: NULL)
|
||||
|
||||
#define FIRSTBASE_NEW(_sl) ((_sl)->object_bases.first)
|
||||
#define LASTBASE_NEW(_sl) ((_sl)->object_bases.last)
|
||||
#define BASACT_NEW(_sl) ((_sl)->basact)
|
||||
|
@ -2047,7 +2047,7 @@ static void rna_def_layer_objects(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
RNA_def_property_pointer_funcs(prop, "rna_LayerObjects_active_object_get", "rna_LayerObjects_active_object_set", NULL, NULL);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_NEVER_UNLINK);
|
||||
RNA_def_property_ui_text(prop, "Active Object", "Active object for this layer");
|
||||
/* Could call: ED_base_object_activate(C, rl->basact);
|
||||
/* Could call: ED_object_base_activate(C, rl->basact);
|
||||
* but would be a bad level call and it seems the notifier is enough */
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_OB_ACTIVE, NULL);
|
||||
|
||||
|
@ -550,7 +550,6 @@ void ED_screen_animation_timer_update(struct bScreen *screen, int redraws, int r
|
||||
struct bScreen *ED_screen_animation_playing(const struct wmWindowManager *wm) RET_NULL
|
||||
struct Scene *ED_screen_scene_find(const struct bScreen *screen, const struct wmWindowManager *wm) RET_NULL
|
||||
bool ED_scene_render_layer_delete(struct Main *bmain, Scene *scene, SceneLayer *layer, ReportList *reports) RET_ZERO
|
||||
void ED_base_object_select(struct BaseLegacy *base, short mode) RET_NONE
|
||||
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode) RET_NONE
|
||||
bool ED_object_modifier_remove(struct ReportList *reports, struct Main *bmain, struct Object *ob, struct ModifierData *md) RET_ZERO
|
||||
struct ModifierData *ED_object_modifier_add(struct ReportList *reports, struct Main *bmain, struct Scene *scene, struct Object *ob, const char *name, int type) RET_ZERO
|
||||
@ -572,7 +571,7 @@ void uiLayoutSetAlignment(uiLayout *layout, char alignment) RET_NONE
|
||||
void uiLayoutSetScaleX(struct uiLayout *layout, float scale) RET_NONE
|
||||
void uiLayoutSetScaleY(struct uiLayout *layout, float scale) RET_NONE
|
||||
void uiTemplateIconView(struct uiLayout *layout, struct PointerRNA *ptr, const char *propname, int show_labels, float icon_scale) RET_NONE
|
||||
void ED_base_object_free_and_unlink(struct Main *bmain, struct Scene *scene, struct Object *base) RET_NONE
|
||||
void ED_object_base_free_and_unlink(struct Main *bmain, struct Scene *scene, struct Object *base) RET_NONE
|
||||
void ED_mesh_update(struct Mesh *mesh, struct bContext *C, int calc_edges, int calc_tessface) RET_NONE
|
||||
void ED_mesh_vertices_add(struct Mesh *mesh, struct ReportList *reports, int count) RET_NONE
|
||||
void ED_mesh_edges_add(struct Mesh *mesh, struct ReportList *reports, int count) RET_NONE
|
||||
|
@ -1740,7 +1740,7 @@ static void blenderSceneSetBackground(Scene *blenderscene)
|
||||
|
||||
for (SETLOOPER(blenderscene, it, base)) {
|
||||
base->object->lay = base->lay;
|
||||
BKE_scene_base_flag_sync_from_base(base);
|
||||
BKE_scene_object_base_flag_sync_from_base(base);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user