Example #1
0
static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *UNUSED(ptr),
                                                     PropertyRNA *UNUSED(prop), int *UNUSED(free))
{
	Scene *scene = CTX_data_scene(C);
	Object *ob = (scene->basact) ? scene->basact->object : NULL;
#if 0
	PTCacheEdit *edit = PE_get_current(scene, ob);
	ParticleSystem *psys = edit ? edit->psys : NULL;
#else
	/* use this rather than PE_get_current() - because the editing cache is
	 * dependent on the cache being updated which can happen after this UI
	 * draws causing a glitch [#28883] */
	ParticleSystem *psys = psys_get_current(ob);
#endif

	if (psys) {
		if (psys->flag & PSYS_GLOBAL_HAIR) {
			return particle_edit_disconnected_hair_brush_items;
		}
		else {
			return particle_edit_hair_brush_items;
		}
	}

	return particle_edit_cache_brush_items;
}
Example #2
0
static void rna_ParticleEdit_redo(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr))
{
	Object *ob = (scene->basact) ? scene->basact->object : NULL;
	PTCacheEdit *edit = PE_get_current(scene, ob);

	if (!edit)
		return;

	psys_free_path_cache(edit->psys, edit);
}
Example #3
0
static bool rna_ParticleEdit_editable_get(PointerRNA *ptr)
{
	ParticleEditSettings *pset = (ParticleEditSettings *)ptr->data;

	if (pset->object != NULL && pset->scene != NULL) {
		BLI_assert(BKE_id_is_in_gobal_main(&pset->object->id));
		BLI_assert(BKE_id_is_in_gobal_main(&pset->scene->id));
	}
	return (pset->object && pset->scene && PE_get_current(G_MAIN, pset->scene, pset->object));
}
Example #4
0
static int rna_ParticleEdit_hair_get(PointerRNA *ptr)
{
	ParticleEditSettings *pset = (ParticleEditSettings *)ptr->data;

	if (pset->scene) {
		PTCacheEdit *edit = PE_get_current(pset->scene, pset->object);

		return (edit && edit->psys);
	}
	
	return 0;
}
Example #5
0
static bool rna_ParticleEdit_hair_get(PointerRNA *ptr)
{
	ParticleEditSettings *pset = (ParticleEditSettings *)ptr->data;

	if (pset->scene) {
		BLI_assert(BKE_id_is_in_gobal_main(&pset->scene->id));
		BLI_assert(BKE_id_is_in_gobal_main(&pset->object->id));
		PTCacheEdit *edit = PE_get_current(G_MAIN, pset->scene, pset->object);

		return (edit && edit->psys);
	}

	return 0;
}
Example #6
0
static EnumPropertyItem *rna_ParticleEdit_tool_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *UNUSED(free))
{
	Scene *scene= CTX_data_scene(C);
	Object *ob= (scene->basact)? scene->basact->object: NULL;
	PTCacheEdit *edit = PE_get_current(scene, ob);
	
	if(edit && edit->psys) {
		if(edit->psys->flag & PSYS_GLOBAL_HAIR)
			return particle_edit_disconnected_hair_brush_items;
		else
			return particle_edit_hair_brush_items;
	}

	return particle_edit_cache_brush_items;
}
Example #7
0
static int rna_ParticleEdit_editable_get(PointerRNA *ptr)
{
	ParticleEditSettings *pset = (ParticleEditSettings *)ptr->data;

	return (pset->object && pset->scene && PE_get_current(pset->scene, pset->object));
}