Blender V2.61 - r43446
Classes | Defines | Typedefs | Functions

BKE_particle.h File Reference

#include "DNA_particle_types.h"
#include "DNA_object_types.h"

Go to the source code of this file.

Classes

struct  ParticleSimulationData
struct  ParticleTexture
struct  ParticleSeam
struct  ParticleCacheKey
struct  ParticleThreadContext
struct  ParticleThread
struct  ParticleBillboardData
struct  ParticleCollisionElement
struct  ParticleCollision
struct  ParticleDrawData

Defines

#define PARTICLE_P   ParticleData *pa; int p
#define LOOP_PARTICLES   for(p=0, pa=psys->particles; p<psys->totpart; p++, pa++)
#define LOOP_EXISTING_PARTICLES   for(p=0, pa=psys->particles; p<psys->totpart; p++, pa++) if(!(pa->flag & PARS_UNEXIST))
#define LOOP_SHOWN_PARTICLES   for(p=0, pa=psys->particles; p<psys->totpart; p++, pa++) if(!(pa->flag & (PARS_UNEXIST|PARS_NO_DISP)))
#define LOOP_DYNAMIC_PARTICLES   for(p=0; p<psys->totpart; p++ ) if((pa=psys->particles+p)->state.time > 0.f)
#define PSYS_FRAND_COUNT   1024
#define PSYS_FRAND(seed)   psys->frand[(seed) % PSYS_FRAND_COUNT]
#define PARTICLE_PSMD   ParticleSystemModifierData *psmd = sim->psmd ? sim->psmd : psys_get_modifier(sim->ob, sim->psys)
#define PARTICLE_DRAW_DATA_UPDATED   1
#define PSYS_RESET_ALL   1
#define PSYS_RESET_DEPSGRAPH   2
#define PSYS_RESET_CACHE_MISS   4
#define DMCACHE_NOTFOUND   -1
#define DMCACHE_ISCHILD   -2

Typedefs

typedef struct
ParticleSimulationData 
ParticleSimulationData
typedef struct ParticleTexture ParticleTexture
typedef struct ParticleSeam ParticleSeam
typedef struct ParticleCacheKey ParticleCacheKey
typedef struct
ParticleThreadContext 
ParticleThreadContext
typedef struct ParticleThread ParticleThread
typedef struct
ParticleBillboardData 
ParticleBillboardData
typedef struct
ParticleCollisionElement 
ParticleCollisionElement
typedef struct ParticleCollision ParticleCollision
typedef struct ParticleDrawData ParticleDrawData

Functions

