nuclear@0: #ifndef PSTRACK_H_ nuclear@0: #define PSTRACK_H_ nuclear@0: nuclear@0: #include nuclear@0: #include nuclear@0: nuclear@0: struct psys_track { nuclear@0: struct anm_track trk; nuclear@0: nuclear@0: anm_time_t cache_tm; nuclear@0: float cache_val; nuclear@0: }; nuclear@0: nuclear@0: struct psys_track3 { nuclear@0: struct anm_track x, y, z; nuclear@0: nuclear@0: anm_time_t cache_tm; nuclear@0: vec3_t cache_vec; nuclear@0: }; nuclear@0: nuclear@0: #ifdef __cplusplus nuclear@0: extern "C" { nuclear@0: #endif nuclear@0: nuclear@0: int psys_init_track(struct psys_track *track); nuclear@0: void psys_destroy_track(struct psys_track *track); nuclear@0: nuclear@0: int psys_init_track3(struct psys_track3 *track); nuclear@0: void psys_destroy_track3(struct psys_track3 *track); nuclear@0: nuclear@0: /* XXX dest must have been initialized first */ nuclear@0: void psys_copy_track(struct psys_track *dest, const struct psys_track *src); nuclear@0: void psys_copy_track3(struct psys_track3 *dest, const struct psys_track3 *src); nuclear@0: nuclear@0: void psys_eval_track(struct psys_track *track, anm_time_t tm); nuclear@0: void psys_set_value(struct psys_track *track, anm_time_t tm, float v); nuclear@0: float psys_get_value(struct psys_track *track, anm_time_t tm); nuclear@0: float psys_get_cur_value(struct psys_track *track); nuclear@0: nuclear@0: void psys_eval_track3(struct psys_track3 *track, anm_time_t tm); nuclear@0: void psys_set_value3(struct psys_track3 *track, anm_time_t tm, vec3_t v); nuclear@0: vec3_t psys_get_value3(struct psys_track3 *track, anm_time_t tm); nuclear@0: vec3_t psys_get_cur_value3(struct psys_track3 *track); nuclear@0: nuclear@0: #ifdef __cplusplus nuclear@0: } nuclear@0: #endif nuclear@0: nuclear@0: #endif /* PSTRACK_H_ */