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