int count_particles (struct ParticleSystem *psys)
int count_particles_mod (struct ParticleSystem *psys, int totgr, int cur)
struct ParticleSystem * psys_get_current (struct Object *ob)
short psys_get_current_num (struct Object *ob)
void psys_set_current_num (Object *ob, int index)
struct Object * psys_find_object (struct Scene *scene, struct ParticleSystem *psys)
struct Object * psys_get_lattice (struct ParticleSimulationData *sim)
int psys_in_edit_mode (struct Scene *scene, struct ParticleSystem *psys)
int psys_check_enabled (struct Object *ob, struct ParticleSystem *psys)
int psys_check_edited (struct ParticleSystem *psys)
void psys_check_group_weights (struct ParticleSettings *part)
int psys_uses_gravity (struct ParticleSimulationData *sim)
void psys_free_settings (struct ParticleSettings *part)
void psys_free_path_cache (struct ParticleSystem *psys, struct PTCacheEdit *edit)
void psys_free (struct Object *ob, struct ParticleSystem *psys)
void psys_render_set (struct Object *ob, struct ParticleSystem *psys, float viewmat[][4], float winmat[][4], int winx, int winy, int timeoffset)
void psys_render_restore (struct Object *ob, struct ParticleSystem *psys)
int psys_render_simplify_distribution (struct ParticleThreadContext *ctx, int tot)
int psys_render_simplify_params (struct ParticleSystem *psys, struct ChildParticle *cpa, float *params)
void psys_interpolate_uvs (const struct MTFace *tface, int quad, const float w[4], float uvco[2])
void psys_interpolate_mcol (const struct MCol *mcol, int quad, const float w[4], struct MCol *mc)
void copy_particle_key (struct ParticleKey *to, struct ParticleKey *from, int time)
void psys_particle_on_emitter (struct ParticleSystemModifierData *psmd, int distr, int index, int index_dmcache, float *fuv, float foffset, float *vec, float *nor, float *utan, float *vtan, float *orco, float *ornor)
struct ParticleSystemModifierData * psys_get_modifier (struct Object *ob, struct ParticleSystem *psys)
struct ModifierData * object_add_particle_system (struct Scene *scene, struct Object *ob, const char *name)
void object_remove_particle_system (struct Scene *scene, struct Object *ob)
struct ParticleSettings * psys_new_settings (const char *name, struct Main *main)
struct ParticleSettings * psys_copy_settings (struct ParticleSettings *part)
void make_local_particlesettings (struct ParticleSettings *part)
void psys_reset (struct ParticleSystem *psys, int mode)
void psys_find_parents (struct ParticleSimulationData *sim)
void psys_cache_paths (struct ParticleSimulationData *sim, float cfra)
void psys_cache_edit_paths (struct Scene *scene, struct Object *ob, struct PTCacheEdit *edit, float cfra)
void psys_cache_child_paths (struct ParticleSimulationData *sim, float cfra, int editupdate)
int do_guides (struct ListBase *effectors, ParticleKey *state, int pa_num, float time)
void precalc_guides (struct ParticleSimulationData *sim, struct ListBase *effectors)
float psys_get_timestep (struct ParticleSimulationData *sim)
float psys_get_child_time (struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *birthtime, float *dietime)
float psys_get_child_size (struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *pa_time)
void psys_get_particle_on_path (struct ParticleSimulationData *sim, int pa_num, struct ParticleKey *state, int vel)
int psys_get_particle_state (struct ParticleSimulationData *sim, int p, struct ParticleKey *state, int always)
void psys_get_dupli_texture (struct ParticleSystem *psys, struct ParticleSettings *part, struct ParticleSystemModifierData *psmd, struct ParticleData *pa, struct ChildParticle *cpa, float *uv, float *orco)
void psys_get_dupli_path_transform (struct ParticleSimulationData *sim, struct ParticleData *pa, struct ChildParticle *cpa, struct ParticleCacheKey *cache, float mat[][4], float *scale)
ParticleThread * psys_threads_create (struct ParticleSimulationData *sim)
void psys_threads_free (ParticleThread *threads)
void psys_make_billboard (ParticleBillboardData *bb, float xvec[3], float yvec[3], float zvec[3], float center[3])
void psys_apply_hair_lattice (struct Scene *scene, struct Object *ob, struct ParticleSystem *psys)
struct ParticleSystem * psys_get_target_system (struct Object *ob, struct ParticleTarget *pt)
void psys_count_keyed_targets (struct ParticleSimulationData *sim)
void psys_update_particle_tree (struct ParticleSystem *psys, float cfra)
void psys_make_temp_pointcache (struct Object *ob, struct ParticleSystem *psys)
void psys_get_pointcache_start_end (struct Scene *scene, ParticleSystem *psys, int *sfra, int *efra)
void psys_check_boid_data (struct ParticleSystem *psys)
void psys_get_birth_coordinates (struct ParticleSimulationData *sim, struct ParticleData *pa, struct ParticleKey *state, float dtime, float cfra)
void particle_system_update (struct Scene *scene, struct Object *ob, struct ParticleSystem *psys)
void psys_disable_all (struct Object *ob)
void psys_enable_all (struct Object *ob)
void free_hair (struct Object *ob, struct ParticleSystem *psys, int dynamics)
void free_keyed_keys (struct ParticleSystem *psys)
void psys_free_particles (struct ParticleSystem *psys)
void psys_free_children (struct ParticleSystem *psys)
void psys_interpolate_particle (short type, struct ParticleKey keys[4], float dt, struct ParticleKey *result, int velocity)
void psys_vec_rot_to_face (struct DerivedMesh *dm, struct ParticleData *pa, float *vec)
void psys_mat_hair_to_object (struct Object *ob, struct DerivedMesh *dm, short from, struct ParticleData *pa, float hairmat[][4])
void psys_mat_hair_to_global (struct Object *ob, struct DerivedMesh *dm, short from, struct ParticleData *pa, float hairmat[][4])
void psys_mat_hair_to_orco (struct Object *ob, struct DerivedMesh *dm, short from, struct ParticleData *pa, float hairmat[][4])
float psys_get_dietime_from_cache (struct PointCache *cache, int index)
void psys_free_pdd (struct ParticleSystem *psys)
float * psys_cache_vgroup (struct DerivedMesh *dm, struct ParticleSystem *psys, int vgroup)
void psys_get_texture (struct ParticleSimulationData *sim, struct ParticleData *pa, struct ParticleTexture *ptex, int event, float cfra)
void psys_interpolate_face (struct MVert *mvert, struct MFace *mface, struct MTFace *tface, float(*orcodata)[3], float *uv, float *vec, float *nor, float *utan, float *vtan, float *orco, float *ornor)
float psys_particle_value_from_verts (struct DerivedMesh *dm, short from, struct ParticleData *pa, float *values)
void psys_get_from_key (struct ParticleKey *key, float *loc, float *vel, float *rot, float *time)
void BKE_psys_collision_neartest_cb (void *userdata, int index, const struct BVHTreeRay *ray, struct BVHTreeRayHit *hit)
void psys_particle_on_dm (struct DerivedMesh *dm, int from, int index, int index_dmcache, const float fw[4], float foffset, float vec[3], float nor[3], float utan[3], float vtan[3], float orco[3], float ornor[3])
void initialize_particle (struct ParticleSimulationData *sim, struct ParticleData *pa, int p)
void psys_calc_dmcache (struct Object *ob, struct DerivedMesh *dm, struct ParticleSystem *psys)
int psys_particle_dm_face_lookup (struct Object *ob, struct DerivedMesh *dm, int index, const float fw[4], struct LinkNode *node)
void reset_particle (struct ParticleSimulationData *sim, struct ParticleData *pa, float dtime, float cfra)

