2.5: more G.main changes.

This commit is contained in:
Brecht Van Lommel 2010-08-01 12:57:01 +00:00
parent 5fa7d1c1b4
commit f3cca3e192
8 changed files with 31 additions and 29 deletions

View File

@ -31,16 +31,16 @@
#ifndef BKE_SCENE_H #ifndef BKE_SCENE_H
#define BKE_SCENE_H #define BKE_SCENE_H
struct bglMats;
struct Scene;
struct Object;
struct Base;
struct Text;
struct AviCodecData; struct AviCodecData;
struct Base;
struct bglMats;
struct Main;
struct Object;
struct QuicktimeCodecData; struct QuicktimeCodecData;
struct RenderData; struct RenderData;
struct Scene;
struct Text;
struct Text; struct Text;
struct Main;
#define SCE_COPY_EMPTY 0 #define SCE_COPY_EMPTY 0
#define SCE_COPY_LINK_OB 1 #define SCE_COPY_LINK_OB 1
@ -57,8 +57,8 @@ void free_scene(struct Scene *sce);
struct Scene *add_scene(char *name); struct Scene *add_scene(char *name);
struct Base *object_in_scene(struct Object *ob, struct Scene *sce); struct Base *object_in_scene(struct Object *ob, struct Scene *sce);
void set_scene_bg(struct Scene *sce); void set_scene_bg(struct Main *bmain, struct Scene *sce);
struct Scene *set_scene_name(char *name); struct Scene *set_scene_name(struct Main *bmain, char *name);
struct Scene *copy_scene(struct Main *bmain, struct Scene *sce, int type); struct Scene *copy_scene(struct Main *bmain, struct Scene *sce, int type);
void unlink_scene(struct Main *bmain, struct Scene *sce, struct Scene *newsce); 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); void scene_select_base(struct Scene *sce, struct Base *selbase);
/* checks for cycle, returns 1 if it's all OK */ /* 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); float BKE_curframe(struct Scene *scene);

View File

@ -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 */ BLI_strncpy(G.main->name, filename, FILE_MAX); /* is guaranteed current file */
/* baseflags, groups, make depsgraph, etc */ /* baseflags, groups, make depsgraph, etc */
set_scene_bg(CTX_data_scene(C)); set_scene_bg(G.main, CTX_data_scene(C));
MEM_freeN(bfd); MEM_freeN(bfd);
} }

View File

