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
#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);

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 */
/* baseflags, groups, make depsgraph, etc */
set_scene_bg(CTX_data_scene(C));
set_scene_bg(G.main, CTX_data_scene(C));
MEM_freeN(bfd);
}

View File

@ -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++) {

View File

@ -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;
}

View File

@ -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);

View File

@ -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));

View File

@ -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;

View File

@ -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);
}