Detailed Description

Definition in file BKE_particle.h.


Define Documentation

#define DMCACHE_ISCHILD   -2
#define DMCACHE_NOTFOUND   -1
#define LOOP_DYNAMIC_PARTICLES   for(p=0; p<psys->totpart; p++ ) if((pa=psys->particles+p)->state.time > 0.f)

Definition at line 67 of file BKE_particle.h.

Referenced by dynamics_step().

#define LOOP_EXISTING_PARTICLES   for(p=0, pa=psys->particles; p<psys->totpart; p++, pa++) if(!(pa->flag & PARS_UNEXIST))

Definition at line 64 of file BKE_particle.h.

Referenced by dynamics_step(), and particle_system_update().

#define LOOP_PARTICLES   for(p=0, pa=psys->particles; p<psys->totpart; p++, pa++)
#define LOOP_SHOWN_PARTICLES   for(p=0, pa=psys->particles; p<psys->totpart; p++, pa++) if(!(pa->flag & (PARS_UNEXIST|PARS_NO_DISP)))
#define PARTICLE_DRAW_DATA_UPDATED   1

Definition at line 226 of file BKE_particle.h.

Referenced by draw_new_particle_system(), and particle_system_update().

#define PARTICLE_P   ParticleData *pa; int p
#define PARTICLE_PSMD   ParticleSystemModifierData *psmd = sim->psmd ? sim->psmd : psys_get_modifier(sim->ob, sim->psys)
#define PSYS_FRAND (   seed)    psys->frand[(seed) % PSYS_FRAND_COUNT]
#define PSYS_FRAND_COUNT   1024

Definition at line 69 of file BKE_particle.h.

Referenced by do_child_modifiers(), and psys_create_frand().

#define PSYS_RESET_ALL   1
#define PSYS_RESET_CACHE_MISS   4

Definition at line 352 of file BKE_particle.h.

Referenced by psys_reset(), and system_step().

#define PSYS_RESET_DEPSGRAPH   2

Definition at line 350 of file BKE_particle.h.

Referenced by BKE_ptcache_id_reset(), clear_edited_exec(), and psys_reset().


Typedef Documentation

typedef struct ParticleSeam ParticleSeam

Function Documentation

