コード例 #1
0
/* 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;
}
コード例 #2
0
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);
}
コード例 #3
0
ファイル: render_update.c プロジェクト: floored/blender
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);
	}
}