/* do not call undo push in this function (users of this function have to) */ Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, int enter_editmode, unsigned int layer) { Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); Object *ob; /* for as long scene has editmode... */ if (CTX_data_edit_object(C)) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); /* freedata, and undo */ /* deselects all, sets scene->basact */ ob= add_object(scene, type); BASACT->lay = ob->lay = layer; /* editor level activate, notifiers */ ED_base_object_activate(C, BASACT); /* more editor stuff */ ED_object_base_init_transform(C, BASACT, loc, rot); DAG_scene_sort(bmain, scene); ED_render_id_flush_update(bmain, ob->data); if(enter_editmode) ED_object_enter_editmode(C, EM_IGNORE_LAYER); WM_event_add_notifier(C, NC_SCENE|ND_LAYER_CONTENT, scene); return ob; }
void ED_render_engine_changed(Main *bmain) { /* on changing the render engine type, clear all running render engines */ bScreen *sc; ScrArea *sa; Scene *scene; for (sc = bmain->screen.first; sc; sc = sc->id.next) for (sa = sc->areabase.first; sa; sa = sa->next) ED_render_engine_area_exit(bmain, sa); RE_FreePersistentData(); for (scene = bmain->scene.first; scene; scene = scene->id.next) ED_render_id_flush_update(bmain, &scene->id); }
void ED_render_engine_changed(Main *bmain) { /* on changing the render engine type, clear all running render engines */ bScreen *sc; ScrArea *sa; Scene *scene; Material *ma; for (sc = bmain->screen.first; sc; sc = sc->id.next) for (sa = sc->areabase.first; sa; sa = sa->next) ED_render_engine_area_exit(sa); RE_FreePersistentData(); for (scene = bmain->scene.first; scene; scene = scene->id.next) ED_render_id_flush_update(bmain, &scene->id); /* reset texture painting. Sending one dependency graph signal for any material should * refresh any texture slots */ ma = bmain->mat.first; if (ma) { DAG_id_tag_update(&ma->id, 0); } }