void BKE_psys_collision_neartest_cb ( void *  userdata,
int  index,
const struct BVHTreeRay *  ray,
struct BVHTreeRayHit *  hit 
)
void copy_particle_key ( struct ParticleKey *  to,
struct ParticleKey *  from,
int  time 
)
int count_particles ( struct ParticleSystem *  psys)
int count_particles_mod ( struct ParticleSystem *  psys,
int  totgr,
int  cur 
)
int do_guides ( struct ListBase *  effectors,
ParticleKey *  state,
int  pa_num,
float  time 
)
void free_hair ( struct Object *  ob,
struct ParticleSystem *  psys,
int  dynamics 
)
void free_keyed_keys ( struct ParticleSystem *  psys)
void initialize_particle ( struct ParticleSimulationData *  sim,
struct ParticleData *  pa,
int  p 
)
void make_local_particlesettings ( struct ParticleSettings *  part)
struct ModifierData* object_add_particle_system ( struct Scene *  scene,
struct Object *  ob,
const char *  name 
) [read]
void object_remove_particle_system ( struct Scene *  scene,
struct Object *  ob 
)
void particle_system_update ( struct Scene *  scene,
struct Object *  ob,
struct ParticleSystem *  psys 
)

Definition at line 4356 of file particle_system.c.

References Object::adt, ParticleSettings::adt, ADT_RECALC_ANIM, ADT_RECALC_DRIVERS, BKE_animsys_evaluate_animdata(), BKE_curframe(), ParticleSystem::cfra, distribute_particles(), ParticleSystemModifierData::dm, ParticleSystem::edit, emit_particles(), eParticleSystemFlag_Pars, eParticleSystemFlag_psys_updated, ParticleData::flag, ParticleSystem::flag, ParticleSettings::flag, ParticleSystemModifierData::flag, ParticleDrawData::flag, ParticleSystem::free_edit, free_hair(), free_keyed_keys(), ParticleSettings::from, hair_needs_recalc(), hair_step(), ParticleSettings::hair_step, i, Object::id, ParticleSettings::id, ParticleSystem::imat, initialize_all_particles(), invert_m4_m4(), LOOP_EXISTING_PARTICLES, NULL, ParticleSimulationData::ob, Object::obmat, Object::parent, PARS_NO_DISP, ParticleSystem::part, PART_FLUID, PART_HAIR, PART_HAIR_REGROW, PART_PHYS_KEYED, PART_PHYS_NO, PARTICLE_DRAW_DATA_UPDATED, PARTICLE_P, particles_fluid_step(), ParticleSystem::pdd, ParticleSettings::phystype, ParticleSimulationData::psmd, ParticleSimulationData::psys, psys_changed_type(), psys_check_enabled(), psys_count_keyed_targets(), PSYS_EDITED, PSYS_FRAND, psys_free_path_cache(), psys_get_current_display_percentage(), psys_get_modifier(), PSYS_HAIR_DONE, psys_prepare_physics(), PSYS_RECALC_RESET, PSYS_RECALC_TYPE, psys_reset(), PSYS_RESET_ALL, psys_update_path_cache(), ParticleSettings::randsize, ParticleSystem::recalc, ParticleSystem::renderdata, reset_particle(), save_hair(), ParticleSimulationData::scene, set_keyed_keys(), ParticleSettings::size, ParticleData::size, system_step(), ParticleSettings::totpart, ParticleSystem::totpart, ParticleSystem::totunexist, ParticleSettings::type, and where_is_object_time().

Referenced by deformVerts(), and object_handle_update().

void precalc_guides ( struct ParticleSimulationData *  sim,
struct ListBase *  effectors 
)
void psys_apply_hair_lattice ( struct Scene *  scene,
struct Object *  ob,
struct ParticleSystem *  psys 
)
void psys_cache_child_paths ( struct ParticleSimulationData *  sim,
float  cfra,
int  editupdate 
)
void psys_cache_edit_paths ( struct Scene *  scene,
struct Object *  ob,
struct PTCacheEdit *  edit,
float  cfra 
)

Definition at line 3036 of file particle.c.

