2.5: more G.main changes.
This commit is contained in:
parent
5fa7d1c1b4
commit
f3cca3e192
@ -31,16 +31,16 @@
|
||||
#ifndef BKE_SCENE_H
|
||||
#define BKE_SCENE_H
|
||||
|
||||
struct bglMats;
|
||||
struct Scene;
|
||||
struct Object;
|
||||
struct Base;
|
||||
struct Text;
|
||||
struct AviCodecData;
|
||||
struct Base;
|
||||
struct bglMats;
|
||||
struct Main;
|
||||
struct Object;
|
||||
struct QuicktimeCodecData;
|
||||
struct RenderData;
|
||||
struct Scene;
|
||||
struct Text;
|
||||
struct Text;
|
||||
struct Main;
|
||||
|
||||
#define SCE_COPY_EMPTY 0
|
||||
#define SCE_COPY_LINK_OB 1
|
||||
@ -57,8 +57,8 @@ void free_scene(struct Scene *sce);
|
||||
struct Scene *add_scene(char *name);
|
||||
struct Base *object_in_scene(struct Object *ob, struct Scene *sce);
|
||||
|
||||
void set_scene_bg(struct Scene *sce);
|
||||
struct Scene *set_scene_name(char *name);
|
||||
void set_scene_bg(struct Main *bmain, struct Scene *sce);
|
||||
struct Scene *set_scene_name(struct Main *bmain, char *name);
|
||||
|
||||
struct Scene *copy_scene(struct Main *bmain, struct Scene *sce, int type);
|
||||
void unlink_scene(struct Main *bmain, struct Scene *sce, struct Scene *newsce);
|
||||
@ -78,7 +78,7 @@ void scene_deselect_all(struct Scene *sce);
|
||||
void scene_select_base(struct Scene *sce, struct Base *selbase);
|
||||
|
||||
/* checks for cycle, returns 1 if it's all OK */
|
||||
int scene_check_setscene(struct Scene *sce);
|
||||
int scene_check_setscene(struct Main *bmain, struct Scene *sce);
|
||||
|
||||
float BKE_curframe(struct Scene *scene);
|
||||
|
||||
|
@ -313,7 +313,7 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, char *filename)
|
||||
BLI_strncpy(G.main->name, filename, FILE_MAX); /* is guaranteed current file */
|
||||
|
||||
/* baseflags, groups, make depsgraph, etc */
|
||||
set_scene_bg(CTX_data_scene(C));
|
||||
set_scene_bg(G.main, CTX_data_scene(C));
|
||||
|
||||
MEM_freeN(bfd);
|
||||
}
|
||||
|
@ -501,7 +501,7 @@ Base *object_in_scene(Object *ob, Scene *sce)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void set_scene_bg(Scene *scene)
|
||||
void set_scene_bg(Main *bmain, Scene *scene)
|
||||
{
|
||||
Scene *sce;
|
||||
Base *base;
|
||||
@ -511,18 +511,18 @@ void set_scene_bg(Scene *scene)
|
||||
int flag;
|
||||
|
||||
/* check for cyclic sets, for reading old files but also for definite security (py?) */
|
||||
scene_check_setscene(scene);
|
||||
scene_check_setscene(bmain, scene);
|
||||
|
||||
/* can happen when switching modes in other scenes */
|
||||
if(scene->obedit && !(scene->obedit->mode & OB_MODE_EDIT))
|
||||
scene->obedit= NULL;
|
||||
|
||||
/* deselect objects (for dataselect) */
|
||||
for(ob= G.main->object.first; ob; ob= ob->id.next)
|
||||
for(ob= bmain->object.first; ob; ob= ob->id.next)
|
||||
ob->flag &= ~(SELECT|OB_FROMGROUP);
|
||||
|
||||
/* group flags again */
|
||||
for(group= G.main->group.first; group; group= group->id.next) {
|
||||
for(group= bmain->group.first; group; group= group->id.next) {
|
||||
go= group->gobject.first;
|
||||
while(go) {
|
||||
if(go->ob) go->ob->flag |= OB_FROMGROUP;
|
||||
@ -531,12 +531,12 @@ void set_scene_bg(Scene *scene)
|
||||
}
|
||||
|
||||
/* sort baselist */
|
||||
DAG_scene_sort(G.main, scene);
|
||||
DAG_scene_sort(bmain, scene);
|
||||
|
||||
/* ensure dags are built for sets */
|
||||
for(sce= scene->set; sce; sce= sce->set)
|
||||
if(sce->theDag==NULL)
|
||||
DAG_scene_sort(G.main, sce);
|
||||
DAG_scene_sort(bmain, sce);
|
||||
|
||||
/* copy layers and flags from bases to objects */
|
||||
for(base= scene->base.first; base; base= base->next) {
|
||||
@ -558,11 +558,11 @@ void set_scene_bg(Scene *scene)
|
||||
}
|
||||
|
||||
/* called from creator.c */
|
||||
Scene *set_scene_name(char *name)
|
||||
Scene *set_scene_name(Main *bmain, char *name)
|
||||
{
|
||||
Scene *sce= (Scene *)find_id("SC", name);
|
||||
if(sce) {
|
||||
set_scene_bg(sce);
|
||||
set_scene_bg(bmain, sce);
|
||||
printf("Scene switch: '%s' in file: '%s'\n", name, G.sce);
|
||||
return sce;
|
||||
}
|
||||
@ -871,7 +871,7 @@ void scene_select_base(Scene *sce, Base *selbase)
|
||||
}
|
||||
|
||||
/* checks for cycle, returns 1 if it's all OK */
|
||||
int scene_check_setscene(Scene *sce)
|
||||
int scene_check_setscene(Main *bmain, Scene *sce)
|
||||
{
|
||||
Scene *scene;
|
||||
int a, totscene;
|
||||
@ -879,7 +879,7 @@ int scene_check_setscene(Scene *sce)
|
||||
if(sce->set==NULL) return 1;
|
||||
|
||||
totscene= 0;
|
||||
for(scene= G.main->scene.first; scene; scene= scene->id.next)
|
||||
for(scene= bmain->scene.first; scene; scene= scene->id.next)
|
||||
totscene++;
|
||||
|
||||
for(a=0, scene=sce; scene->set; scene=scene->set, a++) {
|
||||
|
@ -216,6 +216,7 @@ static int set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space
|
||||
return false;
|
||||
|
||||
Object workob;
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *sce = CTX_data_scene(C);
|
||||
|
||||
ob->parent = par;
|
||||
@ -243,8 +244,8 @@ static int set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space
|
||||
ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA;
|
||||
par->recalc |= OB_RECALC_OB;
|
||||
|
||||
DAG_scene_sort(sce);
|
||||
DAG_ids_flush_update(0);
|
||||
DAG_scene_sort(bmain, sce);
|
||||
DAG_ids_flush_update(bmain, 0);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
|
||||
|
||||
return true;
|
||||
@ -611,6 +612,7 @@ private:
|
||||
void link_armature(bContext *C, Object *ob, std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& joint_by_uid,
|
||||
TransformReader *tm)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
||||
ModifierData *md = ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Armature);
|
||||
@ -630,8 +632,8 @@ private:
|
||||
|
||||
ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA;
|
||||
|
||||
DAG_scene_sort(scene);
|
||||
DAG_ids_flush_update(0);
|
||||
DAG_scene_sort(bmain, scene);
|
||||
DAG_ids_flush_update(bmain, 0);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
|
||||
#endif
|
||||
|
||||
@ -3132,7 +3134,7 @@ public:
|
||||
where_is_object(scene, job);
|
||||
|
||||
// after parenting and layer change
|
||||
DAG_scene_sort(scene);
|
||||
DAG_scene_sort(CTX_data_main(C), scene);
|
||||
|
||||
joint_objects[node->getUniqueId()] = job;
|
||||
}
|
||||
|
@ -1426,7 +1426,7 @@ void ED_screen_set_scene(bContext *C, Scene *scene)
|
||||
}
|
||||
|
||||
CTX_data_scene_set(C, scene);
|
||||
set_scene_bg(scene);
|
||||
set_scene_bg(CTX_data_main(C), scene);
|
||||
|
||||
ED_update_for_newframe(C, 1);
|
||||
|
||||
|
@ -1805,7 +1805,7 @@ static int game_engine_exec(bContext *C, wmOperator *op)
|
||||
RestoreState(C);
|
||||
|
||||
//XXX restore_all_scene_cfra(scene_cfra_store);
|
||||
set_scene_bg(startscene);
|
||||
set_scene_bg(CTX_data_main(C), startscene);
|
||||
//XXX scene_update_for_newframe(bmain, scene, scene->lay);
|
||||
|
||||
ED_area_tag_redraw(CTX_wm_area(C));
|
||||
|
@ -2146,7 +2146,7 @@ static void render_scene(Render *re, Scene *sce, int cfra)
|
||||
resc->lay= sce->lay;
|
||||
|
||||
/* ensure scene has depsgraph, base flags etc OK */
|
||||
set_scene_bg(sce);
|
||||
set_scene_bg(re->main, sce);
|
||||
|
||||
/* copy callbacks */
|
||||
resc->display_draw= re->display_draw;
|
||||
|
@ -734,7 +734,7 @@ static int set_scene(int argc, char **argv, void *data)
|
||||
{
|
||||
if(argc > 1) {
|
||||
bContext *C= data;
|
||||
Scene *sce= set_scene_name(argv[1]);
|
||||
Scene *sce= set_scene_name(CTX_data_main(C), argv[1]);
|
||||
if(sce) {
|
||||
CTX_data_scene_set(C, sce);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user