Remove all instance of OBACT from particle_edit.c and related changes
This commit is contained in:
parent
209021a703
commit
146a88dd60
|
@ -6039,6 +6039,7 @@ static void direct_link_scene(FileData *fd, Scene *sce)
|
|||
sce->toolsettings->imapaint.paintcursor = NULL;
|
||||
sce->toolsettings->particle.paintcursor = NULL;
|
||||
sce->toolsettings->particle.scene = NULL;
|
||||
sce->toolsettings->particle.scene_layer = NULL;
|
||||
sce->toolsettings->particle.object = NULL;
|
||||
sce->toolsettings->gp_sculpt.paintcursor = NULL;
|
||||
|
||||
|
|
|
@ -38,21 +38,22 @@ struct ParticleEditSettings;
|
|||
struct rcti;
|
||||
struct PTCacheEdit;
|
||||
struct Scene;
|
||||
struct SceneLayer;
|
||||
|
||||
/* particle edit mode */
|
||||
void PE_free_ptcache_edit(struct PTCacheEdit *edit);
|
||||
int PE_start_edit(struct PTCacheEdit *edit);
|
||||
|
||||
/* access */
|
||||
struct PTCacheEdit *PE_get_current(struct Scene *scene, struct Object *ob);
|
||||
struct PTCacheEdit *PE_get_current(struct Scene *scene, struct SceneLayer *sl, struct Object *ob);
|
||||
struct PTCacheEdit *PE_create_current(struct Scene *scene, struct Object *ob);
|
||||
void PE_current_changed(struct Scene *scene, struct Object *ob);
|
||||
int PE_minmax(struct Scene *scene, float min[3], float max[3]);
|
||||
int PE_minmax(struct Scene *scene, struct SceneLayer *sl, float min[3], float max[3]);
|
||||
struct ParticleEditSettings *PE_settings(struct Scene *scene);
|
||||
|
||||
/* update calls */
|
||||
void PE_hide_keys_time(struct Scene *scene, struct PTCacheEdit *edit, float cfra);
|
||||
void PE_update_object(struct Scene *scene, struct Object *ob, int useflag);
|
||||
void PE_update_object(struct Scene *scene, struct SceneLayer *sl, struct Object *ob, int useflag);
|
||||
|
||||
/* selection tools */
|
||||
int PE_mouse_particles(struct bContext *C, const int mval[2], bool extend, bool deselect, bool toggle);
|
||||
|
@ -62,13 +63,13 @@ int PE_lasso_select(struct bContext *C, const int mcords[][2], const short moves
|
|||
void PE_deselect_all_visible(struct PTCacheEdit *edit);
|
||||
|
||||
/* undo */
|
||||
void PE_undo_push(struct Scene *scene, const char *str);
|
||||
void PE_undo_step(struct Scene *scene, int step);
|
||||
void PE_undo(struct Scene *scene);
|
||||
void PE_redo(struct Scene *scene);
|
||||
bool PE_undo_is_valid(struct Scene *scene);
|
||||
void PE_undo_number(struct Scene *scene, int nr);
|
||||
const char *PE_undo_get_name(struct Scene *scene, int nr, bool *r_active);
|
||||
void PE_undo_push(struct Scene *scene, struct SceneLayer *sl, const char *str);
|
||||
void PE_undo_step(struct Scene *scene, struct SceneLayer *sl, int step);
|
||||
void PE_undo(struct Scene *scene, struct SceneLayer *sl);
|
||||
void PE_redo(struct Scene *scene, struct SceneLayer *sl);
|
||||
bool PE_undo_is_valid(struct Scene *scene, struct SceneLayer *sl);
|
||||
void PE_undo_number(struct Scene *scene, struct SceneLayer *sl, int nr);
|
||||
const char *PE_undo_get_name(struct Scene *scene, struct SceneLayer *sl, int nr, bool *r_active);
|
||||
|
||||
#endif /* __ED_PARTICLE_H__ */
|
||||
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
|
||||
#include "physics_intern.h"
|
||||
|
||||
void PE_create_particle_edit(Scene *scene, Object *ob, PointCache *cache, ParticleSystem *psys);
|
||||
void PE_create_particle_edit(Scene *scene, SceneLayer *sl, Object *ob, PointCache *cache, ParticleSystem *psys);
|
||||
void PTCacheUndo_clear(PTCacheEdit *edit);
|
||||
void recalc_lengths(PTCacheEdit *edit);
|
||||
void recalc_emitter_field(Object *ob, ParticleSystem *psys);
|
||||
|
@ -111,24 +111,26 @@ void update_world_cos(Object *ob, PTCacheEdit *edit);
|
|||
int PE_poll(bContext *C)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
|
||||
if (!scene || !ob || !(ob->mode & OB_MODE_PARTICLE_EDIT))
|
||||
if (!scene || !sl || !ob || !(ob->mode & OB_MODE_PARTICLE_EDIT))
|
||||
return 0;
|
||||
|
||||
return (PE_get_current(scene, ob) != NULL);
|
||||
return (PE_get_current(scene, sl, ob) != NULL);
|
||||
}
|
||||
|
||||
int PE_hair_poll(bContext *C)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
PTCacheEdit *edit;
|
||||
|
||||
if (!scene || !ob || !(ob->mode & OB_MODE_PARTICLE_EDIT))
|
||||
return 0;
|
||||
|
||||
edit= PE_get_current(scene, ob);
|
||||
edit= PE_get_current(scene, sl, ob);
|
||||
|
||||
return (edit && edit->psys);
|
||||
}
|
||||
|
@ -213,7 +215,7 @@ static float pe_brush_size_get(const Scene *UNUSED(scene), ParticleBrushData *br
|
|||
*
|
||||
* note: this function runs on poll, therefor it can runs many times a second
|
||||
* keep it fast! */
|
||||
static PTCacheEdit *pe_get_current(Scene *scene, Object *ob, int create)
|
||||
static PTCacheEdit *pe_get_current(Scene *scene, SceneLayer *sl, Object *ob, int create)
|
||||
{
|
||||
ParticleEditSettings *pset= PE_settings(scene);
|
||||
PTCacheEdit *edit = NULL;
|
||||
|
@ -224,6 +226,7 @@ static PTCacheEdit *pe_get_current(Scene *scene, Object *ob, int create)
|
|||
return NULL;
|
||||
|
||||
pset->scene = scene;
|
||||
pset->scene_layer = sl;
|
||||
pset->object = ob;
|
||||
|
||||
BKE_ptcache_ids_from_object(&pidlist, ob, NULL, 0);
|
||||
|
@ -252,18 +255,18 @@ static PTCacheEdit *pe_get_current(Scene *scene, Object *ob, int create)
|
|||
if (psys->part && psys->part->type == PART_HAIR) {
|
||||
if (psys->flag & PSYS_HAIR_DYNAMICS && psys->pointcache->flag & PTCACHE_BAKED) {
|
||||
if (create && !psys->pointcache->edit)
|
||||
PE_create_particle_edit(scene, ob, pid->cache, NULL);
|
||||
PE_create_particle_edit(scene, sl, ob, pid->cache, NULL);
|
||||
edit = pid->cache->edit;
|
||||
}
|
||||
else {
|
||||
if (create && !psys->edit && psys->flag & PSYS_HAIR_DONE)
|
||||
PE_create_particle_edit(scene, ob, NULL, psys);
|
||||
PE_create_particle_edit(scene, sl, ob, NULL, psys);
|
||||
edit = psys->edit;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (create && pid->cache->flag & PTCACHE_BAKED && !pid->cache->edit)
|
||||
PE_create_particle_edit(scene, ob, pid->cache, psys);
|
||||
PE_create_particle_edit(scene, sl, ob, pid->cache, psys);
|
||||
edit = pid->cache->edit;
|
||||
}
|
||||
|
||||
|
@ -274,7 +277,7 @@ static PTCacheEdit *pe_get_current(Scene *scene, Object *ob, int create)
|
|||
if (create && pid->cache->flag & PTCACHE_BAKED && !pid->cache->edit) {
|
||||
pset->flag |= PE_FADE_TIME;
|
||||
// NICE TO HAVE but doesn't work: pset->brushtype = PE_BRUSH_COMB;
|
||||
PE_create_particle_edit(scene, ob, pid->cache, NULL);
|
||||
PE_create_particle_edit(scene, sl, ob, pid->cache, NULL);
|
||||
}
|
||||
edit = pid->cache->edit;
|
||||
break;
|
||||
|
@ -283,7 +286,7 @@ static PTCacheEdit *pe_get_current(Scene *scene, Object *ob, int create)
|
|||
if (create && pid->cache->flag & PTCACHE_BAKED && !pid->cache->edit) {
|
||||
pset->flag |= PE_FADE_TIME;
|
||||
// NICE TO HAVE but doesn't work: pset->brushtype = PE_BRUSH_COMB;
|
||||
PE_create_particle_edit(scene, ob, pid->cache, NULL);
|
||||
PE_create_particle_edit(scene, sl, ob, pid->cache, NULL);
|
||||
}
|
||||
edit = pid->cache->edit;
|
||||
break;
|
||||
|
@ -298,14 +301,14 @@ static PTCacheEdit *pe_get_current(Scene *scene, Object *ob, int create)
|
|||
return edit;
|
||||
}
|
||||
|
||||
PTCacheEdit *PE_get_current(Scene *scene, Object *ob)
|
||||
PTCacheEdit *PE_get_current(Scene *scene, SceneLayer *sl, Object *ob)
|
||||
{
|
||||
return pe_get_current(scene, ob, 0);
|
||||
return pe_get_current(scene, sl, ob, 0);
|
||||
}
|
||||
|
||||
PTCacheEdit *PE_create_current(Scene *scene, Object *ob)
|
||||
{
|
||||
return pe_get_current(scene, ob, 1);
|
||||
return pe_get_current(scene, NULL, ob, 1);
|
||||
}
|
||||
|
||||
void PE_current_changed(Scene *scene, Object *ob)
|
||||
|
@ -355,6 +358,7 @@ typedef struct PEData {
|
|||
ViewContext vc;
|
||||
|
||||
Scene *scene;
|
||||
SceneLayer *sl;
|
||||
Object *ob;
|
||||
DerivedMesh *dm;
|
||||
PTCacheEdit *edit;
|
||||
|
@ -389,8 +393,9 @@ static void PE_set_data(bContext *C, PEData *data)
|
|||
memset(data, 0, sizeof(*data));
|
||||
|
||||
data->scene= CTX_data_scene(C);
|
||||
data->sl = CTX_data_scene_layer(C);
|
||||
data->ob= CTX_data_active_object(C);
|
||||
data->edit= PE_get_current(data->scene, data->ob);
|
||||
data->edit= PE_get_current(data->scene, data->sl, data->ob);
|
||||
}
|
||||
|
||||
static void PE_set_view3d_data(bContext *C, PEData *data)
|
||||
|
@ -1150,9 +1155,9 @@ void recalc_emitter_field(Object *ob, ParticleSystem *psys)
|
|||
BLI_kdtree_balance(edit->emitter_field);
|
||||
}
|
||||
|
||||
static void PE_update_selection(Scene *scene, Object *ob, int useflag)
|
||||
static void PE_update_selection(Scene *scene, SceneLayer *sl, Object *ob, int useflag)
|
||||
{
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
HairKey *hkey;
|
||||
POINT_P; KEY_K;
|
||||
|
||||
|
@ -1257,12 +1262,12 @@ static void update_velocities(PTCacheEdit *edit)
|
|||
}
|
||||
}
|
||||
|
||||
void PE_update_object(Scene *scene, Object *ob, int useflag)
|
||||
void PE_update_object(Scene *scene, SceneLayer *sl, Object *ob, int useflag)
|
||||
{
|
||||
/* use this to do partial particle updates, not usable when adding or
|
||||
* removing, then a full redo is necessary and calling this may crash */
|
||||
ParticleEditSettings *pset= PE_settings(scene);
|
||||
PTCacheEdit *edit = PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit = PE_get_current(scene, sl, ob);
|
||||
POINT_P;
|
||||
|
||||
if (!edit)
|
||||
|
@ -1397,8 +1402,9 @@ static void select_action_apply(PTCacheEditPoint *point, PTCacheEditKey *key, in
|
|||
static int pe_select_all_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
POINT_P; KEY_K;
|
||||
int action = RNA_enum_get(op->ptr, "action");
|
||||
|
||||
|
@ -1421,7 +1427,7 @@ static int pe_select_all_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
}
|
||||
|
||||
PE_update_selection(scene, ob, 1);
|
||||
PE_update_selection(scene, sl, ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1450,8 +1456,9 @@ int PE_mouse_particles(bContext *C, const int mval[2], bool extend, bool deselec
|
|||
{
|
||||
PEData data;
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
POINT_P; KEY_K;
|
||||
|
||||
if (!PE_start_edit(edit))
|
||||
|
@ -1478,7 +1485,7 @@ int PE_mouse_particles(bContext *C, const int mval[2], bool extend, bool deselec
|
|||
else
|
||||
for_mouse_hit_keys(&data, toggle_key_select, 1);
|
||||
|
||||
PE_update_selection(scene, ob, 1);
|
||||
PE_update_selection(scene, sl, ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1519,7 +1526,7 @@ static int select_roots_exec(bContext *C, wmOperator *op)
|
|||
data.select_action = action;
|
||||
foreach_point(&data, select_root);
|
||||
|
||||
PE_update_selection(data.scene, data.ob, 1);
|
||||
PE_update_selection(data.scene, data.sl, data.ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1584,7 +1591,7 @@ static int select_tips_exec(bContext *C, wmOperator *op)
|
|||
data.select_action = action;
|
||||
foreach_point(&data, select_tip);
|
||||
|
||||
PE_update_selection(data.scene, data.ob, 1);
|
||||
PE_update_selection(data.scene, data.sl, data.ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1623,6 +1630,7 @@ static int select_random_exec(bContext *C, wmOperator *op)
|
|||
PEData data;
|
||||
int type;
|
||||
Scene *scene;
|
||||
SceneLayer *sl;
|
||||
Object *ob;
|
||||
|
||||
/* used by LOOP_VISIBLE_POINTS, LOOP_VISIBLE_KEYS and LOOP_KEYS */
|
||||
|
@ -1642,8 +1650,9 @@ static int select_random_exec(bContext *C, wmOperator *op)
|
|||
PE_set_data(C, &data);
|
||||
data.select_action = SEL_SELECT;
|
||||
scene = CTX_data_scene(C);
|
||||
sl = CTX_data_scene_layer(C);
|
||||
ob = CTX_data_active_object(C);
|
||||
edit = PE_get_current(scene, ob);
|
||||
edit = PE_get_current(scene, sl, ob);
|
||||
|
||||
rng = BLI_rng_new_srandom(seed);
|
||||
|
||||
|
@ -1668,7 +1677,7 @@ static int select_random_exec(bContext *C, wmOperator *op)
|
|||
|
||||
BLI_rng_free(rng);
|
||||
|
||||
PE_update_selection(data.scene, data.ob, 1);
|
||||
PE_update_selection(data.scene, data.sl, data.ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1712,7 +1721,7 @@ static int select_linked_exec(bContext *C, wmOperator *op)
|
|||
data.select= !RNA_boolean_get(op->ptr, "deselect");
|
||||
|
||||
for_mouse_hit_keys(&data, select_keys, 1); /* nearest only */
|
||||
PE_update_selection(data.scene, data.ob, 1);
|
||||
PE_update_selection(data.scene, data.sl, data.ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1760,8 +1769,9 @@ void PE_deselect_all_visible(PTCacheEdit *edit)
|
|||
int PE_border_select(bContext *C, rcti *rect, bool select, bool extend)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
PEData data;
|
||||
|
||||
if (!PE_start_edit(edit))
|
||||
|
@ -1776,7 +1786,7 @@ int PE_border_select(bContext *C, rcti *rect, bool select, bool extend)
|
|||
|
||||
for_mouse_hit_keys(&data, select_key, 0);
|
||||
|
||||
PE_update_selection(scene, ob, 1);
|
||||
PE_update_selection(scene, sl, ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1787,8 +1797,9 @@ int PE_border_select(bContext *C, rcti *rect, bool select, bool extend)
|
|||
int PE_circle_select(bContext *C, int selecting, const int mval[2], float rad)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
PEData data;
|
||||
|
||||
if (!PE_start_edit(edit))
|
||||
|
@ -1801,7 +1812,7 @@ int PE_circle_select(bContext *C, int selecting, const int mval[2], float rad)
|
|||
|
||||
for_mouse_hit_keys(&data, select_key, 0);
|
||||
|
||||
PE_update_selection(scene, ob, 1);
|
||||
PE_update_selection(scene, sl, ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1812,10 +1823,11 @@ int PE_circle_select(bContext *C, int selecting, const int mval[2], float rad)
|
|||
int PE_lasso_select(bContext *C, const int mcords[][2], const short moves, bool extend, bool select)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
ARegion *ar= CTX_wm_region(C);
|
||||
ParticleEditSettings *pset= PE_settings(scene);
|
||||
PTCacheEdit *edit = PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit = PE_get_current(scene, sl, ob);
|
||||
ParticleSystem *psys = edit->psys;
|
||||
ParticleSystemModifierData *psmd = psys_get_modifier(ob, psys);
|
||||
POINT_P; KEY_K;
|
||||
|
@ -1889,7 +1901,7 @@ int PE_lasso_select(bContext *C, const int mcords[][2], const short moves, bool
|
|||
}
|
||||
}
|
||||
|
||||
PE_update_selection(scene, ob, 1);
|
||||
PE_update_selection(scene, sl, ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1901,7 +1913,8 @@ static int hide_exec(bContext *C, wmOperator *op)
|
|||
{
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
POINT_P; KEY_K;
|
||||
|
||||
if (RNA_enum_get(op->ptr, "unselected")) {
|
||||
|
@ -1923,7 +1936,7 @@ static int hide_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
}
|
||||
|
||||
PE_update_selection(scene, ob, 1);
|
||||
PE_update_selection(scene, sl, ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -1953,7 +1966,8 @@ static int reveal_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
POINT_P; KEY_K;
|
||||
|
||||
LOOP_POINTS {
|
||||
|
@ -1966,7 +1980,7 @@ static int reveal_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
}
|
||||
}
|
||||
|
||||
PE_update_selection(scene, ob, 1);
|
||||
PE_update_selection(scene, sl, ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -2025,7 +2039,7 @@ static int select_less_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
PE_set_data(C, &data);
|
||||
foreach_point(&data, select_less_keys);
|
||||
|
||||
PE_update_selection(data.scene, data.ob, 1);
|
||||
PE_update_selection(data.scene, data.sl, data.ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -2087,7 +2101,7 @@ static int select_more_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
PE_set_data(C, &data);
|
||||
foreach_point(&data, select_more_keys);
|
||||
|
||||
PE_update_selection(data.scene, data.ob, 1);
|
||||
PE_update_selection(data.scene, data.sl, data.ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -2184,7 +2198,7 @@ static int rekey_exec(bContext *C, wmOperator *op)
|
|||
foreach_selected_point(&data, rekey_particle);
|
||||
|
||||
recalc_lengths(data.edit);
|
||||
PE_update_object(data.scene, data.ob, 1);
|
||||
PE_update_object(data.scene, data.sl, data.ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -2209,9 +2223,9 @@ void PARTICLE_OT_rekey(wmOperatorType *ot)
|
|||
RNA_def_int(ot->srna, "keys_number", 2, 2, INT_MAX, "Number of Keys", "", 2, 100);
|
||||
}
|
||||
|
||||
static void rekey_particle_to_time(Scene *scene, Object *ob, int pa_index, float path_time)
|
||||
static void rekey_particle_to_time(Scene *scene, SceneLayer *sl, Object *ob, int pa_index, float path_time)
|
||||
{
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
ParticleSystem *psys;
|
||||
ParticleSimulationData sim= {0};
|
||||
ParticleData *pa;
|
||||
|
@ -2515,7 +2529,7 @@ static int subdivide_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
foreach_point(&data, subdivide_particle);
|
||||
|
||||
recalc_lengths(data.edit);
|
||||
PE_update_object(data.scene, data.ob, 1);
|
||||
PE_update_object(data.scene, data.sl, data.ob, 1);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
@ -2541,8 +2555,9 @@ void PARTICLE_OT_subdivide(wmOperatorType *ot)
|
|||
static int remove_doubles_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
ParticleSystem *psys = edit->psys;
|
||||
ParticleSystemModifierData *psmd;
|
||||
KDTree *tree;
|
||||
|
@ -2633,9 +2648,10 @@ void PARTICLE_OT_remove_doubles(wmOperatorType *ot)
|
|||
static int weight_set_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
ParticleEditSettings *pset= PE_settings(scene);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
ParticleSystem *psys = edit->psys;
|
||||
POINT_P;
|
||||
KEY_K;
|
||||
|
@ -2792,11 +2808,11 @@ void PARTICLE_OT_delete(wmOperatorType *ot)
|
|||
|
||||
/*************************** mirror operator **************************/
|
||||
|
||||
static void PE_mirror_x(Scene *scene, Object *ob, int tagged)
|
||||
static void PE_mirror_x(Scene *scene, SceneLayer *sl, Object *ob, int tagged)
|
||||
{
|
||||
Mesh *me= (Mesh *)(ob->data);
|
||||
ParticleSystemModifierData *psmd;
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
ParticleSystem *psys = edit->psys;
|
||||
ParticleData *pa, *newpa, *new_pars;
|
||||
PTCacheEditPoint *newpoint, *new_points;
|
||||
|
@ -2943,10 +2959,11 @@ static void PE_mirror_x(Scene *scene, Object *ob, int tagged)
|
|||
static int mirror_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
|
||||
PE_mirror_x(scene, ob, 0);
|
||||
PE_mirror_x(scene, sl, ob, 0);
|
||||
|
||||
update_world_cos(ob, edit);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob);
|
||||
|
@ -3083,7 +3100,7 @@ static void brush_cut(PEData *data, int pa_index)
|
|||
edit->points[pa_index].flag |= PEP_TAG;
|
||||
}
|
||||
else {
|
||||
rekey_particle_to_time(data->scene, ob, pa_index, cut_time);
|
||||
rekey_particle_to_time(data->scene, data->sl, ob, pa_index, cut_time);
|
||||
edit->points[pa_index].flag |= PEP_EDIT_RECALC;
|
||||
}
|
||||
}
|
||||
|
@ -3712,6 +3729,7 @@ static int brush_add(PEData *data, short number)
|
|||
|
||||
typedef struct BrushEdit {
|
||||
Scene *scene;
|
||||
SceneLayer *sl;
|
||||
Object *ob;
|
||||
PTCacheEdit *edit;
|
||||
|
||||
|
@ -3726,9 +3744,10 @@ typedef struct BrushEdit {
|
|||
static int brush_edit_init(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
ParticleEditSettings *pset= PE_settings(scene);
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
ARegion *ar= CTX_wm_region(C);
|
||||
BrushEdit *bedit;
|
||||
float min[3], max[3];
|
||||
|
@ -3738,7 +3757,7 @@ static int brush_edit_init(bContext *C, wmOperator *op)
|
|||
|
||||
/* set the 'distance factor' for grabbing (used in comb etc) */
|
||||
INIT_MINMAX(min, max);
|
||||
PE_minmax(scene, min, max);
|
||||
PE_minmax(scene, sl, min, max);
|
||||
mid_v3_v3v3(min, min, max);
|
||||
|
||||
bedit= MEM_callocN(sizeof(BrushEdit), "BrushEdit");
|
||||
|
@ -3746,6 +3765,7 @@ static int brush_edit_init(bContext *C, wmOperator *op)
|
|||
op->customdata= bedit;
|
||||
|
||||
bedit->scene= scene;
|
||||
bedit->sl = sl;
|
||||
bedit->ob= ob;
|
||||
bedit->edit= edit;
|
||||
|
||||
|
@ -3761,6 +3781,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
|
|||
{
|
||||
BrushEdit *bedit= op->customdata;
|
||||
Scene *scene= bedit->scene;
|
||||
SceneLayer *sl = bedit->sl;
|
||||
Object *ob= bedit->ob;
|
||||
PTCacheEdit *edit= bedit->edit;
|
||||
ParticleEditSettings *pset= PE_settings(scene);
|
||||
|
@ -3951,14 +3972,14 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
|
|||
|
||||
if (ELEM(pset->brushtype, PE_BRUSH_ADD, PE_BRUSH_CUT) && (added || removed)) {
|
||||
if (pset->brushtype == PE_BRUSH_ADD && pe_x_mirror(ob))
|
||||
PE_mirror_x(scene, ob, 1);
|
||||
PE_mirror_x(scene, sl, ob, 1);
|
||||
|
||||
update_world_cos(ob, edit);
|
||||
psys_free_path_cache(NULL, edit);
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
||||
}
|
||||
else
|
||||
PE_update_object(scene, ob, 1);
|
||||
PE_update_object(scene, sl, ob, 1);
|
||||
}
|
||||
|
||||
if (edit->psys) {
|
||||
|
@ -4171,7 +4192,7 @@ static void shape_cut(PEData *data, int pa_index)
|
|||
edit->points[pa_index].flag |= PEP_TAG;
|
||||
}
|
||||
else {
|
||||
rekey_particle_to_time(data->scene, ob, pa_index, cut_time);
|
||||
rekey_particle_to_time(data->scene, data->sl, ob, pa_index, cut_time);
|
||||
edit->points[pa_index].flag |= PEP_EDIT_RECALC;
|
||||
}
|
||||
}
|
||||
|
@ -4180,9 +4201,10 @@ static void shape_cut(PEData *data, int pa_index)
|
|||
static int shape_cut_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob = CTX_data_active_object(C);
|
||||
ParticleEditSettings *pset = PE_settings(scene);
|
||||
PTCacheEdit *edit = PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit = PE_get_current(scene, sl, ob);
|
||||
Object *shapeob = pset->shape_object;
|
||||
int selected = count_selected_keys(scene, edit);
|
||||
int lock_root = pset->flag & PE_LOCK_FIRST;
|
||||
|
@ -4218,7 +4240,7 @@ static int shape_cut_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
||||
}
|
||||
else
|
||||
PE_update_object(scene, ob, 1);
|
||||
PE_update_object(scene, sl, ob, 1);
|
||||
|
||||
if (edit->psys) {
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob);
|
||||
|
@ -4390,9 +4412,9 @@ static void get_PTCacheUndo(PTCacheEdit *edit, PTCacheUndo *undo)
|
|||
}
|
||||
}
|
||||
|
||||
void PE_undo_push(Scene *scene, const char *str)
|
||||
void PE_undo_push(Scene *scene, SceneLayer *sl, const char *str)
|
||||
{
|
||||
PTCacheEdit *edit= PE_get_current(scene, OBACT);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, OBACT_NEW);
|
||||
PTCacheUndo *undo;
|
||||
int nr;
|
||||
|
||||
|
@ -4432,9 +4454,9 @@ void PE_undo_push(Scene *scene, const char *str)
|
|||
make_PTCacheUndo(edit, edit->curundo);
|
||||
}
|
||||
|
||||
void PE_undo_step(Scene *scene, int step)
|
||||
void PE_undo_step(Scene *scene, SceneLayer *sl, int step)
|
||||
{
|
||||
PTCacheEdit *edit= PE_get_current(scene, OBACT);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, OBACT_NEW);
|
||||
|
||||
if (!edit) return;
|
||||
|
||||
|
@ -4465,12 +4487,12 @@ void PE_undo_step(Scene *scene, int step)
|
|||
}
|
||||
}
|
||||
|
||||
DAG_id_tag_update(&OBACT->id, OB_RECALC_DATA);
|
||||
DAG_id_tag_update(&OBACT_NEW->id, OB_RECALC_DATA);
|
||||
}
|
||||
|
||||
bool PE_undo_is_valid(Scene *scene)
|
||||
bool PE_undo_is_valid(Scene *scene, SceneLayer *sl)
|
||||
{
|
||||
PTCacheEdit *edit= PE_get_current(scene, OBACT);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, OBACT_NEW);
|
||||
|
||||
if (edit) {
|
||||
return (edit->undo.last != edit->undo.first);
|
||||
|
@ -4493,19 +4515,19 @@ void PTCacheUndo_clear(PTCacheEdit *edit)
|
|||
edit->curundo= NULL;
|
||||
}
|
||||
|
||||
void PE_undo(Scene *scene)
|
||||
void PE_undo(Scene *scene, SceneLayer *sl)
|
||||
{
|
||||
PE_undo_step(scene, 1);
|
||||
PE_undo_step(scene, sl, 1);
|
||||
}
|
||||
|
||||
void PE_redo(Scene *scene)
|
||||
void PE_redo(Scene *scene, SceneLayer *sl)
|
||||
{
|
||||
PE_undo_step(scene, -1);
|
||||
PE_undo_step(scene, sl, -1);
|
||||
}
|
||||
|
||||
void PE_undo_number(Scene *scene, int nr)
|
||||
void PE_undo_number(Scene *scene, SceneLayer *sl, int nr)
|
||||
{
|
||||
PTCacheEdit *edit= PE_get_current(scene, OBACT);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, OBACT_NEW);
|
||||
PTCacheUndo *undo;
|
||||
int a=0;
|
||||
|
||||
|
@ -4513,15 +4535,15 @@ void PE_undo_number(Scene *scene, int nr)
|
|||
if (a==nr) break;
|
||||
}
|
||||
edit->curundo= undo;
|
||||
PE_undo_step(scene, 0);
|
||||
PE_undo_step(scene, sl, 0);
|
||||
}
|
||||
|
||||
|
||||
/* get name of undo item, return null if no item with this index */
|
||||
/* if active pointer, set it to 1 if true */
|
||||
const char *PE_undo_get_name(Scene *scene, int nr, bool *r_active)
|
||||
const char *PE_undo_get_name(Scene *scene, SceneLayer *sl, int nr, bool *r_active)
|
||||
{
|
||||
PTCacheEdit *edit= PE_get_current(scene, OBACT);
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, OBACT_NEW);
|
||||
PTCacheUndo *undo;
|
||||
|
||||
if (r_active) *r_active = false;
|
||||
|
@ -4540,10 +4562,10 @@ const char *PE_undo_get_name(Scene *scene, int nr, bool *r_active)
|
|||
|
||||
/************************ utilities ******************************/
|
||||
|
||||
int PE_minmax(Scene *scene, float min[3], float max[3])
|
||||
int PE_minmax(Scene *scene, SceneLayer *sl, float min[3], float max[3])
|
||||
{
|
||||
Object *ob= OBACT;
|
||||
PTCacheEdit *edit= PE_get_current(scene, ob);
|
||||
Object *ob= OBACT_NEW;
|
||||
PTCacheEdit *edit= PE_get_current(scene, sl, ob);
|
||||
ParticleSystem *psys;
|
||||
ParticleSystemModifierData *psmd = NULL;
|
||||
POINT_P; KEY_K;
|
||||
|
@ -4580,7 +4602,7 @@ int PE_minmax(Scene *scene, float min[3], float max[3])
|
|||
/************************ particle edit toggle operator ************************/
|
||||
|
||||
/* initialize needed data for bake edit */
|
||||
void PE_create_particle_edit(Scene *scene, Object *ob, PointCache *cache, ParticleSystem *psys)
|
||||
void PE_create_particle_edit(Scene *scene, SceneLayer *sl, Object *ob, PointCache *cache, ParticleSystem *psys)
|
||||
{
|
||||
PTCacheEdit *edit;
|
||||
ParticleSystemModifierData *psmd = (psys) ? psys_get_modifier(ob, psys) : NULL;
|
||||
|
@ -4681,10 +4703,10 @@ void PE_create_particle_edit(Scene *scene, Object *ob, PointCache *cache, Partic
|
|||
recalc_lengths(edit);
|
||||
if (psys && !cache)
|
||||
recalc_emitter_field(ob, psys);
|
||||
PE_update_object(scene, ob, 1);
|
||||
PE_update_object(scene, sl, ob, 1);
|
||||
|
||||
PTCacheUndo_clear(edit);
|
||||
PE_undo_push(scene, "Original");
|
||||
PE_undo_push(scene, sl, "Original");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4888,14 +4910,15 @@ static int unify_length_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
{
|
||||
Object *ob = CTX_data_active_object(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
PTCacheEdit *edit = PE_get_current(scene, ob);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
PTCacheEdit *edit = PE_get_current(scene, sl, ob);
|
||||
float average_length = calculate_average_length(edit);
|
||||
if (average_length == 0.0f) {
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
scale_points_to_length(edit, average_length);
|
||||
|
||||
PE_update_object(scene, ob, 1);
|
||||
PE_update_object(scene, sl, ob, 1);
|
||||
if (edit->psys) {
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob);
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
|
||||
#include "physics_intern.h"
|
||||
|
||||
extern void PE_create_particle_edit(Scene *scene, Object *ob, PointCache *cache, ParticleSystem *psys);
|
||||
extern void PE_create_particle_edit(Scene *scene, SceneLayer *sl, Object *ob, PointCache *cache, ParticleSystem *psys);
|
||||
extern void PTCacheUndo_clear(PTCacheEdit *edit);
|
||||
extern void recalc_lengths(PTCacheEdit *edit);
|
||||
extern void recalc_emitter_field(Object *ob, ParticleSystem *psys);
|
||||
|
@ -565,7 +565,7 @@ void PARTICLE_OT_dupliob_move_down(wmOperatorType *ot)
|
|||
|
||||
/************************ connect/disconnect hair operators *********************/
|
||||
|
||||
static void disconnect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
|
||||
static void disconnect_hair(Scene *scene, SceneLayer *sl, Object *ob, ParticleSystem *psys)
|
||||
{
|
||||
ParticleSystemModifierData *psmd = psys_get_modifier(ob, psys);
|
||||
ParticleEditSettings *pset= PE_settings(scene);
|
||||
|
@ -611,12 +611,13 @@ static void disconnect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
|
|||
if (ELEM(pset->brushtype, PE_BRUSH_ADD, PE_BRUSH_PUFF))
|
||||
pset->brushtype = PE_BRUSH_NONE;
|
||||
|
||||
PE_update_object(scene, ob, 0);
|
||||
PE_update_object(scene, sl, ob, 0);
|
||||
}
|
||||
|
||||
static int disconnect_hair_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= ED_object_context(C);
|
||||
ParticleSystem *psys= NULL;
|
||||
const bool all = RNA_boolean_get(op->ptr, "all");
|
||||
|
@ -626,12 +627,12 @@ static int disconnect_hair_exec(bContext *C, wmOperator *op)
|
|||
|
||||
if (all) {
|
||||
for (psys=ob->particlesystem.first; psys; psys=psys->next) {
|
||||
disconnect_hair(scene, ob, psys);
|
||||
disconnect_hair(scene, sl, ob, psys);
|
||||
}
|
||||
}
|
||||
else {
|
||||
psys = psys_get_current(ob);
|
||||
disconnect_hair(scene, ob, psys);
|
||||
disconnect_hair(scene, sl, ob, psys);
|
||||
}
|
||||
|
||||
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
||||
|
@ -657,7 +658,7 @@ void PARTICLE_OT_disconnect_hair(wmOperatorType *ot)
|
|||
/* from/to_world_space : whether from/to particles are in world or hair space
|
||||
* from/to_mat : additional transform for from/to particles (e.g. for using object space copying)
|
||||
*/
|
||||
static bool remap_hair_emitter(Scene *scene, Object *ob, ParticleSystem *psys,
|
||||
static bool remap_hair_emitter(Scene *scene, SceneLayer *sl, Object *ob, ParticleSystem *psys,
|
||||
Object *target_ob, ParticleSystem *target_psys, PTCacheEdit *target_edit,
|
||||
float from_mat[4][4], float to_mat[4][4], bool from_global, bool to_global)
|
||||
{
|
||||
|
@ -843,19 +844,19 @@ static bool remap_hair_emitter(Scene *scene, Object *ob, ParticleSystem *psys,
|
|||
|
||||
psys_free_path_cache(target_psys, target_edit);
|
||||
|
||||
PE_update_object(scene, target_ob, 0);
|
||||
PE_update_object(scene, sl, target_ob, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool connect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
|
||||
static bool connect_hair(Scene *scene, SceneLayer *sl, Object *ob, ParticleSystem *psys)
|
||||
{
|
||||
bool ok;
|
||||
|
||||
if (!psys)
|
||||
return false;
|
||||
|
||||
ok = remap_hair_emitter(scene, ob, psys, ob, psys, psys->edit, ob->obmat, ob->obmat, psys->flag & PSYS_GLOBAL_HAIR, false);
|
||||
ok = remap_hair_emitter(scene, sl, ob, psys, ob, psys, psys->edit, ob->obmat, ob->obmat, psys->flag & PSYS_GLOBAL_HAIR, false);
|
||||
psys->flag &= ~PSYS_GLOBAL_HAIR;
|
||||
|
||||
return ok;
|
||||
|
@ -864,6 +865,7 @@ static bool connect_hair(Scene *scene, Object *ob, ParticleSystem *psys)
|
|||
static int connect_hair_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob= ED_object_context(C);
|
||||
ParticleSystem *psys= NULL;
|
||||
const bool all = RNA_boolean_get(op->ptr, "all");
|
||||
|
@ -874,12 +876,12 @@ static int connect_hair_exec(bContext *C, wmOperator *op)
|
|||
|
||||
if (all) {
|
||||
for (psys=ob->particlesystem.first; psys; psys=psys->next) {
|
||||
any_connected |= connect_hair(scene, ob, psys);
|
||||
any_connected |= connect_hair(scene, sl, ob, psys);
|
||||
}
|
||||
}
|
||||
else {
|
||||
psys = psys_get_current(ob);
|
||||
any_connected |= connect_hair(scene, ob, psys);
|
||||
any_connected |= connect_hair(scene, sl, ob, psys);
|
||||
}
|
||||
|
||||
if (!any_connected) {
|
||||
|
@ -915,7 +917,7 @@ typedef enum eCopyParticlesSpace {
|
|||
PAR_COPY_SPACE_WORLD = 1,
|
||||
} eCopyParticlesSpace;
|
||||
|
||||
static void copy_particle_edit(Scene *scene, Object *ob, ParticleSystem *psys, ParticleSystem *psys_from)
|
||||
static void copy_particle_edit(Scene *scene, SceneLayer *sl, Object *ob, ParticleSystem *psys, ParticleSystem *psys_from)
|
||||
{
|
||||
PTCacheEdit *edit_from = psys_from->edit, *edit;
|
||||
ParticleData *pa;
|
||||
|
@ -965,10 +967,10 @@ static void copy_particle_edit(Scene *scene, Object *ob, ParticleSystem *psys, P
|
|||
|
||||
recalc_lengths(edit);
|
||||
recalc_emitter_field(ob, psys);
|
||||
PE_update_object(scene, ob, true);
|
||||
PE_update_object(scene, sl, ob, true);
|
||||
|
||||
PTCacheUndo_clear(edit);
|
||||
PE_undo_push(scene, "Original");
|
||||
PE_undo_push(scene, sl, "Original");
|
||||
}
|
||||
|
||||
static void remove_particle_systems_from_object(Object *ob_to)
|
||||
|
@ -998,6 +1000,7 @@ static void remove_particle_systems_from_object(Object *ob_to)
|
|||
/* single_psys_from is optional, if NULL all psys of ob_from are copied */
|
||||
static bool copy_particle_systems_to_object(Main *bmain,
|
||||
Scene *scene,
|
||||
SceneLayer *sl,
|
||||
Object *ob_from,
|
||||
ParticleSystem *single_psys_from,
|
||||
Object *ob_to,
|
||||
|
@ -1078,7 +1081,7 @@ static bool copy_particle_systems_to_object(Main *bmain,
|
|||
DM_ensure_tessface(psmd->dm_final);
|
||||
|
||||
if (psys_from->edit)
|
||||
copy_particle_edit(scene, ob_to, psys, psys_from);
|
||||
copy_particle_edit(scene, sl, ob_to, psys, psys_from);
|
||||
|
||||
if (duplicate_settings) {
|
||||
id_us_min(&psys->part->id);
|
||||
|
@ -1112,7 +1115,7 @@ static bool copy_particle_systems_to_object(Main *bmain,
|
|||
break;
|
||||
}
|
||||
if (ob_from != ob_to) {
|
||||
remap_hair_emitter(scene, ob_from, psys_from, ob_to, psys, psys->edit, from_mat, to_mat, psys_from->flag & PSYS_GLOBAL_HAIR, psys->flag & PSYS_GLOBAL_HAIR);
|
||||
remap_hair_emitter(scene, sl, ob_from, psys_from, ob_to, psys, psys->edit, from_mat, to_mat, psys_from->flag & PSYS_GLOBAL_HAIR, psys->flag & PSYS_GLOBAL_HAIR);
|
||||
}
|
||||
|
||||
/* tag for recalc */
|
||||
|
@ -1147,6 +1150,7 @@ static int copy_particle_systems_exec(bContext *C, wmOperator *op)
|
|||
const bool use_active = RNA_boolean_get(op->ptr, "use_active");
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob_from = ED_object_active_context(C);
|
||||
ParticleSystem *psys_from = use_active ? CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem).data : NULL;
|
||||
|
||||
|
@ -1161,7 +1165,7 @@ static int copy_particle_systems_exec(bContext *C, wmOperator *op)
|
|||
remove_particle_systems_from_object(ob_to);
|
||||
changed = true;
|
||||
}
|
||||
if (copy_particle_systems_to_object(bmain, scene, ob_from, psys_from, ob_to, space, false))
|
||||
if (copy_particle_systems_to_object(bmain, scene, sl, ob_from, psys_from, ob_to, space, false))
|
||||
changed = true;
|
||||
else
|
||||
fail++;
|
||||
|
@ -1222,7 +1226,7 @@ static int duplicate_particle_systems_exec(bContext *C, wmOperator *op)
|
|||
Scene *scene = CTX_data_scene(C);
|
||||
Object *ob = ED_object_active_context(C);
|
||||
ParticleSystem *psys = CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem).data;
|
||||
copy_particle_systems_to_object(CTX_data_main(C), scene, ob, psys, ob,
|
||||
copy_particle_systems_to_object(CTX_data_main(C), scene, CTX_data_scene_layer(C), ob, psys, ob,
|
||||
PAR_COPY_SPACE_OBJECT, duplicate_settings);
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
|
|
@ -6421,10 +6421,10 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
|
|||
}
|
||||
}
|
||||
|
||||
static void draw_update_ptcache_edit(Scene *scene, Object *ob, PTCacheEdit *edit)
|
||||
static void draw_update_ptcache_edit(Scene *scene, SceneLayer *sl, Object *ob, PTCacheEdit *edit)
|
||||
{
|
||||
if (edit->psys && edit->psys->flag & PSYS_HAIR_UPDATED)
|
||||
PE_update_object(scene, ob, 0);
|
||||
PE_update_object(scene, sl, ob, 0);
|
||||
|
||||
/* create path and child path cache if it doesn't exist already */
|
||||
if (edit->pathcache == NULL)
|
||||
|
@ -8624,7 +8624,7 @@ afterdraw:
|
|||
if (ob->mode & OB_MODE_PARTICLE_EDIT && is_obact) {
|
||||
PTCacheEdit *edit = PE_create_current(scene, ob);
|
||||
if (edit && edit->psys == psys)
|
||||
draw_update_ptcache_edit(scene, ob, edit);
|
||||
draw_update_ptcache_edit(scene, sl, ob, edit);
|
||||
}
|
||||
|
||||
draw_new_particle_system(scene, v3d, rv3d, base, psys, dt, dflag);
|
||||
|
@ -8647,7 +8647,7 @@ afterdraw:
|
|||
PTCacheEdit *edit = PE_create_current(scene, ob);
|
||||
if (edit) {
|
||||
glLoadMatrixf(rv3d->viewmat);
|
||||
draw_update_ptcache_edit(scene, ob, edit);
|
||||
draw_update_ptcache_edit(scene, sl, ob, edit);
|
||||
draw_ptcache_edit(scene, v3d, edit);
|
||||
glMultMatrixf(ob->obmat);
|
||||
}
|
||||
|
|
|
@ -3084,7 +3084,7 @@ static int viewselected_exec(bContext *C, wmOperator *op)
|
|||
ok = paintface_minmax(ob, min, max);
|
||||
}
|
||||
else if (ob && (ob->mode & OB_MODE_PARTICLE_EDIT)) {
|
||||
ok = PE_minmax(scene, min, max);
|
||||
ok = PE_minmax(scene, sl, min, max);
|
||||
}
|
||||
else if (ob &&
|
||||
(ob->mode & (OB_MODE_SCULPT | OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT | OB_MODE_TEXTURE_PAINT)))
|
||||
|
|
|
@ -1800,7 +1800,7 @@ static void createTransParticleVerts(bContext *C, TransInfo *t)
|
|||
Base *base = CTX_data_active_base(C);
|
||||
Object *ob = CTX_data_active_object(C);
|
||||
ParticleEditSettings *pset = PE_settings(t->scene);
|
||||
PTCacheEdit *edit = PE_get_current(t->scene, ob);
|
||||
PTCacheEdit *edit = PE_get_current(t->scene, t->sl, ob);
|
||||
ParticleSystem *psys = NULL;
|
||||
ParticleSystemModifierData *psmd = NULL;
|
||||
PTCacheEditPoint *point;
|
||||
|
@ -1919,7 +1919,7 @@ void flushTransParticles(TransInfo *t)
|
|||
Scene *scene = t->scene;
|
||||
SceneLayer *sl = t->sl;
|
||||
Object *ob = OBACT_NEW;
|
||||
PTCacheEdit *edit = PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit = PE_get_current(scene, sl, ob);
|
||||
ParticleSystem *psys = edit->psys;
|
||||
ParticleSystemModifierData *psmd = NULL;
|
||||
PTCacheEditPoint *point;
|
||||
|
@ -1958,7 +1958,7 @@ void flushTransParticles(TransInfo *t)
|
|||
point->flag |= PEP_EDIT_RECALC;
|
||||
}
|
||||
|
||||
PE_update_object(scene, OBACT_NEW, 1);
|
||||
PE_update_object(scene, sl, OBACT_NEW, 1);
|
||||
}
|
||||
|
||||
/* ********************* mesh ****************** */
|
||||
|
@ -6306,7 +6306,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
|
|||
else if ((t->scene->basact) &&
|
||||
(ob = t->scene->basact->object) &&
|
||||
(ob->mode & OB_MODE_PARTICLE_EDIT) &&
|
||||
PE_get_current(t->scene, ob))
|
||||
PE_get_current(t->scene, t->sl, ob))
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
|
@ -8058,7 +8058,7 @@ void createTransData(bContext *C, TransInfo *t)
|
|||
|
||||
}
|
||||
}
|
||||
else if (ob && (ob->mode & OB_MODE_PARTICLE_EDIT) && PE_start_edit(PE_get_current(scene, ob))) {
|
||||
else if (ob && (ob->mode & OB_MODE_PARTICLE_EDIT) && PE_start_edit(PE_get_current(scene, sl, ob))) {
|
||||
createTransParticleVerts(C, t);
|
||||
t->flag |= T_POINTS;
|
||||
|
||||
|
|
|
@ -897,7 +897,7 @@ static void recalcData_objects(TransInfo *t)
|
|||
else
|
||||
BKE_pose_where_is(t->scene, ob);
|
||||
}
|
||||
else if (base && (base->object->mode & OB_MODE_PARTICLE_EDIT) && PE_get_current(t->scene, base->object)) {
|
||||
else if (base && (base->object->mode & OB_MODE_PARTICLE_EDIT) && PE_get_current(t->scene, t->sl, base->object)) {
|
||||
if (t->state != TRANS_CANCEL) {
|
||||
applyProject(t);
|
||||
}
|
||||
|
|
|
@ -564,7 +564,7 @@ static int calc_manipulator_stats(const bContext *C)
|
|||
/* pass */
|
||||
}
|
||||
else if (ob && ob->mode & OB_MODE_PARTICLE_EDIT) {
|
||||
PTCacheEdit *edit = PE_get_current(scene, ob);
|
||||
PTCacheEdit *edit = PE_get_current(scene, sl, ob);
|
||||
PTCacheEditPoint *point;
|
||||
PTCacheEditKey *ek;
|
||||
int k;
|
||||
|
|
|
@ -101,7 +101,7 @@ void ED_undo_push(bContext *C, const char *str)
|
|||
else if (obact && obact->mode & OB_MODE_PARTICLE_EDIT) {
|
||||
if (U.undosteps == 0) return;
|
||||
|
||||
PE_undo_push(CTX_data_scene(C), str);
|
||||
PE_undo_push(CTX_data_scene(C), CTX_data_scene_layer(C), str);
|
||||
}
|
||||
else if (obact && obact->mode & OB_MODE_SCULPT) {
|
||||
/* do nothing for now */
|
||||
|
@ -120,6 +120,7 @@ static int ed_undo_step(bContext *C, int step, const char *undoname)
|
|||
wmWindow *win = CTX_wm_window(C);
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *obedit = CTX_data_edit_object(C);
|
||||
Object *obact = CTX_data_active_object(C);
|
||||
ScrArea *sa = CTX_wm_area(C);
|
||||
|
@ -180,9 +181,9 @@ static int ed_undo_step(bContext *C, int step, const char *undoname)
|
|||
}
|
||||
else if (obact && obact->mode & OB_MODE_PARTICLE_EDIT) {
|
||||
if (step == 1)
|
||||
PE_undo(scene);
|
||||
PE_undo(scene, sl);
|
||||
else
|
||||
PE_redo(scene);
|
||||
PE_redo(scene, sl);
|
||||
}
|
||||
else if (U.uiflag & USER_GLOBALUNDO) {
|
||||
// note python defines not valid here anymore.
|
||||
|
@ -297,7 +298,7 @@ bool ED_undo_is_valid(const bContext *C, const char *undoname)
|
|||
return 1;
|
||||
}
|
||||
else if (obact && obact->mode & OB_MODE_PARTICLE_EDIT) {
|
||||
return PE_undo_is_valid(CTX_data_scene(C));
|
||||
return PE_undo_is_valid(CTX_data_scene(C), CTX_data_scene_layer(C));
|
||||
}
|
||||
|
||||
if (U.uiflag & USER_GLOBALUNDO) {
|
||||
|
@ -533,7 +534,7 @@ static EnumPropertyItem *rna_undo_itemf(bContext *C, int undosys, int *totitem)
|
|||
const char *name = NULL;
|
||||
|
||||
if (undosys == UNDOSYSTEM_PARTICLE) {
|
||||
name = PE_undo_get_name(CTX_data_scene(C), i, &active);
|
||||
name = PE_undo_get_name(CTX_data_scene(C), CTX_data_scene_layer(C), i, &active);
|
||||
}
|
||||
else if (undosys == UNDOSYSTEM_EDITMODE) {
|
||||
name = undo_editmode_get_name(C, i, &active);
|
||||
|
@ -616,7 +617,7 @@ static int undo_history_exec(bContext *C, wmOperator *op)
|
|||
int item = RNA_int_get(op->ptr, "item");
|
||||
|
||||
if (undosys == UNDOSYSTEM_PARTICLE) {
|
||||
PE_undo_number(CTX_data_scene(C), item);
|
||||
PE_undo_number(CTX_data_scene(C), CTX_data_scene_layer(C), item);
|
||||
}
|
||||
else if (undosys == UNDOSYSTEM_EDITMODE) {
|
||||
undo_editmode_number(C, item + 1);
|
||||
|
|
|
@ -1115,6 +1115,7 @@ typedef struct ParticleEditSettings {
|
|||
int draw_step, fade_frames;
|
||||
|
||||
struct Scene *scene;
|
||||
struct SceneLayer *scene_layer;
|
||||
struct Object *object;
|
||||
struct Object *shape_object;
|
||||
} ParticleEditSettings;
|
||||
|
|
|
@ -148,10 +148,11 @@ static PointerRNA rna_ParticleBrush_curve_get(PointerRNA *ptr)
|
|||
return rna_pointer_inherit_refine(ptr, &RNA_CurveMapping, NULL);
|
||||
}
|
||||
|
||||
static void rna_ParticleEdit_redo(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
static void rna_ParticleEdit_redo(Main *UNUSED(bmain), bContext *C, Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
Object *ob = (scene->basact) ? scene->basact->object : NULL;
|
||||
PTCacheEdit *edit = PE_get_current(scene, ob);
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob = OBACT_NEW;
|
||||
PTCacheEdit *edit = PE_get_current(scene, sl, ob);
|
||||
|
||||
if (!edit)
|
||||
return;
|
||||
|
@ -211,14 +212,14 @@ 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));
|
||||
return (pset->object && pset->scene && PE_get_current(pset->scene, pset->scene_layer, 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);
|
||||
PTCacheEdit *edit = PE_get_current(pset->scene, pset->scene_layer, pset->object);
|
||||
|
||||
return (edit && edit->psys);
|
||||
}
|
||||
|
@ -329,9 +330,10 @@ static void rna_ImaPaint_viewport_update(Main *UNUSED(bmain), Scene *UNUSED(scen
|
|||
WM_main_add_notifier(NC_OBJECT | ND_DRAW, NULL);
|
||||
}
|
||||
|
||||
static void rna_ImaPaint_mode_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
static void rna_ImaPaint_mode_update(Main *UNUSED(bmain), bContext *C, Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
Object *ob = OBACT;
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob = OBACT_NEW;
|
||||
|
||||
if (ob && ob->type == OB_MESH) {
|
||||
/* of course we need to invalidate here */
|
||||
|
@ -344,9 +346,10 @@ static void rna_ImaPaint_mode_update(Main *UNUSED(bmain), Scene *scene, PointerR
|
|||
}
|
||||
}
|
||||
|
||||
static void rna_ImaPaint_stencil_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
static void rna_ImaPaint_stencil_update(Main *UNUSED(bmain), bContext *C, Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
Object *ob = OBACT;
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob = OBACT_NEW;
|
||||
|
||||
if (ob && ob->type == OB_MESH) {
|
||||
GPU_drawobject_free(ob->derivedFinal);
|
||||
|
@ -355,19 +358,20 @@ static void rna_ImaPaint_stencil_update(Main *UNUSED(bmain), Scene *scene, Point
|
|||
}
|
||||
}
|
||||
|
||||
static void rna_ImaPaint_canvas_update(Main *bmain, Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
static void rna_ImaPaint_canvas_update(Main *bmain, bContext *C, Scene *scene, PointerRNA *UNUSED(ptr))
|
||||
{
|
||||
Object *ob = OBACT;
|
||||
SceneLayer *sl = CTX_data_scene_layer(C);
|
||||
Object *ob = OBACT_NEW;
|
||||
bScreen *sc;
|
||||
Image *ima = scene->toolsettings->imapaint.canvas;
|
||||
|
||||
for (sc = bmain->screen.first; sc; sc = sc->id.next) {
|
||||
ScrArea *sa;
|
||||
for (sa = sc->areabase.first; sa; sa = sa->next) {
|
||||
SpaceLink *sl;
|
||||
for (sl = sa->spacedata.first; sl; sl = sl->next) {
|
||||
if (sl->spacetype == SPACE_IMAGE) {
|
||||
SpaceImage *sima = (SpaceImage *)sl;
|
||||
SpaceLink *slink;
|
||||
for (slink = sa->spacedata.first; slink; slink = slink->next) {
|
||||
if (slink->spacetype == SPACE_IMAGE) {
|
||||
SpaceImage *sima = (SpaceImage *)slink;
|
||||
|
||||
if (!sima->pin)
|
||||
ED_space_image_set(sima, scene, scene->obedit, ima);
|
||||
|
@ -740,12 +744,12 @@ static void rna_def_image_paint(BlenderRNA *brna)
|
|||
|
||||
prop = RNA_def_property(srna, "stencil_image", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "stencil");
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_ui_text(prop, "Stencil Image", "Image used as stencil");
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, "rna_ImaPaint_stencil_update");
|
||||
|
||||
prop = RNA_def_property(srna, "canvas", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_ui_text(prop, "Canvas", "Image used as canvas");
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, "rna_ImaPaint_canvas_update");
|
||||
|
||||
|
@ -787,6 +791,7 @@ static void rna_def_image_paint(BlenderRNA *brna)
|
|||
RNA_def_property_range(prop, 512, 16384);
|
||||
|
||||
prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_enum_items(prop, paint_type_items);
|
||||
RNA_def_property_ui_text(prop, "Mode", "Mode of operation for projection painting");
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, "rna_ImaPaint_mode_update");
|
||||
|
@ -895,6 +900,7 @@ static void rna_def_particle_edit(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop, "Auto Velocity", "Calculate point velocities automatically");
|
||||
|
||||
prop = RNA_def_property(srna, "show_particles", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_DRAW_PART);
|
||||
RNA_def_property_ui_text(prop, "Draw Particles", "Draw actual particles");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_redo");
|
||||
|
@ -915,16 +921,19 @@ static void rna_def_particle_edit(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop, "Brush", "");
|
||||
|
||||
prop = RNA_def_property(srna, "draw_step", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_range(prop, 1, 10);
|
||||
RNA_def_property_ui_text(prop, "Steps", "How many steps to draw the path with");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_redo");
|
||||
|
||||
prop = RNA_def_property(srna, "fade_frames", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_range(prop, 1, 100);
|
||||
RNA_def_property_ui_text(prop, "Frames", "How many frames to fade");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_update");
|
||||
|
||||
prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "edittype");
|
||||
RNA_def_property_enum_items(prop, edit_type_items);
|
||||
RNA_def_property_ui_text(prop, "Type", "");
|
||||
|
@ -945,7 +954,7 @@ static void rna_def_particle_edit(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop, "Object", "The edited object");
|
||||
|
||||
prop = RNA_def_property(srna, "shape_object", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_CONTEXT_UPDATE);
|
||||
RNA_def_property_ui_text(prop, "Shape Object", "Outer shape to use for tools");
|
||||
RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Mesh_object_poll");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_ParticleEdit_redo");
|
||||
|
|
|
@ -413,7 +413,7 @@ void ED_fsmenu_entry_set_path(struct FSMenuEntry *fsentry, const char *name) RET
|
|||
char *ED_fsmenu_entry_get_name(struct FSMenuEntry *fsentry) RET_NULL
|
||||
void ED_fsmenu_entry_set_name(struct FSMenuEntry *fsentry, const char *name) RET_NONE
|
||||
|
||||
struct PTCacheEdit *PE_get_current(struct Scene *scene, struct Object *ob) RET_NULL
|
||||
struct PTCacheEdit *PE_get_current(struct Scene *scene, struct SceneLayer *sl, struct Object *ob) RET_NULL
|
||||
void PE_current_changed(struct Scene *scene, struct Object *ob) RET_NONE
|
||||
|
||||
/* rna keymap */
|
||||
|
@ -535,7 +535,7 @@ int ED_mesh_mirror_spatial_table(struct Object *ob, struct BMEditMesh *em, struc
|
|||
|
||||
float ED_rollBoneToVector(EditBone *bone, const float new_up_axis[3], const bool axis_only) RET_ZERO
|
||||
void ED_space_image_get_size(struct SpaceImage *sima, int *width, int *height) RET_NONE
|
||||
bool ED_space_image_check_show_maskedit(struct Scene *scene, struct SpaceImage *sima) RET_ZERO
|
||||
bool ED_space_image_check_show_maskedit(struct SceneLayer *sl, struct SpaceImage *sima) RET_ZERO
|
||||
|
||||
bool ED_texture_context_check_world(const struct bContext *C) RET_ZERO
|
||||
bool ED_texture_context_check_material(const struct bContext *C) RET_ZERO
|
||||
|
|
Loading…
Reference in New Issue