References ParticleInterpolationData::birthtime, ParticleEditSettings::brushtype, ParticleInterpolationData::bspline, ParticleInterpolationData::cache, cache_key_incremental_rotation(), ParticleKey::co, ParticleCacheKey::co, ParticleCacheKey::col, copy_qt_qt(), copy_v3_v3(), ParticleInterpolationData::dietime, ParticleSystemModifierData::dm, ParticleInterpolationData::dm, do_particle_interpolation(), ParticleEditSettings::draw_step, ParticleInterpolationData::ekey, ParticleInterpolationData::epoint, ParticleSystem::flag, ParticleSettings::flag, PTCacheEditPoint::flag, ParticleSettings::from, ParticleData::hair, ParticleInterpolationData::hkey, i, init_particle_interpolation(), interp_v3_v3v3(), ParticleInterpolationData::keyed, PTCacheEditPoint::keys, mat3_to_quat_is_ok(), MAX2, mul_m4_v3(), PTCacheEdit::nosel_col, NULL, ParticleSimulationData::ob, ParticleSystem::part, PART_HAIR_BSPLINE, ToolSettings::particle, ParticleSystem::particles, PTCacheEdit::pathcache, PTCacheEdit::pathcachebufs, PE_BRUSH_WEIGHT, PEK_SELECT, PEP_EDIT_RECALC, PTCacheEdit::points, pow(), ParticleSimulationData::psmd, ParticleSimulationData::psys, PTCacheEdit::psys, psys_alloc_path_cache_buffers(), psys_cache_child_paths(), psys_free_path_cache(), psys_get_modifier(), PSYS_GLOBAL_HAIR, psys_mat_hair_to_global(), rot, ParticleCacheKey::rot, ParticleSimulationData::scene, PTCacheEdit::sel_col, ParticleCacheKey::steps, sub_v3_v3v3(), ParticleCacheKey::time, HairKey::time, PTCacheEditKey::time, ParticleKey::time, Scene::toolsettings, PTCacheEdit::totcached, PTCacheEdit::totpoint, ParticleCacheKey::vel, HairKey::weight, and weight_to_rgb().

Referenced by draw_update_ptcache_edit(), PE_update_object(), and PE_update_selection().

void psys_cache_paths ( struct ParticleSimulationData *  sim,
float  cfra 
)
float* psys_cache_vgroup ( struct DerivedMesh *  dm,
struct ParticleSystem *  psys,
int  vgroup 
)
void psys_calc_dmcache ( struct Object *  ob,
struct DerivedMesh *  dm,
struct ParticleSystem *  psys 
)
void psys_check_boid_data ( struct ParticleSystem *  psys)
int psys_check_edited ( struct ParticleSystem *  psys)
int psys_check_enabled ( struct Object *  ob,
struct ParticleSystem *  psys 
)
void psys_check_group_weights ( struct ParticleSettings *  part)
struct ParticleSettings* psys_copy_settings ( struct ParticleSettings *  part) [read]
void psys_count_keyed_targets ( struct ParticleSimulationData *  sim)
void psys_disable_all ( struct Object *  ob)
void psys_enable_all ( struct Object *  ob)
struct Object* psys_find_object ( struct Scene *  scene,
struct ParticleSystem *  psys 
) [read]
void psys_find_parents ( struct ParticleSimulationData *  sim)
void psys_free ( struct Object *  ob,
struct ParticleSystem *  psys 
)
void psys_free_children ( struct ParticleSystem *  psys)
void psys_free_particles ( struct ParticleSystem *  psys)
void psys_free_path_cache ( struct ParticleSystem *  psys,
struct PTCacheEdit *  edit 
)
void psys_free_pdd ( struct ParticleSystem *  psys)
void psys_free_settings ( struct ParticleSettings *  part)
void psys_get_birth_coordinates ( struct ParticleSimulationData *  sim,
struct ParticleData *  pa,
struct ParticleKey *  state,
float  dtime,
float  cfra 
)

Definition at line 1561 of file particle_system.c.

