50 int i, k, transformparticle;
51 int count = 0, hasselected = 0;
62 transformparticle = 0;
65 for (k = 0, key = point->
keys; k < point->totkey; k++, key++) {
69 transformparticle = 1;
71 else if (is_prop_edit) {
72 transformparticle = 1;
78 if (transformparticle) {
85 if (hasselected == 0) {
94 "Particle_TransExtension");
97 tx = tc->data_ext =
nullptr;
118 for (k = 0, key = point->
keys; k < point->totkey; k++, key++) {
134 else if (!is_prop_edit) {
156 tx->
scale = (key - 1)->time;
159 if (k == point->
totkey - 1) {
163 tx->
quat = (key + 1)->time;
173 if (is_prop_edit && head != tail) {
198 float mat[4][4], imat[4][4], co[3];
216 for (k = 0, key = point->
keys; k < point->totkey; k++, key++) {
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
void psys_mat_hair_to_global(struct Object *ob, struct Mesh *mesh, short from, struct ParticleData *pa, float hairmat[4][4])
@ BKE_PARTICLE_BATCH_DIRTY_ALL
void BKE_particle_batch_cache_dirty_tag(struct ParticleSystem *psys, int mode)
void unit_m3(float m[3][3])
void mul_m4_v3(const float M[4][4], float r[3])
bool invert_m4_m4(float inverse[4][4], const float mat[4][4])
void unit_m4(float m[4][4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE bool compare_v3v3(const float v1[3], const float v2[3], float limit) ATTR_WARN_UNUSED_RESULT
void DEG_id_tag_update(ID *id, unsigned int flags)
void PE_update_object(Depsgraph *depsgraph, Scene *scene, Object *ob, int useflag)
ParticleEditSettings * PE_settings(Scene *scene)
PTCacheEdit * PE_get_current(Depsgraph *depsgraph, Scene *scene, Object *ob)
Read Guarded memory(de)allocation.
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
ObjectRuntimeHandle * runtime
struct PTCacheEditKey * keys
PTCacheEditPoint * points
struct ParticleSystem * psys
struct ParticleSystemModifierData * psmd_eval