[Bf-blender-cvs] [4c6789b] temp_localview_split: Initial commit for splitting off local-view data from layer visibility
Julian Eisel
noreply at git.blender.org
Tue Jul 26 23:42:32 CEST 2016
Commit: 4c6789b2371a681cd40feac74f5b623bcf721593
Author: Julian Eisel
Date: Tue Jul 26 23:35:25 2016 +0200
Branches: temp_localview_split
https://developer.blender.org/rB4c6789b2371a681cd40feac74f5b623bcf721593
Initial commit for splitting off local-view data from layer visibility
Mostly replacing ugly nested View3D and RegionView3D pointers for now. Actual bitfield splitting comes next.
===================================================================
M source/blender/blenkernel/intern/screen.c
M source/blender/blenloader/intern/readfile.c
M source/blender/blenloader/intern/writefile.c
M source/blender/editors/mesh/editmesh_tools.c
M source/blender/editors/object/object_add.c
M source/blender/editors/object/object_relations.c
M source/blender/editors/render/render_internal.c
M source/blender/editors/screen/screen_ops.c
M source/blender/editors/space_view3d/space_view3d.c
M source/blender/editors/space_view3d/view3d_draw.c
M source/blender/editors/space_view3d/view3d_edit.c
M source/blender/editors/space_view3d/view3d_header.c
M source/blender/editors/space_view3d/view3d_view.c
M source/blender/makesdna/DNA_object_types.h
M source/blender/makesdna/DNA_view3d_types.h
===================================================================
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index 857bd54..5166123 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -511,7 +511,7 @@ ScrArea *BKE_screen_find_area_xy(bScreen *sc, const int spacetype, int x, int y)
unsigned int BKE_screen_view3d_layer_active_ex(const View3D *v3d, const Scene *scene, bool use_localvd)
{
unsigned int lay;
- if ((v3d == NULL) || (v3d->scenelock && !v3d->localvd)) {
+ if ((v3d == NULL) || (v3d->scenelock && !v3d->localviewd)) {
lay = scene->layact;
}
else {
@@ -519,7 +519,7 @@ unsigned int BKE_screen_view3d_layer_active_ex(const View3D *v3d, const Scene *s
}
if (use_localvd) {
- if (v3d && v3d->localvd) {
+ if (v3d && v3d->localviewd) {
lay |= v3d->lay;
}
}
@@ -552,7 +552,7 @@ void BKE_screen_view3d_sync(View3D *v3d, struct Scene *scene)
{
int bit;
- if (v3d->scenelock && v3d->localvd == NULL) {
+ if (v3d->scenelock && v3d->localviewd == NULL) {
v3d->lay = scene->lay;
v3d->camera = scene->camera;
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 4ef30fe..f538087 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6245,8 +6245,8 @@ static void lib_link_screen(FileData *fd, Main *main)
bgpic->ima = newlibadr_us(fd, sc->id.lib, bgpic->ima);
bgpic->clip = newlibadr_us(fd, sc->id.lib, bgpic->clip);
}
- if (v3d->localvd) {
- v3d->localvd->camera = newlibadr(fd, sc->id.lib, v3d->localvd->camera);
+ if (v3d->localviewd) {
+ v3d->localviewd->camera = newlibadr(fd, sc->id.lib, v3d->localviewd->camera);
}
}
else if (sl->spacetype == SPACE_IPO) {
@@ -6562,11 +6562,11 @@ void blo_lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *cursc
id_us_plus((ID *)bgpic->clip);
}
}
- if (v3d->localvd) {
+ if (v3d->localviewd) {
/*Base *base;*/
-
- v3d->localvd->camera = sc->scene->camera;
-
+
+ v3d->localviewd->camera = sc->scene->camera;
+
/* localview can become invalid during undo/redo steps, so we exit it when no could be found */
#if 0 /* XXX regionlocalview ? */
for (base= sc->scene->base.first; base; base= base->next) {
@@ -6829,7 +6829,7 @@ static void direct_link_region(FileData *fd, ARegion *ar, int spacetype)
if (spacetype == SPACE_VIEW3D) {
RegionView3D *rv3d = ar->regiondata;
- rv3d->localvd = newdataadr(fd, rv3d->localvd);
+ rv3d->localviewd = newdataadr(fd, rv3d->localviewd);
rv3d->clipbb = newdataadr(fd, rv3d->clipbb);
rv3d->depths = NULL;
@@ -6984,7 +6984,7 @@ static bool direct_link_screen(FileData *fd, bScreen *sc)
v3d->gpd = newdataadr(fd, v3d->gpd);
direct_link_gpencil(fd, v3d->gpd);
}
- v3d->localvd = newdataadr(fd, v3d->localvd);
+ v3d->localviewd = newdataadr(fd, v3d->localviewd);
BLI_listbase_clear(&v3d->afterdraw_transp);
BLI_listbase_clear(&v3d->afterdraw_xray);
BLI_listbase_clear(&v3d->afterdraw_xraytransp);
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 88f1c4d..ec342ee 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -2898,8 +2898,8 @@ static void write_region(WriteData *wd, ARegion *ar, int spacetype)
RegionView3D *rv3d = ar->regiondata;
writestruct(wd, DATA, RegionView3D, 1, rv3d);
- if (rv3d->localvd) {
- writestruct(wd, DATA, RegionView3D, 1, rv3d->localvd);
+ if (rv3d->localviewd) {
+ writestruct(wd, DATA, LocalViewRegionData, 1, rv3d->localviewd);
}
if (rv3d->clipbb) {
writestruct(wd, DATA, BoundBox, 1, rv3d->clipbb);
@@ -3034,8 +3034,8 @@ static void write_screens(WriteData *wd, ListBase *scrbase)
for (bgpic = v3d->bgpicbase.first; bgpic; bgpic = bgpic->next) {
writestruct(wd, DATA, BGpic, 1, bgpic);
}
- if (v3d->localvd) {
- writestruct(wd, DATA, View3D, 1, v3d->localvd);
+ if (v3d->localviewd) {
+ writestruct(wd, DATA, LocalViewAreaData, 1, v3d->localviewd); /* TODO */
}
if (v3d->fx_settings.ssao) {
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index 3a7a8fb..c27d540 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -4705,7 +4705,7 @@ static void sort_bmelem_flag(Scene *scene, Object *ob,
float mat[4][4];
float fact = reverse ? -1.0 : 1.0;
- if (v3d && v3d->localvd)
+ if (v3d && v3d->localviewd)
copy_v3_v3(cur, v3d->cursor);
else
copy_v3_v3(cur, scene->cursor);
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index cc62821..98a69a2 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -344,7 +344,7 @@ bool ED_object_add_generic_get_opts(bContext *C, wmOperator *op, const char view
/* in local view we additionally add local view layers,
* not part of operator properties */
- if (v3d && v3d->localvd)
+ if (v3d && v3d->localviewd)
*layer |= v3d->lay;
}
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 6b16e19..b283916 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -1337,7 +1337,7 @@ static unsigned int move_to_layer_init(bContext *C, wmOperator *op)
static int move_to_layer_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
View3D *v3d = CTX_wm_view3d(C);
- if (v3d && v3d->localvd) {
+ if (v3d && v3d->localviewd) {
return WM_operator_confirm_message(C, op, "Move out of Local View");
}
else {
@@ -1359,7 +1359,7 @@ static int move_to_layer_exec(bContext *C, wmOperator *op)
if (lay == 0) return OPERATOR_CANCELLED;
- if (v3d && v3d->localvd) {
+ if (v3d && v3d->localviewd) {
/* now we can move out of localview. */
/* note: layers are set in bases, library objects work for this */
CTX_DATA_BEGIN (C, Base *, base, selected_bases)
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index 1203889..91414aa 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -921,8 +921,8 @@ static int screen_render_invoke(bContext *C, wmOperator *op, const wmEvent *even
else if (camera_override && camera_override != scene->camera)
rj->v3d_override = true;
- if (v3d->localvd)
- rj->lay_override |= v3d->localvd->lay;
+// if (v3d->localviewd)
+// rj->lay_override |= v3d->localvd->lay; /* TODO */
}
/* Lock the user interface depending on render settings. */
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 6dbb5db..636be2f 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -2995,10 +2995,10 @@ static void SCREEN_OT_redo_last(wmOperatorType *ot)
static void view3d_localview_update_rv3d(struct RegionView3D *rv3d)
{
- if (rv3d->localvd) {
- rv3d->localvd->view = rv3d->view;
- rv3d->localvd->persp = rv3d->persp;
- copy_qt_qt(rv3d->localvd->viewquat, rv3d->viewquat);
+ if (rv3d->localviewd) {
+ rv3d->localviewd->view = rv3d->view;
+ rv3d->localviewd->persp = rv3d->persp;
+ copy_qt_qt(rv3d->localviewd->viewquat, rv3d->viewquat);
}
}
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 96dda65..b934ea4 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -416,7 +416,8 @@ static void view3d_free(SpaceLink *sl)
}
BLI_freelistN(&vd->bgpicbase);
- if (vd->localvd) MEM_freeN(vd->localvd);
+ if (vd->localviewd)
+ MEM_freeN(vd->localviewd);
if (vd->properties_storage) MEM_freeN(vd->properties_storage);
@@ -449,10 +450,9 @@ static SpaceLink *view3d_duplicate(SpaceLink *sl)
/* clear or remove stuff from old */
- if (v3dn->localvd) {
- v3dn->localvd = NULL;
+ if (v3dn->localviewd) {
+ v3dn->localviewd = NULL;
v3dn->properties_storage = NULL;
- v3dn->lay = v3do->localvd->lay & 0xFFFFFF;
}
if (v3dn->drawtype == OB_RENDER)
@@ -720,8 +720,10 @@ static void view3d_main_region_free(ARegion *ar)
RegionView3D *rv3d = ar->regiondata;
if (rv3d) {
- if (rv3d->localvd) MEM_freeN(rv3d->localvd);
- if (rv3d->clipbb) MEM_freeN(rv3d->clipbb);
+ if (rv3d->localviewd)
+ MEM_freeN(rv3d->localviewd);
+ if (rv3d->clipbb)
+ MEM_freeN(rv3d->clipbb);
if (rv3d->render_engine)
RE_engine_free(rv3d->render_engine);
@@ -752,8 +754,8 @@ static void *view3d_main_region_duplicate(void *poin)
RegionView3D *rv3d = poin, *new;
new = MEM_dupallocN(rv3d);
- if (rv3d->localvd)
- new->localvd = MEM_dupallocN(rv3d->localvd);
+ if (rv3d->localviewd)
+ new->localviewd = MEM_dupallocN(rv3d->localviewd);
if (rv3d->clipbb)
new->clipbb = MEM_dupallocN(rv3d->clipbb);
@@ -1402,61 +1404,60 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes
static void view3d_id_remap(ScrArea *sa, SpaceLink *slink, ID *old_id, ID *new_id)
{
- View3D *v3d;
- ARegion *ar;
- bool is_local = false;
+ View3D *v3d = (View3D *)slink;
+ bool has_localview = v3d->localviewd != NULL;
if (!ELEM(GS(old_id->name), ID_OB, ID_MA, ID_IM, ID_MC)) {
return;
}
- for (v3d = (View3D *)slink; v3d; v3d = v3d->localvd, is_local = true) {
- if ((ID *)v3d->camera == old_id) {
- v3d->camera = (Object *)new_id;
- if (!new_id) {
- for (ar = sa->regionbase.first; ar; ar = ar->next) {
- if (ar->regiontype == RGN_TYPE_WINDOW) {
- RegionView3D *rv3d = is_local ? ((RegionView3D *)ar->regiondata)->localvd : ar->regiondata;
- if (rv3d && (rv3d->persp == RV3D_CAMOB)) {
- rv3d->persp = RV3D_PERSP;
+ if ((ID *)v3d->camera == old_id) {
+ v3d->ca
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list