References ParticleKey::ave, ParticleSettings::avefac, ParticleSettings::avemode, axis_angle_to_quat(), ParticleData::boid, ParticleKey::co, copy_qt_qt(), copy_v3_v3(), cosf, cross_v3_v3v3(), dot_v3v3(), fabsf, ParticleData::foffset, ParticleSettings::from, ParticleData::fuv, interp_qt_qtqt(), ParticleTexture::ivel, M_PI, madd_v3_v3fl(), mat3_to_quat_is_ok(), mat4_to_quat(), mul_m4_v3(), mul_mat3_m4_v3(), mul_qt_qtqt(), mul_v3_fl(), mul_v3_v3fl(), negate_v3(), negate_v3_v3(), normalize_qt(), normalize_v3(), normalize_v3_v3(), ParticleSettings::normfac, ParticleData::num, ParticleData::num_dmcache, ParticleSimulationData::ob, OB_POSX, OB_POSZ, ParticleSettings::ob_vel, ParticleSettings::obfac, Object::obmat, p, PAMAP_IVEL, ParticleSystem::part, PART_AVE_RAND, PART_AVE_SPIN, PART_PHYS_BOIDS, PART_ROT_GLOB_X, PART_ROT_GLOB_Y, PART_ROT_GLOB_Z, PART_ROT_NOR, PART_ROT_OB_X, PART_ROT_OB_Y, PART_ROT_OB_Z, PART_ROT_VEL, ParticleSettings::partfac, ParticleSystem::particles, ParticleSettings::phasefac, ParticleSettings::phystype, ParticleData::prev_state, project_v3_v3v3(), ParticleSimulationData::psmd, ParticleSimulationData::psys, PSYS_FRAND, psys_get_texture(), psys_particle_on_emitter(), ParticleSettings::randfac, ParticleSettings::randphasefac, ParticleSettings::randrotfac, ParticleKey::rot, rot, ParticleSettings::rotmode, sinf, ParticleData::state, sub_v3_v3(), sub_v3_v3v3(), ParticleSettings::tanfac, ParticleSettings::tanphase, unit_qt(), vec_to_quat(), ParticleKey::vel, and zero_v3().

Referenced by explodeMesh(), and reset_particle().

float psys_get_child_size ( struct ParticleSystem *  psys,
struct ChildParticle *  cpa,
float  cfra,
float *  pa_time 
)
float psys_get_child_time ( struct ParticleSystem *  psys,
struct ChildParticle *  cpa,
float  cfra,
float *  birthtime,
float *  dietime 
)
struct ParticleSystem* psys_get_current ( struct Object *  ob) [read]
short psys_get_current_num ( struct Object *  ob)
float psys_get_dietime_from_cache ( struct PointCache *  cache,
int  index 
)
void psys_get_dupli_path_transform ( struct ParticleSimulationData *  sim,
struct ParticleData *  pa,
struct ChildParticle *  cpa,
struct ParticleCacheKey *  cache,
float  mat[][4],
float *  scale 
)
void psys_get_dupli_texture ( struct ParticleSystem *  psys,
struct ParticleSettings *  part,
struct ParticleSystemModifierData *  psmd,
struct ParticleData *  pa,
struct ChildParticle *  cpa,
float *  uv,
float *  orco 
)
void psys_get_from_key ( struct ParticleKey *  key,
float *  loc,
float *  vel,
float *  rot,
float *  time 
)
struct Object* psys_get_lattice ( struct ParticleSimulationData *  sim) [read]
struct ParticleSystemModifierData* psys_get_modifier ( struct Object *  ob,
struct ParticleSystem *  psys 
) [read]
void psys_get_particle_on_path ( struct ParticleSimulationData *  sim,
int  pa_num,
struct ParticleKey *  state,
int  vel 
)

Definition at line 3984 of file particle.c.

