nuclear@6: #ifndef PATTR_H_ nuclear@6: #define PATTR_H_ nuclear@6: nuclear@6: #include "pstrack.h" nuclear@6: #include "rndval.h" nuclear@6: nuclear@6: struct psys_attributes { nuclear@6: unsigned int tex; /* OpenGL texture to use for the billboard */ nuclear@6: nuclear@6: struct psys_track3 spawn_range; /* radius of emmiter */ nuclear@6: struct psys_track rate; /* spawn rate particles per sec */ nuclear@6: struct psys_anm_rnd life; /* particle life in seconds */ nuclear@6: struct psys_anm_rnd size; /* base particle size */ nuclear@6: struct psys_anm_rnd3 dir; /* particle shoot direction */ nuclear@6: nuclear@6: struct psys_track3 grav; /* external force (usually gravity) */ nuclear@6: nuclear@6: float drag; /* I don't think this needs to animate */ nuclear@6: nuclear@6: /* limits */ nuclear@6: int max_particles; nuclear@6: }; nuclear@6: nuclear@6: void psys_texture_loader(unsigned int (*load)(const char*, void*), void (*unload)(unsigned int, void*), void *cls); nuclear@6: nuclear@6: int psys_init_attr(struct psys_attributes *attr); nuclear@6: void psys_destroy_attr(struct psys_attributes *attr); nuclear@6: nuclear@6: void psys_eval_attr(struct psys_attributes *attr, anm_time_t tm); nuclear@6: nuclear@6: int psys_load_attr(struct psys_attributes *attr, const char *fname); nuclear@6: int psys_load_attr_stream(struct psys_attributes *attr, FILE *fp); nuclear@6: nuclear@6: int psys_save_attr(struct psys_attributes *attr, const char *fname); nuclear@6: int psys_save_attr_stream(struct psys_attributes *attr, FILE *fp); nuclear@6: nuclear@6: #endif