@ -501,7 +501,7 @@ Base *object_in_scene(Object *ob, Scene *sce)
return NULL; return NULL;
} }
void set_scene_bg(Scene *scene) void set_scene_bg(Main *bmain, Scene *scene)
{ {
Scene *sce; Scene *sce;
Base *base; Base *base;
@ -511,18 +511,18 @@ void set_scene_bg(Scene *scene)
int flag; int flag;
/* check for cyclic sets, for reading old files but also for definite security (py?) */ /* 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 */ /* can happen when switching modes in other scenes */
if(scene->obedit && !(scene->obedit->mode & OB_MODE_EDIT)) if(scene->obedit && !(scene->obedit->mode & OB_MODE_EDIT))
scene->obedit= NULL; scene->obedit= NULL;
/* deselect objects (for dataselect) */ /* 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); ob->flag &= ~(SELECT|OB_FROMGROUP);
/* group flags again */ /* 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; go= group->gobject.first;
while(go) { while(go) {
if(go->ob) go->ob->flag |= OB_FROMGROUP; if(go->ob) go->ob->flag |= OB_FROMGROUP;
@ -531,12 +531,12 @@ void set_scene_bg(Scene *scene)
} }
/* sort baselist */ /* sort baselist */
DAG_scene_sort(G.main, scene); DAG_scene_sort(bmain, scene);
/* ensure dags are built for sets */ /* ensure dags are built for sets */
for(sce= scene->set; sce; sce= sce->set) for(sce= scene->set; sce; sce= sce->set)
if(sce->theDag==NULL) if(sce->theDag==NULL)
DAG_scene_sort(G.main, sce); DAG_scene_sort(bmain, sce);
/* copy layers and flags from bases to objects */ /* copy layers and flags from bases to objects */
for(base= scene->base.first; base; base= base->next) { for(base= scene->base.first; base; base= base->next) {
@ -558,11 +558,11 @@ void set_scene_bg(Scene *scene)
} }
/* called from creator.c */ /* 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); Scene *sce= (Scene *)find_id("SC", name);
if(sce) { if(sce) {
set_scene_bg(sce); set_scene_bg(bmain, sce);
printf("Scene switch: '%s' in file: '%s'\n", name, G.sce); printf("Scene switch: '%s' in file: '%s'\n", name, G.sce);
return 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 */ /* 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; Scene *scene;
int a, totscene; int a, totscene;
@ -879,7 +879,7 @@ int scene_check_setscene(Scene *sce)
if(sce->set==NULL) return 1; if(sce->set==NULL) return 1;
totscene= 0; totscene= 0;
for(scene= G.main->scene.first; scene; scene= scene->id.next) for(scene= bmain->scene.first; scene; scene= scene->id.next)
totscene++; totscene++;
for(a=0, scene=sce; scene->set; scene=scene->set, a++) { for(a=0, scene=sce; scene->set; scene=scene->set, a++) {

View File

@ -216,6 +216,7 @@ static int set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space
return false; return false;
Object workob; Object workob;
Main *bmain = CTX_data_main(C);
Scene *sce = CTX_data_scene(C); Scene *sce = CTX_data_scene(C);
ob->parent = par; 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; ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA;
par->recalc |= OB_RECALC_OB; par->recalc |= OB_RECALC_OB;
DAG_scene_sort(sce); DAG_scene_sort(bmain, sce);
DAG_ids_flush_update(0); DAG_ids_flush_update(bmain, 0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
return true; return true;
@ -611,6 +612,7 @@ private:
void link_armature(bContext *C, Object *ob, std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& joint_by_uid, void link_armature(bContext *C, Object *ob, std::map<COLLADAFW::UniqueId, COLLADAFW::Node*>& joint_by_uid,
TransformReader *tm) TransformReader *tm)
{ {
Main *bmain = CTX_data_main(C);
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
ModifierData *md = ED_object_modifier_add(NULL, scene, ob, NULL, eModifierType_Armature); 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; ob->recalc |= OB_RECALC_OB|OB_RECALC_DATA;
DAG_scene_sort(scene); DAG_scene_sort(bmain, scene);
DAG_ids_flush_update(0); DAG_ids_flush_update(bmain, 0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
#endif #endif
@ -3132,7 +3134,7 @@ public:
where_is_object(scene, job); where_is_object(scene, job);
// after parenting and layer change // after parenting and layer change
DAG_scene_sort(scene); DAG_scene_sort(CTX_data_main(C), scene);
joint_objects[node->getUniqueId()] = job; joint_objects[node->getUniqueId()] = job;
} }

View File

@ -1426,7 +1426,7 @@ void ED_screen_set_scene(bContext *C, Scene *scene)
} }
CTX_data_scene_set(C, 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); ED_update_for_newframe(C, 1);

View File

@ -1805,7 +1805,7 @@ static int game_engine_exec(bContext *C, wmOperator *op)
RestoreState(C); RestoreState(C);
//XXX restore_all_scene_cfra(scene_cfra_store); //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); //XXX scene_update_for_newframe(bmain, scene, scene->lay);
ED_area_tag_redraw(CTX_wm_area(C)); ED_area_tag_redraw(CTX_wm_area(C));

View File

@ -2146,7 +2146,7 @@ static void render_scene(Render *re, Scene *sce, int cfra)
resc->lay= sce->lay; resc->lay= sce->lay;
/* ensure scene has depsgraph, base flags etc OK */ /* ensure scene has depsgraph, base flags etc OK */
set_scene_bg(sce); set_scene_bg(re->main, sce);
/* copy callbacks */ /* copy callbacks */
resc->display_draw= re->display_draw; resc->display_draw= re->display_draw;

View File

@ -734,7 +734,7 @@ static int set_scene(int argc, char **argv, void *data)
{ {
if(argc > 1) { if(argc > 1) {
bContext *C= data; bContext *C= data;
Scene *sce= set_scene_name(argv[1]); Scene *sce= set_scene_name(CTX_data_main(C), argv[1]);
if(sce) { if(sce) {
CTX_data_scene_set(C, sce); CTX_data_scene_set(C, sce);
} }