References ParticleInterpolationData::bspline, ParticleInterpolationData::cache, calc_latt_deform(), ParticleSystem::child, ParticleSettings::childflat, ParticleSettings::childrad, ParticleSettings::childtype, CLAMP(), ParticleKey::co, co, copy_particle_key(), copy_v3_v3(), ParticleThreadContext::dm, ParticleSystemModifierData::dm, ParticleInterpolationData::dm, DMCACHE_ISCHILD, do_child_modifiers(), do_guides(), do_particle_interpolation(), ParticleSystem::effectors, ParticleInterpolationData::epoint, ParticleData::flag, ParticleSettings::flag, ParticleSystem::flag, ParticleData::foffset, ChildParticle::foffset, ParticleSettings::from, ParticleData::fuv, ChildParticle::fuv, get_child_modifier_parameters(), give_current_material(), ParticleSystem::hair_out_dm, init_particle_interpolation(), ParticleInterpolationData::keyed, ParticleSystem::lattice, len_v3(), ParticleThreadContext::ma, mul_m4_v3(), mul_mat3_m4_v3(), mul_v3_fl(), normalize_v3(), NULL, ParticleData::num, ChildParticle::num, ParticleSimulationData::ob, Object::obmat, offset_child(), ParticleSettings::omat, p, ChildParticle::pa, ChildParticle::parent, PARS_REKEY, ParticleSystem::part, PART_CHILD_FACES, PART_CHILD_GUIDE, PART_FROM_FACE, PART_HAIR, PART_HAIR_BSPLINE, PART_PHYS_KEYED, PARTICLE_PSMD, ParticleSystem::particles, ParticleSettings::phystype, ParticleSystem::pointcache, ParticleSimulationData::psmd, ParticleSimulationData::psys, psys_get_child_time(), psys_get_particle_on_path(), PSYS_GLOBAL_HAIR, psys_in_edit_mode(), PSYS_KEYED, psys_mat_hair_to_global(), psys_particle_on_emitter(), ParticleKey::rot, ParticleSimulationData::scene, ParticleThreadContext::sim, sub_v3_v3v3(), ParticleData::time, ParticleKey::time, ParticleSystem::totchild, ParticleSystem::totpart, ParticleSettings::type, unit_m4(), ParticleKey::vel, ChildParticle::w, and simple_enum_gen::w.

Referenced by applyModifier(), brush_add(), draw_new_particle_system(), psys_get_particle_on_path(), psys_get_particle_state(), rekey_particle(), rekey_particle_to_time(), render_new_particle_system(), and subdivide_particle().

int psys_get_particle_state ( struct ParticleSimulationData *  sim,
int  p,
struct ParticleKey *  state,
int  always 
)
void psys_get_pointcache_start_end ( struct Scene *  scene,
ParticleSystem *  psys,
int *  sfra,
int *  efra 
)
struct ParticleSystem* psys_get_target_system ( struct Object *  ob,
struct ParticleTarget *  pt 
) [read]
void psys_get_texture ( struct ParticleSimulationData *  sim,
struct ParticleData *  pa,
struct ParticleTexture *  ptex,
int  event,
float  cfra 
)

Definition at line 3776 of file particle.c.

References blend(), MTex::blendtype, CLAMP_PARTICLE_TEXTURE_POS, CLAMP_PARTICLE_TEXTURE_POSNEG, ParticleTexture::clump, ParticleKey::co, co, copy_v3_v3(), ParticleTexture::damp, MTex::dampfac, MTex::def_var, ParticleData::dietime, ParticleSettings::distr, ParticleSystemModifierData::dm, ParticleTexture::effector, ELEM, ParticleTexture::exist, externtex(), fabsf, ParticleTexture::field, MTex::fieldfac, ParticleData::foffset, ParticleSettings::from, ParticleData::fuv, get_particle_uv(), ParticleTexture::gravity, MTex::gravityfac, Object::imat, ParticleTexture::ivel, MTex::ivelfac, ParticleTexture::kink, ParticleTexture::length, MTex::lengthfac, ParticleTexture::life, MTex::lifefac, MAP_PA_TIME, MTex::mapto, MAX_MTEX, ParticleSettings::mtex, mul_m4_v3(), ParticleData::num, ParticleData::num_dmcache, MTex::object, MTex::padensfac, PAMAP_DAMP, PAMAP_DENS, PAMAP_FIELD, PAMAP_GRAVITY, PAMAP_IVEL, PAMAP_LENGTH, PAMAP_LIFE, PAMAP_SIZE, PAMAP_TIME, ParticleSystem::part, PART_DISTR_GRID, PART_FROM_FACE, PART_FROM_VOLUME, ParticleSystem::particles, ParticleSimulationData::psmd, ParticleSimulationData::psys, psys_particle_on_emitter(), ParticleTexture::rough1, ParticleTexture::rough2, ParticleTexture::roughe, SET_PARTICLE_TEXTURE, ParticleTexture::size, MTex::sizefac, ParticleData::state, MTex::texco, TEXCO_GLOB, TEXCO_OBJECT, TEXCO_ORCO, TEXCO_PARTICLE, TEXCO_UV, texture_value_blend(), ParticleData::time, ParticleTexture::time, MTex::timefac, ParticleSystem::totpart, and MTex::uvname.

Referenced by basic_integrate(), cached_step(), dynamics_step(), initialize_particle(), psys_get_birth_coordinates(), and reset_particle().

float psys_get_timestep ( struct ParticleSimulationData *  sim)
int psys_in_edit_mode ( struct Scene *  scene,
struct ParticleSystem *  psys 
)
void psys_interpolate_face ( struct MVert *  mvert,
struct MFace *  mface,
struct MTFace *  tface,
float(*)  orcodata[3],
float *  uv,
float *  vec,
float *  nor,
float *  utan,
float *  vtan,
float *  orco,
float *  ornor 
)
void psys_interpolate_mcol ( const struct MCol *  mcol,
int  quad,
const float  w[4],
struct MCol *  mc 
)

Referenced by get_particle_uvco_mcol().

void psys_interpolate_particle ( short  type,
struct ParticleKey  keys[4],
float  dt,
struct ParticleKey *  result,
int  velocity 
)
void psys_interpolate_uvs ( const struct MTFace *  tface,
int  quad,
const float  w[4],
float  uvco[2] 
)
void psys_make_billboard ( ParticleBillboardData *  bb,
float  xvec[3],
float  yvec[3],
float  zvec[3],
float  center[3] 
)
void psys_make_temp_pointcache ( struct Object *  ob,
struct ParticleSystem *  psys 
)
void psys_mat_hair_to_global ( struct Object *  ob,
struct DerivedMesh *  dm,
short  from,
struct ParticleData *  pa,
float  hairmat[][4] 
)
void psys_mat_hair_to_object ( struct Object *  ob,
struct DerivedMesh *  dm,
short  from,
struct ParticleData *  pa,
float  hairmat[][4] 
)
void psys_mat_hair_to_orco ( struct Object *  ob,
struct DerivedMesh *  dm,
short  from,
struct ParticleData *  pa,
float  hairmat[][4] 
)
struct ParticleSettings* psys_new_settings ( const char *  name,
struct Main *  main 
) [read]
int psys_particle_dm_face_lookup ( struct Object *  ob,
struct DerivedMesh *  dm,
int  index,
const float  fw[4],
struct LinkNode *  node 
)
void psys_particle_on_dm ( struct DerivedMesh *  dm,
int  from,
int  index,
int  index_dmcache,
const float  fw[4],
float  foffset,
float  vec[3],
float  nor[3],
float  utan[3],
float  vtan[3],
float  orco[3],
float  ornor[3] 
)
void psys_particle_on_emitter ( struct ParticleSystemModifierData *  psmd,
int  distr,
int  index,
int  index_dmcache,
float *  fuv,
float  foffset,
float *  vec,
float *  nor,
float *  utan,
float *  vtan,
float *  orco,
float *  ornor 
)
float psys_particle_value_from_verts ( struct DerivedMesh *  dm,
short  from,
struct ParticleData *  pa,
float *  values 
)
void psys_render_restore ( struct Object *  ob,
struct ParticleSystem *  psys 
)
void psys_render_set ( struct Object *  ob,
struct ParticleSystem *  psys,
float  viewmat[][4],
float  winmat[][4],
int  winx,
int  winy,
int  timeoffset 
)
int psys_render_simplify_distribution ( struct ParticleThreadContext *  ctx,
int  tot 
)
int psys_render_simplify_params ( struct ParticleSystem *  psys,
struct ChildParticle *  cpa,
float *  params 
)
void psys_reset ( struct ParticleSystem *  psys,
int  mode 
)
void psys_set_current_num ( Object *  ob,
int  index 
)
ParticleThread* psys_threads_create ( struct ParticleSimulationData *  sim)
void psys_threads_free ( ParticleThread *  threads)
void psys_update_particle_tree ( struct ParticleSystem *  psys,
float  cfra 
)
int psys_uses_gravity ( struct ParticleSimulationData *  sim)
void psys_vec_rot_to_face ( struct DerivedMesh *  dm,
struct ParticleData *  pa,
float *  vec 
)

Definition at line 3371 of file particle.c.

References mul_mat3_m4_v3(), psys_face_mat(), and transpose_m4().

Referenced by save_hair().

void reset_particle ( struct ParticleSimulationData *  sim,
struct ParticleData *  pa,
float  dtime,
float  cfra 
)